2009-06-12 17 views
12

Sono un utente di lunga data di .NET Framework su piattaforme Windows, ma eseguo anche molta programmazione su Linux. Mi piacerebbe approfittare di Mono per alcuni progetti particolari, ma l'ultima volta che ho provato (forse 2 anni fa?), Mono non era semplicemente all'altezza del compito. Inoltre, è stato particolarmente difficile ottenere ottime informazioni sullo stato di Mono dal loro sito o da Google.Stato attuale di Mono su Linux?

Ci sono dei guru Mono che possono semplificare lo stato attuale del progetto per qualcuno abituato a utilizzare .NET 3.0 su Windows? Circa la quantità di librerie della classe base utilizzabili e la quantità di WinForms?

Grazie in anticipo!

+1

questo potrebbe essere buono come un wiki pubblico o come si chiama. – wprl

risposta

14

Uno stato di alto livello: mono-project.com/Plans

stato API: go-mono.com/status

Nel caso in cui si desidera migrare un'applicazione esistente per Linux: MoMA

Penso anche che sarebbe meglio idea di ...

  • pensare a certi casi d'uso si potrebbe avere per Mono ... la tua domanda corrente è troppo generica
  • porre domande concrete sulle mailing list, dal momento che molte persone intelligenti e competenti che sono attivi c'è probabilmente don' t leggere StackOverflow: mono-project.com/Mailing_Lists

Una sintesi della mia breve esperienza:

  • Asp.net 2.0 sia pienamente attuato, e ho potuto ottenere Asp.net MVC lavorare
  • Windows Form è supportato ma non sarà mai di alta qualità perché non è una priorità. Risparmia il dolore e crea un'interfaccia Gtk # per la tua porta Linux
  • le librerie di base sono implementate e il DB di Linq è quasi arrivato, ma non avrai fortuna con le API specifiche di Windows, come WPF e WCF, anche se Silverlight è implementato in Moonlight
  • Mono sta avendo successo in giochi recenti che necessitano di un potente ambiente di scripting. Vedere aziende utilizzando Mono: mono-project.com/Companies_Using_Mono

Per le notizie e cose, seguire il blog di Miguel a tirania.org/blog/

+0

ottime informazioni su quel blog di tirania.org! grazie Alexandru – Mike

4

Direi che ha fatto molta strada se è in grado di supportare lo sviluppo di un motore di creazione di giochi come Unity, che è stato utilizzato per sviluppare Sims 3, tra le altre cose. Inoltre, il team Mono in qualche modo sta battendo Microsoft nel proprio gioco, creando cose come un linker statico in modo che il codice .NET possa essere eseguito in modo nativo su iPhone e una console C# REPL.

Per quello che vale, ho giocato con esso sul lato ASP.NET, e anche se ci sono stati alcuni sobbalzi, è stata un'esperienza molto positiva. Sono stato in grado di ottenere un'applicazione ASP.NET MVC in esecuzione utilizzando NHibernate e MySQL.

3

Il mono website afferma che le seguenti C# 3.0 funzioni sono supportate:

  • metodi anonimi
  • iteratori
  • classi parziali
  • Generics
  • tipi nullable
  • assemblee amico
  • classe statica s
  • covarianza e controvarianza
  • proprietà accessor accessibilità
  • buffer fissi
  • montaggio esterno alias
  • qualificazione namespace alias
  • linea controllo avvisi
  • Metodi di estensione
  • sintassi LINQ
  • Expression alberi
  • Proprietà automatiche
  • Espressioni lambda
  • Tipi anonimi.
+1

Non so chi abbia downvoted questo ... personalmente, penso che un elenco di cose che non sono implementate è più importante, ma una lista di cose che sono è ancora a portata di mano. – Powerlord

+0

Sono d'accordo, R. Bemrose - questa lista in realtà attenua un po 'le mie paure, solo per vedere cosa posso usare. molto maneggevole. Grazie, SoloBold, per le informazioni! – Mike

4

L'implementazione mono corrente (2.4) è abbastanza buono in termini di .NET 2.0 compilance (e alcune delle librerie da 3.5, come ASP.NET MVC o LINQ), ma è ancora molto lontano da .NET 3.0/3.5 generico. Se la tua applicazione è progettata utilizzando winforms e non usa molto da .NET 3.0/3.5, allora avrai buone possibilità che funzioni con il mono. Naturalmente ci saranno alcune parti del framework .NET 3.5 che probabilmente non saranno mai supportate, come WPF.

C'è una Migration Analyzer sulla pagina mono che può individuare se l'applicazione verrà eseguita probabilmente bene, o non in mono 2.4.

2

Nella mia esperienza con l'area Window Forms .NET 2.0 sembra funzionare correttamente. Più complicato è il software, più problemi avrai. Ci sono cose che devono essere cambiate per far funzionare le cose. Cose come separatori di percorsi. Anche alcuni controlli di Win Form si comportano in modo diverso, piccole cose come l'attivazione di eventi che si insinuano su di te. Devi testare tutto, troverai problemi, proprio come in Java. Troverai problemi in tutte le permutazioni Win/Mono e Linux/Mono, anche Mono ha bug che non sono fissi e che potrebbero essere uno stopper.

È possibile utilizzare lo strumento MOMMA per trovare problemi noti, ma non cattura tutto. http://www.mono-project.com/MoMA

i problemi di debug sono molto lenti e l'impostazione di un ambiente di debug è difficile.

Io però penso che per .NET 3.0 sia ancora troppo presto, a meno che non lo stiate facendo per divertimento.

+0

+1 Punto molto interessante sull'ambiente di debug. Questo è uno dei reali vantaggi dello sviluppo .net sul lato Windows - sarà una pillola difficile da ingoiare! – Mike

+0

Sì, specialmente se si utilizza VS, tendono a utilizzare l'IDE mono. Poi ci sono le varie sostituzioni di lib e i gestori di finestre. – eschneider

2

I controlli speciali come datagridview hanno fatto molta strada, nella mia esperienza. Stanno arrivando, ma non sono ancora completamente lì.

Sviluppo una piccola app OpenGL utilizzando la libreria OpenTK. Questa applicazione, quando viene eseguita su Windows e Mono, è per lo più la stessa, ma cose come una datagridview sembra essere un po 'casuale nell'implementazione. Scegli l'ultima versione di mono, e dovresti essere in gran parte a posto.

A mio parere, le differenze sono ora marginali, senza alcun dealbreaker (esegui forse il debugger). Monodevelop però non ha gli strumenti per il refactoring di VS.

Problemi correlati