46 votes

Comment fonctionne Mono

Je suis un développeur qui a utilisé le C# dans Visual Studio .net, et j'ai joué un peu avec Mono sous openSUSE Linux, mais je ne comprends pas vraiment comment il fonctionne. Si j'écris une application dans Windows sur .net, comment est-ce lié à Mono? Je ne peux pas exécuter un Windows .fichier exe sous Linux sans Vin, il ne m'aide pas exécuter les applications développées sous Windows. Est le but purement pour avoir un .net-library équivalent sur Linux ( et autres ) pour faire de la croix-plate-forme de développement plus facile? Pour exemple, si je suis une entreprise et je voulais atteindre les clients Linux, mais vraiment voulu l'utiliser .net, puis mono devrait être mon choix? Ou est-il quelque chose de plus que je suis absent?

22voto

Michael Stum Points 72046

Un EXE de Windows contient plusieurs "parties". Simplifié, le .net Code (=MSIL) n'est qu'une Partie de l'EXE, et il y a aussi un "vrai" Windows natif Partie à l'intérieur de l'EXE qui sert comme une sorte de lanceur pour le .net Framework qui exécute alors le MSIL.

Mono suffit de prendre le MSIL et de l'exécuter, en ignorant le natif de Windows Lanceur de trucs.

Encore une fois, c'est un survol simplifié.

Edit: j'ai peur de ma compréhension de l'profond de détails n'est pas assez bon pour vraiment beaucoup de détails (je sais à peu près ce que un en-Tête PE est, mais pas vraiment les détails), mais j'ai trouvé ces liens utiles:

NET la Structure de l'Assemblage – Partie II

.NET Fondations .NET la structure de l'assemblage

11voto

Greg Hewgill Points 356191

Vous pouvez en fait exécuter un fichier .NET .exe avec Mono sous Linux. Cela ne nécessite pas de vin. En fait, Mono compile les programmes en fichiers .exe, qui peuvent s’exécuter soit avec Mono sous Linux, soit sous forme d’exécutable sous Windows.

3voto

Quantenmechaniker Points 395

Mono est un open-source de la mise en œuvre des directives de Microsoft .NET CLR (Common Language Runtime). C'est ce qui gère la partie de .Les programmes qui ne sont pas en code natif, mais dans CIL (Common Intermediate Language), un langage et de la machine-neutre intermédiaire de la langue. Le Runtime prend que le code intermédiaire et les traduit en code machine.

En l'état actuel du Mono, vous pouvez prendre .NET les programmes qui utilisent les principales parties du .NET (mscorlib.dll) et de les exécuter partout Mono fonctionne, et pas seulement Windows.

2voto

milot Points 859

Mais comme il est mentionné que le Mono est open source et vous ne pouvez pas simplement compter que ce sera le plein .NET mise en œuvre, il a des commandes qui ne fonctionnent pas, vous devez aussi être prudent avec les P/Invoque que votre application va utiliser pour l'e.g votre application communique avec MCI (Contrôleur Multimédia Interface) sous win32. Mais j'ai été en utilisant mono écrit GTK# Applications aussi, mais j'ai aussi utilisé mes applications Windows qui a travaillé sans aucune recompilation comme mentionné nos amis programmateurs ci-dessus, qui est, mono est une alternative open source de Microsoft .NET, et par défaut, si vous êtes la construction de WinForms ou Gtk# applications mono de compiler et de créer un .exe assemblée de chaque fichier, et bien sûr, si vous voulez, il va créer une Bibliothèque de liens Dynamiques (DLL), presque comme il est fait dans .NET. Juste pour une suggestion essayez d'écrire quelques Gtk# (avec MonoDevelop IDE qui a intégré dans l'interface utilisateur concepteur est appelé stetic). Et bien sûr mono peut être un excellent remplacement pour les Services Web que vous pouvez créer sur .NET et vous pouvez les héberger sur un serveur Apache (en raison d'hébergement Linux de nos jours sont plus bon marché que Windows) à des services web et d'autres asp.net les applications fonctionnent sous apache avec un mod_mono module qui doit être inclus dans apache.

Un peu hors sujet mais je voulais juste vous dire un avant-goût de mon expérience.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X