2010-05-06 14 views
23

Sto cercando in Mono e .NET C# e avremo bisogno di eseguire il codice su Linux Server in futuro quando il progetto è stato sviluppato. A questo punto ho cercato ASP.NET MVC e Mono.Differenze nello sviluppo tra .NET e Mono

Eseguo una distribuzione Ubuntu e voglio fare sviluppo per un'applicazione Web, alcuni degli altri sviluppatori usano Windows e eseguono altri elementi .NET con Visual Studio.

Che cosa non prevede Mono Visual Studio?

Se si esegue questo in Linux in seguito, non dovremmo utilizzare MonoDevelop?

Ci sono alcuni strumenti o componenti aggiuntivi di terze parti che potrebbero essere un problema con Mono in seguito?

+8

Sono confuso che stai chiedendo di Mono o MonoDevelop? Sono due cose differenti. Confrontando Mono con Visual Studio è mele alle arance. MonoDevelop e VisualStudio sono IDE. Mentre Mono e .NET sono implementazioni della CLI e delle relative librerie di classi e compilatori. –

+0

Quello che sto chiedendo è quali differenze tra IDE e lingua? – Jason

+1

Ecco due domande molto diverse, quindi. Molti di noi usano .NET su Windows senza utilizzare Visual Studio. – Ken

risposta

17

Che cosa non prevede Mono Visual Studio?
MonoDevelop è presumibilmente ciò che intendi qui. MonoDevelop offre uno sviluppo multipiattaforma su Linux, Mac OS X, Windows basato su GTK. Tuttavia non è così lucido come Visual Studio per ovvi motivi: sono 3 persone che lo fanno, non centinaia. Ha alcune caratteristiche interessanti, in particolare l'architettura del plugin di controllo sorgente. Tuttavia, dato che Visual Studio Express è gratuito, non ci sono molti vantaggi su Windows nel suo utilizzo.

Utilizza lo stesso formato .csproj e .sln come Visual Studio, tuttavia il formato dei documenti XML è diverso.

Se si esegue questo in Linux in seguito, non dovremmo utilizzare MonoDevelop?
Come ho già detto, i formati del progetto sono interoperabili.

Ci sono alcuni strumenti o componenti aggiuntivi di terze parti che potrebbero essere un problema con Mono in seguito?
A differenza di Visual Studio, non c'è un'enorme ricchezza di componenti aggiuntivi per Monodevelop. Quelli che usi in Monodevelop non avranno alcun effetto sui tuoi file .csproj, poiché qualsiasi cosa che Visual Studio non può leggere generalmente ignora.


Come è già stato detto di non confondere Mono per MonoDevelop. MonoDevelop è un IDE per Mono che originariamente proveniva da SharpDevelop (a forcella).

Mono è il framework multipiattaforma che "scansiona" le librerie Microsoft CLR e framework.

1

Hai intenzione di avere sempre supporto e/o utilizzare principalmente il software su Linux, corretto? Questa è in realtà una domanda che ho chiesto agli sviluppatori Mono in una conferenza un po 'indietro, e in pratica si riduce a ciò che si vuole fare con esso.

Se si desidera che funzioni sempre su Linux, quindi utilizzare Mono. Se ti interessa solo di Windows, usa Visual Studio.

Se si utilizza Mono, quindi utilizzare MonoDevelop su tutti gli sviluppatori. In seguito renderà la vita molto più semplice, e farà in modo che tutto ciò che scrivi in ​​uno funzioni per tutti.

Sfortunatamente, non conosco la risposta ai limiti/vantaggi esatti di Mono rispetto a .NET, a parte .NET che è più avanti, e Mono che gioca a recuperare, né a proposito di diversi addon.

5

non ho molta esperienza in questo settore, ma ...

Il Mono Project Roadmap ha una panoramica delle funzionalità che sono nuove, cui è decisivo, e non presenti in Mono rispetto al MS.NET. Anche dove Mono ha le stesse classi di .NET, nota che la compatibilità non è al 100% (anche se questo è generalmente il loro obiettivo). Non sono sicuro che esista un elenco completo di cose mancanti in Mono.

