Quello che Danielg ha detto è buono. Vorrei aggiungere:
Se si guarda il video su System.Addins, sono chiaramente parlando di progetti molto grandi. Parla di una squadra gestendo l'applicazione host, un'altra squadra gestendo ogni AddIn e una terza squadra gestendo il contratto e la pipeline. Sulla base di ciò, penso che System.Addins sia chiaramente per applicazioni più grandi. Sto pensando ad applicazioni come i sistemi ERP come SAP (forse non così grande, ma tu hai l'idea). Se hai guardato quei video, puoi dire che la quantità di lavoro da utilizzare su System.Addins è molto grande. Funzionerebbe bene se tu avessi un sacco di aziende che programmano componenti aggiuntivi di terze parti per il tuo sistema e non puoi rompere nessuno di quei contratti add-in sotto pena di morte.
D'altra parte, MEF sembra condividere più somiglianze con lo schema di add-in di SharpDevelop, l'architettura di plugin Eclipse o Mono.Addins. È molto più facile da capire rispetto a System.Addins e credo che sia molto più flessibile. Le cose che si perdono sono che non si ottiene l'isolamento di AppDomain o contratti di versioning forti prontamente con MEF. I punti di forza di MEF sono la possibilità di strutturare l'intera applicazione come una composizione di parti, in modo da poter spedire il prodotto in diverse configurazioni per diversi clienti e, se il cliente acquista una nuova funzione, è sufficiente rilasciare la parte per tale funzionalità nella propria directory di installazione e l'applicazione lo vede e lo esegue. Facilita anche i test. È possibile creare un'istanza dell'oggetto che si desidera testare e alimentarlo con oggetti fittizi per tutte le sue dipendenze, ma quando viene eseguito come un'applicazione composta, il processo di composizione aggancia automaticamente tutti gli oggetti reali.
Il punto più importante che vorrei menzionare è che, anche se è System.Addins nel quadro già, non vedo un sacco di prove di chi lo utilizza, ma MEF è appena seduto lì sul CodePlex presumibilmente essere incluso in .NET 4, e le persone stanno già iniziando a creare molte applicazioni con esso (me incluso). Penso che ti dica qualcosa sui due quadri.
fonte
2009-05-14 20:36:12
una piccola cosa: ricorda che 'appdomain separato' NON ti aiuta se il tuo addon si blocca in un livello nativo, per questo avrai ancora bisogno di processi di lavoro. MAF aiuta un po 'a crearli, ma il ripristino dinamico da tale crash è ancora abbastanza difficile (ma possibile) – quetzalcoatl
@Ian: per favore rileggi il mio commento :) Ho scritto esattamente questo, e ALTRO: MAF lo consente davvero, ma devi alzati dopo l'incidente tutto da solo. – quetzalcoatl
@DanielG> viene fornito con un prezzo elevato che devi pagare per attraversare le appdomain