36 votes

Devrais-je utiliser Mono sur un projet réel?

Quelqu'un at-il utilisé Mono, la mise en œuvre open source .NET sur un projet de grande ou moyenne taille? Je me demande s'il est prêt pour le monde réel, les environnements de production. Est-ce stable, rapide, compatible, ... suffisant pour l'utiliser? Faut-il déployer beaucoup d'efforts pour porter les projets au runtime Mono, ou est-ce vraiment suffisamment compatible pour prendre et exécuter du code déjà écrit pour le runtime de Microsoft?

31voto

Cody Brocious Points 24042

Je l'ai utilisé pour un certain nombre de l'intérieur et des projets commerciaux avec un grand succès. Mes mises en garde:

  • Écrire beaucoup de tests unitaires et assurez-vous qu'ils passent TOUS sous Mono -- cela vous permettra d'économiser beaucoup d'ennuis.
  • Sauf si vous devez absolument, ne PAS utiliser de leur intégration de l'API. Il est trés facile à utiliser, mais il impies faciles à collecter les ordures de la mémoire ou de fuite de l'ensemble de votre mémoire.
  • Ne jamais, jamais, jamais loin de SVN et à moins qu'il n'y a pas le choix, ne pas compiler votre propre. Les choses changent si souvent dans le SVN, il est très probable que vous finirez par mettre en place quelque chose qui ne fonctionne pas sur la version en cours si votre projet est plus grand.
  • Ne pas essayer de comprendre les problèmes sur votre propre pour longtemps, utiliser le canal IRC. Les gens sont serviables et vous économiserez de vous-même jours après jours, ne pas faire la même erreur que j'ai fait.

Bonne chance!

Edit: La raison pour laquelle je dis pas de compiler votre propre à partir de la source (libération ou SVN) est qu'il est facile de configurer différemment que la libération de binaires et de masquer des bugs, par exemple dans la collecte des ordures.

Edit 2: vous avez Oublié de répondre à la deuxième partie de votre question. Dans mon cas, j'ai pas eu de problèmes avec le portage de code, mais je n'étais pas à l'aide de MS-spécifique des bibliothèques (WinForms, ASP.NET, etc). Si vous êtes seulement en utilisant le Système.* des trucs, vous serez bien; au-delà, vous risquez de rencontrer des problèmes. Mono 2.0 est assez solide, bien que.

5voto

leppie Points 67289

Je trouve que Mono est principalement compatible binaire avec MS. Par conséquent, je compile simplement avec MS et je cours partout, comme le veut Java!

Les performances de Mono sous Linux se rapprochent de celles de MS, de 2 à 3 fois moins rapides que 5 à 10 fois plus lentes lorsque vous utilisez Mono sous Windows (mais vous devriez vous en tenir à MS).

5voto

Rinat Abdullin Points 13520

J'ai eu une certaine expérience avec Mono.

Pure .NET des trucs (comme la logique d'entreprise, les contrôleurs ou les algorithmes) peut être porté sans aucun problème. Pourtant, des choses étranges commencent à se manifester dans les composants qui interagissent avec le système d'exploitation, l'INTERFACE utilisateur, des services ou de la persistance. Donc, être prêt pour un peu de débogage et de piratage.

Des choses qui peuvent aider:

  • La composante de Développement Axée sur l' - de sorte que le code est réutilisé par Windows .NET et Mono, alors que les différences sont isolés et testés)
  • Intégration continue en cours d'exécution et la vérification de tout contre Mono et MS.NET, afin que les éventuels problèmes pourraient être découvert aussi vite que possible (déploiement automatisé et des contrôles d'intégrité sont également recommandés)
  • Il n'y a pas beaucoup de composant de l'INTERFACE utilisateur suites de l'enveloppe en Mono.
  • Lorsqu'un composant fournisseur déclare que son code est "compatible avec Mono", c'est pas le même que "s'exécute sur Mono et est pris en charge".

Bien que dans le présent, il y a quelques entreprises en production Mono, je serais encore attendre avant de se précipiter en raison de:

  • Le manque de décence et de support commercial composant de l'INTERFACE utilisateur suites
  • Problèmes avec l'efficacité de la collecte des ordures
  • Pas la meilleure expérience de débogage (comparer avec l'historique débogueur dans VS 2010)

PS: si il y a une entreprise qui offre entièrement géré solution de cloud computing (et pas seulement une machine virtuelle, mais plus comme Hadoop équivalent .NET), alors je vais être forcé à sauter en dépit de ces problèmes.

3voto

mattlant Points 9136

Si vous faites ASP.NET 2.0 travail, il fonctionne très bien. Winforms peut fonctionner, mais il peut causer des problèmes d'affichage. Si vous voulez de la compatibilité dans un formes d'application, je dirais GTK#, car elle est compatible.

Comme suggéré, aussi longtemps que vous profondement test, je suis d'accord pour l'utiliser commercialement, si c'est une option viable pour vous, sauf si elle est winforms vous avez besoin. À mon avis, je resterais loin de lui pour l'instant. Et oublier WPF comme il n'y a pas de support à cette époque, et il ne peut jamais l'être (bien qu'ils travaillent sur la lune, aka silverlight pour linux)

1voto

Dave Webb Points 90034

Je n'ai pas utilisé Mono moi-même, mais vous serez peut-être intéressé de savoir que FogBugz utilise Mono pour fournir Lucene.NET sur les plateformes Linux. (Je le sais seulement parce que Joel l'a mentionné au passage dans le podcast Stack Overflow # 24.)

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