2009-04-15 10 views
58

Questa potrebbe essere una domanda stupida ... ma stavo solo esaminando il progetto Mono e hanno una sezione sull'installazione di Mono on Windows. Ma dal momento che Windows ovviamente ha già il runtime .NET qualcuno può dirmi qual è esattamente il punto di avere Mono per Windows? Aiuta lo sviluppo multipiattaforma o qualcosa del genere?Qual è il punto di Mono su Windows

risposta

62

Poiché Mono non implementa. Rete 100% uguale a MS .Net Framework, è consigliabile testare su Mono senza dover eseguire Linux. Anche Mono ha associazioni per creare moduli con GTK che MS non supporta.

+0

spero che Miguel arrivi al punto di abbracciare ed estendere; ma finora sta solo seguendo la guida di MS. fa male vedere un grande sviluppatore soggiogato in quel modo – Javier

+2

Chi dice che è dalla nostra parte? * cough * – cgp

+6

Mentre MS.Net non viene fornito con il supporto per Gtk #, il progetto Mono pubblica un programma di installazione per Windows che consente alle applicazioni Gtk # di funzionare su MS.Net senza Mono. – jpobst

4

Per lo più è un aiuto per lo sviluppo di app Mono per le librerie Mono specifiche. Anche per aiutare ad avanzare la causa, in modo che gli sviluppatori possano lavorare nel loro ambiente naturale durante lo sviluppo di Mono.

+1

Che cos'è un "ambiente naturale"? Windows potrebbe essere * il tuo * ambiente naturale. Ho diversi ambienti, tutti abbastanza artificiali, ma per me va bene. :) –

11

Se si desidera sviluppare un'applicazione multipiattaforma in C#, quindi utilizzando implementazione di Microsoft non è la cosa più intelligente, in quanto non v'è alcuna alternativa pienamente compatibile per altre piattaforme.

Quindi, utilizzando Mono su Windows per sviluppare applicazioni assicura che avrete pochi problemi porting di altri sistemi operativi (a patto di evitare altri pozzi come P/Invoke).

23
  • Mono does some things the .Net doesn't. Per esempio, mono supporta il collegamento statico in modo che si può costruire, compilare e distribuire la vostra applicazione senza la necessità di un programma di installazione runtime separato. Se hai costruito un'app per fare affidamento su mono per essere multipiattaforma, ci sono alcune differenze e quindi l'utilizzo di mono su Windows è una maggiore garanzia di compatibilità.

  • .Net does some things that mono doesn't. Ci sono alcuni punti nel BCL che non sono stati ancora portati per mono. Se vuoi un'app che funzioni anche su mac/linux probabilmente vuoi svilupparla per mono prima, anche se stai facendo il lavoro su Windows.

+1

Il collegamento statico è una delle cose più grandi che ho ascoltato per cui viene utilizzato Mono su Windows. –

3

Mentre non di diffuso interesse, ci sono alcuni casi in cui mono ha miglioramenti rispetto alla fase di esecuzione standard di Microsoft. Migel ha tenuto una relazione su alcuni di questi a PDC quest'anno:

vedere questi post:

7

Alcune persone hanno usato perché non sono autorizzati per l'installazione il framework .Net sui loro PC Windows, a causa della quantità di file di registro e di sistema che fa muck. (In ambienti strettamente controllati.)

Mono, d'altra parte, è autonomo in Program Files, e scrive solo una chiave di registro con un percorso in (che non è necessario eseguire).

credo che questo sia un po stupido, ma è qualcosa che più utenti ci hanno detto.

68

Ci sono un paio di caratteristiche Mono ha quel .NET non lo fa.

Mono è altamente modulare. Si può rompere lo distingue in piccoli pezzi e distribuire solo esattamente quelle parti di cui avete bisogno. Non vuoi System.Xml?Bene, non c'è più

