2009-10-20 8 views
14

Sto sviluppando un'applicazione desktop .NET 3.5 C#. Dovrebbe essere estendibile tramite plug-in.MEF vs Mono.AddIn

Ci sono articoli ecc. Che parlano delle differenze tra MEF e Mono.AddIn per aiutarmi a prendere una decisione informata?

O meglio ancora avete esperienza con entrambi questi framework e potete commentarli?

Grazie, Patrick

risposta

4

Credo Hanselminutes Show #181 ha qualche discussione su Mono.AddIns e quello che porta in tavola.

Durante il lavaggio del web ho trovato anche this discussion che evidenzia una differenza nel modo in cui questi due framework gestiscono attualmente la cache del catalogo.

+0

Grazie. È un inizio ... –

1

Ho studiato entrambi e ho deciso di utilizzare MEF, principalmente perché verrà rilasciato come parte di .NET 4, quindi ci sarà automaticamente più supporto, discussione e sviluppo attorno ad esso. Inoltre, MEF sembrava essere in grado di fare tutto ciò di cui avevo bisogno usando gli attributi direttamente nel codice, e Mono.AddIns richiedeva alcuni file di metadati, se non ricordo male.

EDIT: Se desideri vedere il risultato dei miei sforzi a utilizzare MEF per costruire un framework applicativo estendibile, ho open source, e dato un nome: SoapBox Core.

+0

Puoi anche guidare Mono.Addins dagli attributi. Il manifest XML è necessario solo se si desidera collegare dati/metadati o utilizzare alcune delle funzionalità più avanzate. Puoi persino mescolare e abbinare! –

+0

@mhutch: So che c'erano alcune funzionalità che erano disponibili solo nel manifest XML e preferivo il modello all-attribute di MEF. Ma questo è piuttosto secondario, sono d'accordo. –

18

[NOTA: Io lavoro su MonoDevelop, che utilizza Mono.Addins, ma ho discusso le differenze tra MEF e Mono.Addins ampiamente con Glenn isolato dalla squadra MEF scorsa settimana]

MEF si basa sulla composizione di codice , anche se le astrazioni sottostanti sono molto flessibili. Al contrario, Mono.Addins si basa su un albero di metadati, in cui è possibile inserire dati/metadati/codice in uno schema ricco della propria definizione, in modo che le estensioni possano aggiungere dati/metadati e codice.

Mono.Addins fornisce un sistema di gestione/imballaggio/repository/aggiornamento di componenti aggiuntivi pronto all'uso. Per MEF, a questo punto, dovresti costruire il tuo.

MEF ha una barriera leggermente inferiore all'ingresso e molto più lavoro di progettazione è stato dedicato alla sua usabilità e alle astrazioni sottostanti. Inoltre, fa parte di .NET 4, quindi avrà una comunità molto più ampia di utenti che lo sviluppano con/per esso.

A questo punto, se è necessario collegare dati/metadati e codice e si desidera un sistema di confezionamento già pronto, consigliamo Mono.Addins, altrimenti consiglierei MEF. Andando avanti, è probabile che le funzionalità di Mono.Addins saranno implementate su MEF, quindi probabilmente ci sarà un percorso di migrazione verso MEF.

+0

Qual è lo stato di Mono.Addins a partire dal 2014? L'ultimo commit in codeplex è avvenuto nel 2012, ovvero è morto o molto stabile :) – user3557327

+1

Viene mantenuto attivamente su GitHub: https://github.com/mono/mono-addins –