2009-06-28 16 views
5

La mia domanda è simile a this one e this one, ma c'è una leggera differenza. Ecco perché lo sto chiedendo qui.Limitazione di Mono Runtime

Possiedo un servizio Windows 3.5 lucido (con NHibernate, LINQ, espressione lambda) ecc., In esecuzione su Windows. Ora ho intenzione di trasferire la mia app su Linux, quindi sto pensando a Mono.

Posso semplicemente compilare la mia app .net in Windows e copiarla su una macchina Linux con .Net (versione mono) installata e aspetto che funzioni senza intoppi? Se no, c'è qualcosa che dovrei fare?

Qualsiasi risposta o suggerimento sono benvenuti.

+0

Penso che questo sia in realtà un duplicato della domanda che hai collegato, e altri come http://stackoverflow.com/questions/549166/how-mature-is-mono e http: // stackoverflow.com/domande/204.709/è-mono-robusto-abbastanza-per-grave-enterprise sviluppo –

+0

Io non la penso così, questa domanda è più specifica rispetto ai due che lei ha citato. – Graviton

+0

Non è una vittima, si sta chiedendo come porta la sua applicazione, non se Mono è stabile/maturo abbastanza per usarlo in produzione. – Treb

risposta

7

Avviare utilizzando il MoMA tool

Il Mono Migration Analyzer (MoMA) strumento consente di identificare i problemi riguardanti la porting delle applicazioni .Net a Mono. Aiuta a individuare le chiamate specifiche della piattaforma (P/Invoke) e le aree che non sono ancora supportate da il progetto Mono. Mentre il MoMA può aiutare a mostrare potenziali problemi, ci sono molti fattori complessi che non possono essere coperti da un semplice strumento. MoMA potrebbe non riuscire a punto le aree che causerà problemi, e può indicare le aree che non sarà in realtà essere un problema

Dal punto personale: tutti i C# 3.0 funzione sono supportati bene, ho avuto nessun problema con LINQ (Per gli oggetti, non so su LINQ to SQL o XML) e NHiberinate funziona anche bene (anche se non ho finito per usare)

8

Funzionerà? Davvero hai per provarlo. Recentemente ho messo l'impegno a far funzionare i buffer di protocollo su Mono. Fino ad ora ho avuto pochissimi problemi con il tempo di esecuzione; il compilatore era più di un problema per me. Tuttavia, ho dovuto disabilitare temporaneamente uno dei test unitari (usando il mocking) perché fa muovere la VM Mono 2.4. Non ho ancora indagato sul perché, ma quel genere di cose è praticamente impossibile da prevedere.

Tutto ciò che utilizza aspetti "profondi" del CLR, come alberi di espressione e metodi dinamici, è probabile che abbia più problemi delle semplici librerie, IMO.

Ora, si dice che è un servizio di Windows - ovviamente Linux non ha servizi nello stesso modo di Windows, quindi è necessario capire come si desidera che venga eseguito. Avrei iniziato eseguendolo come una semplice app per console se fossi in te ... una volta che tutto funziona, puoi pensare di integrarlo con altri controller "di servizio" ecc., Se trovi che ne hai bisogno.

Certamente utilizzato ad essere il caso che xbuild non ha fornito un percorso di migrazione senza soluzione di continuità dalla costruzione su Windows per costruire su Linux ... tuttavia, ha avuto un sacco di attenzione di recente, quindi vale la pena di riprovare. ..

+0

Wow, quindi hai effettivamente eseguito i test in Mono? Hai compilato il tuo codice e i test anche in mono? – Graviton

+1

Sì, tutto ora costruisce in mono - ma ho dovuto lavorare intorno alcuni problemi con il compilatore, e il "sistema di compilazione" è solo uno script di shell con uso liberale di 'find. -nome '* .cs'. Dovresti * sicuramente * eseguire i tuoi test unitari sotto Mono ... ma questo è solo il primo passo, ovviamente. Dovrai testare anche l'intera app manualmente. –

+0

È interessante notare, ho presentato un buon numero di bug mono del compilatore, mentre facendo protobuf-net ... ha ancora alcuni intoppi a lavorare fuori, ovviamente. –

Problemi correlati