web-dev-qa-db-fra.com

Différences de développement entre .NET et Mono

J'examine Mono et .NET C # et nous devrons exécuter le code sur des serveurs Linux à l'avenir, lorsque le projet sera développé. À ce stade, je me suis penché sur ASP.NET MVC et Mono. 

Je lance une distribution Ubuntu et souhaite développer une application Web. Certains autres développeurs utilisent Windows et exécutent d’autres éléments .NET avec Visual Studio. 

Qu'est-ce que Mono ne fournit pas que Visual Studio?

Si vous exécutez cela plus tard sur Linux, ne devrions-nous pas utiliser MonoDevelop?

Y at-il des outils tiers ou des compléments qui pourraient être un problème avec Mono plus tard?

24
Jason

Qu'est-ce que Mono ne fournit pas que Visual Studio?
MonoDevelop est probablement ce que vous voulez dire ici. MonoDevelop offre un développement multiplateforme sur Linux, Mac OS X, Windows basé sur GTK. Cependant, il n’est pas aussi raffiné que Visual Studio pour des raisons évidentes: trois personnes le fabriquent, pas des centaines. Il a quelques fonctionnalités intéressantes, notamment son architecture de plugin de contrôle de source. Cependant, Visual Studio Express étant gratuit, Windows ne présente pas beaucoup d'avantages.

Il utilise les mêmes formats .csproj et .sln que Visual Studio, mais le format de la documentation XML est différent.

Si vous exécutez cela plus tard sur Linux, ne devrions-nous pas utiliser MonoDevelop?
Comme je l’ai mentionné ci-dessus, les formats de projet sont interopérables.

Y at-il des outils tiers ou des compléments qui pourraient être un problème avec Mono plus tard?
Contrairement à Visual Studio, Monodevelop n’a pas une profusion de compléments. Ceux que vous utilisez dans Monodevelop n’affecteront pas vos fichiers .csproj, car tout ce que Visual Studio ne peut pas lire ne les ignore généralement pas.


Comme on l'a déjà dit, ne confondez pas Mono pour MonoDevelop. MonoDevelop est un IDE pour Mono originaire de SharpDevelop (forké).

Mono est le framework multiplateforme qui «sape» les bibliothèques Microsoft CLR et framework.

19
Chris S

Je n'ai pas beaucoup d'expérience dans ce domaine mais ...

La Feuille de route du projet Mono offre une vue d'ensemble des fonctionnalités nouvelles, à venir, et non présentes dans Mono par rapport à MS.NET. Même lorsque Mono a les mêmes classes que .NET, notez que la compatibilité n'est pas à 100% (bien que ce soit généralement l'objectif). Je ne suis pas sûr s'il existe une liste complète des éléments manquants dans Mono.

MonoDevelop est maintenant disponible à la fois sous Windows et Linux, il est donc préférable de l'utiliser. Cependant, MonoDevelop semble utiliser le même format de projet que Visual Studio et SharpDevelop. Vous pouvez donc essayer de mélanger des environnements de développement intégrés.

Bien sûr, lorsque vous utilisez des bibliothèques .NET tierces, notez que beaucoup d’entre elles n’ont pas été testées avec mono, et que tout ce qui utilise P/Invoke ne fonctionnera pas sous Mono pour Linux. Cependant, la plupart des incompatibilités avec mono sont mineures et si vous vous en tenez aux bibliothèques open source, vous pouvez toujours corriger les incompatibilités que vous rencontrez.

5
Qwertie

Vous pouvez également consulter Outils Mono pour Visual Studio . Il permet à vos développeurs Visual Studio de cibler et de tester avec la plate-forme mono.

5
Joel Coehoorn

Vous souhaitez toujours avoir du support, et/ou principalement utiliser le logiciel sous Linux, correct? C’est en fait une question que j’ai posée aux développeurs de Mono lors d’une conférence il y a quelque temps, et qui se résumait en gros à ce que vous souhaitiez en faire.

Si vous voulez que cela fonctionne toujours sous Linux, utilisez Mono. Si vous ne vous souciez que de Windows, utilisez Visual Studio.

Si vous utilisez Mono, utilisez MonoDevelop pour tous les développeurs. Cela rendra la vie beaucoup plus facile plus tard et assurera que tout ce que vous écrivez dans celui-ci fonctionnera pour tout le monde.

Malheureusement, je ne connais pas la réponse aux limites/avantages exacts de Mono par rapport à .NET, mis à part que NET est encore plus avancé et que Mono est en train de rattraper son retard, ni d’additifs différents.

1
Tarka

Si aucun de vos développeurs n'a besoin de développer Mono pour certaines fonctionnalités, je vous suggère d'utiliser Visual Studio sous Windows. Puis testez les applications sur Mono via

  1. Outils mono pour Visual Studio 
  2. copier manuellement les fichiers binaires sur
  3. découvrez le code sous Linux et construisez MonoDevelop.

Personnellement, j'ai eu beaucoup de petits ennuis lorsque j'ai essayé la troisième méthode, mais heureusement, je suis capable de trouver des solutions de contournement.

Ce n'est que lorsque vous touchez Mono, vous savez quelle partie de votre application doit être optimisée.

http://www.mono-project.com/Start

1
Lex Li

Si vous pouvez l’aider, il est recommandé d’éviter l’implémentation Mono de Remoting. Il semble y avoir des ratés inattendus et le débogage n’est pas simple.

Nous avions un produit très lourd Remoting que nous avons essayé de porter sur Mono afin de pouvoir prendre en charge Linux. En raison de notre incapacité à résoudre les problèmes de Remoting, nous avons finalement dû abandonner nos tentatives de prise en charge de Linux.

Avertissement : mes expériences peuvent être obsolètes. Voir les commentaires ci-dessous

1
Dinah

Vous n'avez pas besoin de MonoDevelop pour exécuter le programme ASP.NET sous Linux, créez un dossier partagé sur votre serveur de développement (VMWare'd ou réel), testez-le souvent pour pouvoir facilement contourner les éléments manquants dans Mono

C'est la même approche que j'utilise dans mon programme .NET Remoting I Host sur un serveur Ubuntu. Mais je fais l'inverse, étant un programmeur solo, je crée un dossier partagé sur ma machine de développement Windows, puis j'accède à ce dossier partagé sur mon serveur de test Ubuntu (vmware'd). Sur ASP.NET, si les modifications ne se répercutent pas sur votre serveur de test Ubuntu, dans Terminal, il vous suffit de toucher le fichier Web.Config de votre serveur de test Ubuntu. touch Web.Config, puis actualisez la page

0
Michael Buen

Mono a une implémentation entièrement fonctionnelle d’ASP.NET. Cela inclut une prise en charge complète des formulaires Web et des services Web ASP.NET. Cela signifie essentiellement que plus ou moins toute application ASP.NET que vous avez développée à l'aide de .NET Framework fonctionnera avec Mono. De toute évidence, des modifications peuvent être nécessaires, telles que des modifications d'accès aux données, la suppression de toute dépendance À des types .NET Framework BCL . Utilisateurs mono. Oracle. Programmation C #: ubuntu 11.04

0
abhilash