Mono è integrabile. È possibile ospitarlo all'interno dell'applicazione C/C++, per consentire agli utenti di copiarlo da un ambiente protetto da sandbox gestito. L'esempio più famoso di questo è mod_mono, che ospita Mono all'interno del server web Apache, ed è come ASP.NET è implementato in Mono, ad esempio. Questa caratteristica va benissimo insieme alla modularizzazione di cui sopra.

Questo è già stato menzionato: collegamento statico. Anche si abbina perfettamente alla modularizzazione.

Il compilatore come servizio è un altro. Anders Hejlsberg ne ha parlato per un tempo lungo e forse, solo forse sarà pronto per C# 5.0. Beh, Mono ce l'ha già, e in realtà l'ha avuto per anni.

Miguel de Icaza, lo sviluppatore principale di Mono ha anche un'iniziativa che chiama "Embrace ed Extend.NET", che estende la CLI in modi non (attualmente) possibili con altre implementazioni CLI (incluso .NET). Finora, Embrace ed Extend.NET hanno tre caratteristiche.

Mono.Simd, che consente un accesso sicuro e controllato alle istruzioni SIMD della CPU sottostante (ad esempio SSE su Intel o AltiVec su PowerPC). Utilizzato per giochi e grafica.

Indici di array a 64 bit, consentiti dalle specifiche ECMA, ma Mono è l'unica VM che li fornisce effettivamente. Utilizzato nel supercomputing.

E di recente, continuazioni. Questa è la prima volta che Mono si allontana dal campo delle specifiche: gli array long sono perfettamente validi secondo le specifiche e Mono.Simd funziona anche su ogni implementazione conforme alla CLI (anche se molto SLOW), ma Mono.Tasklet richiede un supporto speciale dalla VM che non fa parte di CLI o .NET. Questo è usato per la logica di gioco e ad es. in Second Life.

+1

+1. Una bella panoramica di alcune delle funzionalità di Mono. – wimvds

+0

+1 per il collegamento statico e integrabile – fmark

1

Penso che il motivo principale per cui lo hanno fatto è che possano eseguire le applicazioni .NET su Mono e .NET side-by-side per confrontarle. Inoltre, ci sono alcune applicazioni che dipendono dalle librerie Mono.

12

Da Mono di technical FAQ:

Perché supporto di Windows, quando è possibile eseguire la cosa reale?

Ci sono vari motivi:

supporto di Windows ci aiuta a identificare le porzioni portatili di Mono dalle versioni non-portatili di esso, aiutando Mono diventiamo più portatile futuro.

Essa ci aiuta in quanto siamo in grado di isolare i problemi in Mono dal partizionamento del problema (è una questione runtime, o un problema OS?).

Circa la metà dei contributori a Mono sono sviluppatori Windows. Hanno molti motivi diversi per contribuire allo sforzo, e noi trovano molto importante per permettere a coloro sviluppatori corrono il runtime su Windows senza costringerli a utilizzare un nuovo sistema operativo .

Mono non modifica pesantemente il registro di Windows, aggiorna le DLL di sistema, installa DLL nel percorso di Windows/System32 .

Aiuta gli sviluppatori basati su Windows a testare il loro codice sotto Mono prima che vengano distribuiti in Linux.

Mono e le applicazioni che incorporano Mono possono essere implementate senza un installatore (è possibile "xcopy" distribuire l' applicazione e le richieste Mono file senza installare il runtime .NET ).

2

anche anche se non avete il programma in modo dinamico legato con Mono, si può avere che exe compilato e Mono runtime su pendrive e Goto un altro computer senza .NET/Mono installato, ed eseguire quel programma sul nuovo PC senza qualsiasi installazione runtime. Vale a dire, porta a app portatili (particolarmente utili come app per pen drive USB portatili) Questo non è possibile con .NET. È necessario che .NET runtime sia installato in un particolare modo di installazione, ovvero che il runtime contenente la copia e incolla della cartella non sia possibile.

0

Per aggiungere a numerose ragioni citate in altre risposte, potrebbe essere necessario installare Mono per Windows su Wine per consentire l'esecuzione di applicazioni .Net all'interno di Wine.