MonoDevelop è ora disponibile su Windows e Linux, quindi probabilmente è meglio utilizzarlo. Tuttavia, MonoDevelop sembra utilizzare lo stesso formato di file di progetto di Visual Studio e SharpDevelop, quindi è possibile tentare di combinare gli IDE.

Ovviamente, quando si utilizzano librerie .NET di terze parti, si noti che molte di esse non sono state testate con mono, e in particolare qualsiasi cosa che usi P/Invoke non funzionerà su Mono per Linux. Tuttavia, la maggior parte delle incompatibilità con mono sono minori, e se ti attacchi con le librerie open-source puoi sempre correggere eventuali incompatibilità.

5

Si potrebbe anche dare un'occhiata a Mono Tools for Visual Studio. Consente agli sviluppatori dello studio visivo di scegliere e testare la piattaforma mono.

+0

È carino, ma esiste una versione open source? Ho una libreria di classi che è compatibile tra i due framework e mi piacerebbe avere un progetto ed essere in grado di avere obiettivi di costruzione per entrambi – jlafay

1

Se si può aiutare, si consiglia di evitare l'implementazione Mono di Remoting. Sembrano esserci alcuni singhiozzi imprevisti e il debugging non è diretto.

Avevamo un prodotto molto Remoting che abbiamo provato a portare su Mono in modo da poter supportare Linux. A causa dell'impossibilità di risolvere i problemi di Remoting, alla fine abbiamo dovuto abbandonare completamente i nostri tentativi di supportare Linux.

Caveat: le mie esperienze potrebbero essere obsolete. Vedi i commenti sotto

+0

Ok questo è esattamente che tipo di risposte stavo cercando, esperienze reali in ciò che Mono è avendo problemi con. – Jason

+0

Quanto tempo fa era per caso? Sono curioso se è stato riparato da allora, cioè se fosse stato qualche anno fa. – percent20

+0

@ percent20: 1-2 anni fa. Se trovi che le mie esperienze sono obsolete, si prega di commentare qui e aggiornerò la mia risposta. – Dinah

1

Se nessuno dei tuoi sviluppatori ha bisogno di svilupparsi su Mono per alcune funzionalità, ti consiglio di utilizzare Visual Studio su Windows. Poi testare le applicazioni su Mono via

  1. Mono Tools per Visual Studio
  2. copiare manualmente i file binari sopra
  3. check-out il codice su Linux e costruire in MonoDevelop.

Personalmente ho sperimentato un sacco di piccoli problemi quando ho provato il terzo modo, ma per fortuna sono in grado di trovare soluzioni alternative.

È solo quando si tocca Mono, è possibile sapere quale parte della propria applicazione deve essere regolata.

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

0

Non è necessario MonoDevelop, al fine di eseguire il programma ASP.NET in Linux, fare una cartella condivisa sul server di sviluppo (VMWare'd o un vero e proprio), prova spesso in modo da poter facilmente lavorare -around cosa manca a Mono

È lo stesso approccio che sto utilizzando nel mio programma .NET Remoting. Ospito sul server Ubuntu. Ma faccio il contrario, dato che sono un programmatore solista, creo una cartella condivisa sul mio computer di sviluppo Windows, quindi accedo a quella cartella condivisa sul mio server di test di Ubuntu (vmware'd). Su materiale ASP.NET, se le modifiche non si riflettono sul tuo server di test Ubuntu, in Terminal basta toccare il file Web.Config nel tuo server di test Ubuntu. Ad esempio, touch Web.Config, quindi aggiornare la pagina

0

Mono ha un'implementazione completamente funzionale di ASP.NET. Questo include il supporto completo per Web Form e Web Services ASP.NET. Ciò significa essenzialmente che più o meno qualsiasi applicazione ASP.NET che hai sviluppato utilizzando con .NET Framework funzionerà con Mono. Ovviamente potrebbero esserci cambiamenti necessari, come le modifiche all'accesso ai dati, la rimozione di qualsiasi dipendenza dai tipi BCL di .NET Framework. Mono- Oracle users-.Net Programming C# : ubuntu 11.04