Cela peut être une question stupide...mais je viens de regarder dans le Mono projet et ils ont une section sur l'installation de Mono sur Windows. Mais, depuis Windows, évidemment, dispose déjà de la .NET runtime quelqu'un peut me dire quel est exactement le point d'avoir des Mono pour Windows? Il aide à la croix-plate-forme de développement ou de quelque chose?
Réponses
Trop de publicités?Il ya un couple de fonctionnalités Mono a que .NET ne fonctionne pas.
Mono est très modulaire. Vous pouvez le casser à part dans de minuscules petits morceaux et de le déployer uniquement exactement les pièces dont vous avez besoin. Ne voulez pas System.Xml? Très bien, il a disparu.
Mono est intégrable. Vous pouvez l'héberger à l'intérieur de votre application C/C++, pour permettre aux utilisateurs de script à partir d'un coffre-fort réussi environnement en bac à sable. L'exemple le plus célèbre de ce qui est mod_mono, qui accueille Mono à l'intérieur du serveur web Apache, et est comment ASP.NET est mis en œuvre en Mono, par exemple. Cette fonction va de pair avec la modularisation mentionnés ci-dessus.
Cela a déjà été mentionné: la liaison statique. Aussi les deux vont de pair avec la modularisation.
Compilateur comme un Service en est une autre. Anders Hejlsberg a été parlé pendant un long moment, et peut-être, juste peut-être il va être prêt pour le C# 5.0. Eh bien, Mono a déjà, et avait, en réalité, depuis des années.
Miguel de Icaza, Mono principal Développeur dispose également d'une initiative qu'il qualifie de "Embrace et Extend.NET", qui s'étend de la CLI dans les moyens qui ne sont pas (encore) possible avec d'autres CLI implémentations (y compris .NET). Jusqu'à présent, l'Embrasser et Extend.NET a trois caractéristiques.
Mono.Simd, qui donne la sécurité et l'accès contrôlé aux instructions SIMD du sous-jacent CPU (par exemple, l'ESS sur Intel ou AltiVec sur PowerPC). Utilisé pour les Jeux et les Graphiques.
64 Bits indices de tableau, qui sont autorisées par la spécification ECMA, mais la Mono est la seule VM qui fournit en fait. Utilisé dans le calcul intensif.
Et, plus récemment, les continuations. C'est en fait la première fois que les Mono errants en dehors du domaine de la spécification: tableau des indices sont parfaitement valides conformément à la spécification, et Mono.Simd fonctionne également sur tous les CLI mise en œuvre conforme à (quoique très S-L-O-W), mais en Mono.Tasklet besoin d'une assistance spéciale de la VM qui ne fait pas partie de la CLI ou de l' .NET. Il est utilisé pour un jeu de logique et, par exemple, dans Second Life.
Mono does some things the .Net doesn't.
Par exemple, mono prend en charge la liaison statique, de sorte que vous pouvez créer, compiler et distribuer votre application sans nécessiter de séparer au moment de l'exécution de l'installateur. Si vous avez créé une application de s'appuyer sur mono pour être multi-plateforme, il y a quelques différences et l'utilisation de mono sur Windows est une plus grande garantie de compatibilité..Net does some things that mono doesn't.
Il y a quelques endroits dans la BCL qui ne sont pas encore porté pour mono. Si vous voulez une application qui fonctionne également sur mac/linux, vous voulez probablement pour développer pour les mono premier, même si vous êtes en train de faire le travail sur windows.
À partir de Mono FAQ technique:
Pourquoi la prise en charge de Windows, lorsque vous pouvez exécuter la chose réelle?
Il y a plusieurs raisons:
Prise en charge de Windows nous aide à identifier le portable portions de Mono de la non-portable versions de celui-ci, aider les Mono devenir plus portable dans l'avenir.
Il nous aide, car on peut isoler des problèmes en Mono par le partitionnement du problème (est-ce un runtime problème, ou un OS problème?).
Environ la moitié des contributeurs pour les Mono sont des développeurs Windows. Ils ont pour différentes raisons en contribuant à l'effort, et nous trouver qu'il est très important de laisser ces les développeurs d'exécuter du moteur d'exécution sur Windows sans le forcer à utiliser un nouveau le système d'exploitation.
Mono n'a pas fortement modifier le registre de windows, le système de mise à jour des Dll, installer les Dll de Windows/System32 chemin d'accès.
Il aide Windows développeurs de tester leur code sous Mono avant de déployer dans Linux.
Mono et les applications qui s'intègrent à Mono peut être déployé sans programme d'installation (vous pouvez "xcopy" déployer votre l'application et le Mono fichiers sans installer le .NET de l'exécution).
Si vous souhaitez développer une application multiplate-forme en C#, puis à l'aide de Microsoft de la mise en œuvre n'est pas le plus intelligent chose, comme il n'est pas entièrement compatible de remplacement pour d'autres plates-formes.
Donc, en utilisant Mono sur Windows pour développer des applications qui vous garantit que vous aurez un peu de mal le portage vers d'autres OS (à condition de vous éviter d'autres noyaux, tels que P/Invoke).