(so circa le altre domande MEF/MAF, ma questo è un problema più specifico)Applicazione WPF estensibile - MEF, MAF o caricamento semplice?
voglio creare un'applicazione WPF che sarà essenzialmente essere solo un semplice add-in di accoglienza, GUI e le impostazioni. Tutto il lavoro effettivo verrà svolto da uno o più plug-in. Non hanno bisogno di comunicare tra loro, l'applicazione principale invierà comandi/comandi utente a loro e restituiranno alcuni risultati (ad esempio, elementi dell'interfaccia utente WPF per il rendering).
Ora, dal momento che il nucleo dell'applicazione si basa sui plug-in, devo scegliere un buon metodo per gestirli. Voglio essere in grado di caricarli/scaricarli/ricaricarli in fase di esecuzione (ad esempio quando viene trovato e scaricato un aggiornamento). Probabilmente dovrebbero essere eseguiti nel proprio dominio e/o processo di applicazione per garantire stabilità e sicurezza.
Da alcune ricerche e sperimentazioni sono venuto a tre opzioni:
System.AddIn (MAF): Sembra che questo può fare tutto quello che serve. C'è una pipeline che consente di eseguire più versioni dell'API contemporaneamente per compatibilità, ecc. Ma a meno che manchi qualcosa devo creare più volte l'API: viste host e plug-in, contratto e due adattatori per il contratto. Inoltre ci sono poche (rispetto al MEF) informazioni e risorse in giro e la maggior parte degli articoli ha pochi anni. Sono preoccupato che questo sta lentamente morendo e preferirei non usarlo per un nuovo progetto.
MEF: Questo sembra semplice, ma si sente anche come c'è un sacco di magia che non posso controllare, e gli strati non sono separati come in MAF. Voglio solo una piccola libreria che puoi collegare a un nuovo progetto, implementare l'interfaccia e il plugin è fatto.
Caricamento manuale: L'ultima opzione sarebbe quella di cartella di scansione manualmente per dll, l'uso di riflessione per trovare le classi di plugin e creare istanze. Anche se è fattibile, avrei preferito usare un quadro di riferimento di caricare manualmente assemblee, creare processo separato/AppDomain ecc
Quindi, quale sarebbe meglio per questo tipo di applicazione, oppure c'è qualcosa che io' hai perso?
Oggetto molto curato. accoppiare buoni articoli correlati; http://pwlodek.blogspot.com/2011/07/isolating-mef-components.html e http://blogs.msdn.com/b/tilovell/archive/2011/08/19/wf4-hosting-the- workflowdesigner-o-altro-WPF-roba-in-a-parte-AppDomain.aspx – Will