web-dev-qa-db-fra.com

Déployer ASP.NET MVC sur Linux: bonnes pratiques, outils et surprises

Je m'interroge sur les meilleures pratiques pour développer des applications ASP.NET MVC avec une option de déploiement sur Linux. Si vous créez ces types d'applications MVC,

  • Quelle plate-forme Linux/Mono ciblez-vous?
  • Quelle part du développement faites-vous sur Windows et combien sur Linux?
  • Utilisez-vous un ORM pour extraire la base de données? Laquelle?
  • Exécutez-vous un moteur de compilation sous Linux? Et les tests?
  • Quels autres outils utilisez-vous?
  • Combien de travail supplémentaire a-t-il fallu pour cibler Linux en plus de Windows?
  • Quelles mauvaises ou agréables surprises avez-vous rencontrées?
66
keithm

La société pour laquelle je travaille cible Mono sur Linux comme notre principal environnement de déploiement. Il n'y a donc pas de travail "supplémentaire" - nous fournissons la pile entière, du matériel, en passant par le système d'exploitation (personnalisé et découpé) aux applications. L'utilisation de l'Open Source nous permet, ainsi qu'à nos clients, d'énormes économies (et oui, nous contribuons aux projets OS sur lesquels nous comptons).

L'important est de tester constamment en utilisant votre cible réelle (désolé, Mono sous Windows ne compte pas). Bien sûr, les développeurs utilisent Visual Studio, mais l'intégration continue (en utilisant CruiseControl.Net , vous aurez besoin de Mono 2.4.2 pour l'exécuter sous Linux) se fait à la fois sur Windows et Linux, en testant toutes les versions Mono nous prévoyons de travailler dessus (il est devenu beaucoup plus stable récemment, mais des régressions se produisent quand même entre les versions). C'est assez facile à exécuter versions Mono parallèles sur un système * nix, vous pouvez même inclure une compilation de snapshot svn si vous préférez attraper tôt les régressions en amont. Si vous ne déployez pas votre propre distribution, rappelez-vous que la plupart des fournisseurs Linux livrent Mono avec des correctifs personnalisés - cela nous a déjà posé des problèmes. De plus, de nombreuses distributions ont beaucoup de retard dans la mise à jour de Mono, et c'est un projet qui avance rapidement.

Pour la couche de base de données, nous utilisons principalement ADO.NET "ordinaire" - Oracle (avec dotConnect pour Oracle , ils prennent en charge Mono) et SQLite (Mono est livré avec un connecteur fonctionnel). J'ai également utilisé le pilote officiel ADO.NET Driver for MySQL (Connector/NET) et cela fonctionne bien aussi. Les mappages ORM sont plus délicats, mais NHibernate est utilisable (gardez à l'esprit qu'ils ne supportent pas Mono officiellement).

En ce qui concerne le moteur de compilation et les tests - NAnt et NUnit sont bien connus et bien testés. Avec les versions les plus récentes de Mono, xbuild (clone de MSBuild) est devenu utilisable, mais préparez-vous à apporter de nombreux correctifs si vous décidez de l'utiliser pour des scénarios plus complexes.

Écrivez des tests. Beaucoup d'entre eux. Soyez prêt à apporter des correctifs et des rapports de bogues, et si vous utilisez des composants commerciaux, assurez-vous que le fournisseur prend officiellement en charge Mono.

34
skolima

Le blog de Nathan Bridgewater a quelques articles de Nice montrant, entre autres:

  • exécution de MVC3 avec rasoir en mono
  • migration d'ASP.NET MVC de Windows/SQL Server vers Linux/MySQL
  • installation et exécution de MonoDevelop
  • installation mono à partir de la source

http://iws.io/get-mvc3-razor-running-on-mono/

4
Drew Noakes

Jetez un œil au projet Mono . On dirait que c'est ce que vous recherchez. Si je me souviens bien, ils ont maintenant ASP.NET MVC intégré.

Je n'ai jamais travaillé avec Mono, mais d'après ce que j'ai compris, il n'y a pas beaucoup de différences.

1
mkchandler