2009-07-23 22 views
66

Mi chiedo quali siano le migliori pratiche per sviluppare app ASP.NET MVC con un'opzione per la distribuzione su Linux. Se stai creando questo tipo di app MVC,Distribuisci ASP.NET MVC su Linux: best practice, strumenti e sorprese

  • Quale piattaforma Linux/Mono stai prendendo di mira?
  • Quanto dello sviluppo stai facendo su Windows e quanto su Linux?
  • Si sta utilizzando un ORM per astrarre il database? Quale?
  • Si sta eseguendo un motore di compilazione su Linux? E i test?
  • Quali altri strumenti stai utilizzando?
  • Quanto lavoro aggiuntivo è stato per indirizzare Linux oltre a Windows?
  • Quali brutte e piacevoli sorprese hai incontrato?
+0

Sembra che questa domanda dovrebbe essere una wiki della comunità. Non ci sarà una risposta giusta. – mkchandler

+2

D'accordo, potrebbe non esserci una sola risposta giusta, ma dal momento che la distribuzione su Linux ci richiede di assemblare più componenti in un ambiente non nativo, vale la pena di essere ascoltato da quegli sviluppatori che lo hanno effettivamente fatto o sono in procinto di farlo. – keithm

+0

Sono stato tentato di dire "Sorpresa! Non funzionerà!" ma sto solo avendo i miei problemi per implementare un progetto più ampio. Mono è onestamente spettacolare. Ho pensato che avrebbe dato qualche risatina a quelli che stanno ancora cercando di capire gli errori criptici che a volte Mono può vomitare :) – Chazt3n

risposta

34

La società che lavoro per obiettivi Mono su Linux come ambiente di distribuzione principale. Quindi non esiste un lavoro "aggiuntivo": forniamo l'intero stack, dall'hardware, al sistema operativo (personalizzato e tagliato) alle applicazioni. L'utilizzo di Open Source offre enormi risparmi per noi e per i nostri clienti (e sì, contribuiamo ai progetti OS su cui facciamo affidamento).

L'importante è testare costantemente utilizzando il target effettivo (mi dispiace, Mono su Windows non conta). Certo, gli sviluppatori usano Visual Studio, ma l'integrazione continua (usando CruiseControl.Net, avrete bisogno di Mono 2.4.2 per eseguirlo su Linux) è fatta sia su Windows che Linux, testando tutte le versioni Mono su cui ci aspettiamo di lavorare (ha ottenuto molto più stabile di recente, ma ancora, le regressioni avvengono tra le versioni). È abbastanza facile eseguire parallel Mono versions su un sistema * nix, è anche possibile includere una build di snapshot svn se si preferisce anticipare le regressioni a monte. Se non distribuisci la tua distribuzione, ricorda che la maggior parte dei rivenditori Linux spediscono Mono con patch personalizzate - questo ha causato problemi per noi prima. Inoltre, molte distribuzioni hanno un sacco di ritardi nell'aggiornamento di Mono, e questo è un progetto che avanza rapidamente.

Per il livello di database utilizziamo principalmente "semplice" ADO.NET - Oracle (con dotConnect for Oracle, supportano Mono) e SQLite (Mono viene fornito con un connettore funzionante). Ho anche usato il ADO.NET Driver for MySQL (Connector/NET) ufficiale e anch'esso funziona bene. I mapping ORM sono più complicati, ma NHibernate è utilizzabile (tenere presente che essi non supportano ufficialmente Mono).

Per quanto riguarda il motore di costruzione e test - NAnt e NUnit sono ben noti e ben collaudati. Con la maggior parte delle versioni recenti di Mono xbuild (clone di MSBuild) è diventato effettivamente utilizzabile, ma preparatevi a contribuire con molte patch se decidete di usarlo per scenari più complessi.

Test di scrittura. Molti di loro. Preparati a fornire patch e segnalazioni di errori e, se utilizzi componenti commerciali, assicurati che il fornitore supporti ufficialmente Mono.blog

+0

Grazie per l'ottima risposta. Qual è il tuo database e il software di accesso ai dati? – keithm

+0

Aggiornato la mia risposta :-) – skolima

+0

Grazie per l'informazione. Stai ancora lavorando in questo modo? In tal caso, hai aggiornato le versioni più recenti di .NET e MVC? Inoltre, stai utilizzando correttamente un software ORM come Entity Framework? Sono passati alcuni anni dalla tua risposta, quindi mi piacerebbe sapere che sei ancora così positivo riguardo allo stack tecnologico ora come allora. Consiglieresti comunque CC.NET, NAnt, NUnit, ecc ...? Grazie :) –

1

Dai uno sguardo allo Mono project. Sembra che sia quello che stai cercando. Se ricordo bene, ora hanno ASP.NET MVC integrato.

Non ho mai lavorato con Mono, ma dalla mia comprensione non ci sono molte differenze.

4

Nathan Bridgewater ha alcuni articoli belle che mostrano, tra le altre cose:

  • esecuzione MVC3 con il rasoio sul mono
  • migrazione ASP.NET MVC da Windows/SQL Server per Linux/MySQL
  • installazione ed eseguire MonoDevelop
  • installazione mono da sorgente

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

+0

il link è morto – aclave1

+1

@ aclave1, grazie, aggiornato. –

Problemi correlati