Was Danielg gesagt hat, ist gut. Ich würde hinzufügen:
Wenn Sie sich die Videos über System.Addins ansehen, handelt es sich eindeutig um sehr große Projekte. Er spricht über ein Team , das die Hostanwendung verwaltet, ein anderes Team , das jedes AddIn verwaltet, und ein drittes Team , das den Vertrag und die Pipeline verwaltet. Basierend darauf denke ich, dass System.Addins eindeutig für größere Anwendungen geeignet ist. Ich denke an Anwendungen wie ERP-Systeme wie SAP (vielleicht nicht so groß, aber Sie haben die Idee). Wenn Sie sich diese Videos angesehen haben, können Sie feststellen, dass der Arbeitsaufwand für die Verwendung von System.Addins sehr groß ist. Es würde gut funktionieren, wenn viele Unternehmen Add-Ins von Drittanbietern für Ihr System programmieren würden und Sie keinen dieser Add-In-Verträge unter Todesstrafe brechen könnten.
Auf der anderen Seite scheint MEF mehr Ähnlichkeiten mit dem Add-In-Schema von SharpDevelop, der Eclipse-Plugin-Architektur oder Mono.Addins zu haben. Es ist viel einfacher zu verstehen als System.Addins und ich glauben, dass es viel flexibler ist. Die Dinge, die Sie verlieren, sind, dass Sie keine sofort einsatzbereite AppDomain-Isolation oder starke Versionierungsverträge mit MEF erhalten. Die Stärken von MEF bestehen darin, dass Sie Ihre gesamte Anwendung als Zusammensetzung von Teilen strukturieren können, sodass Sie Ihr Produkt in verschiedenen Konfigurationen für verschiedene Kunden versenden können. Wenn der Kunde eine neue Funktion kauft, legen Sie das Teil für diese Funktion einfach in seinem Installationsverzeichnis ab und die Anwendung sieht es und führt es aus. Es erleichtert auch das Testen. Sie können das zu testende Objekt instanziieren und Scheinobjekte für alle Abhängigkeiten füttern.
Der wichtigste Punkt, den ich erwähnen möchte, ist, dass ich, obwohl System.Addins bereits im Framework enthalten ist, nicht viele Beweise dafür sehe, dass Leute es verwenden, aber MEF sitzt nur dort auf CodePlex, das angeblich enthalten sein soll .NET 4, und die Leute beginnen bereits damit, viele Anwendungen damit zu erstellen (ich selbst eingeschlossen). Ich denke, das sagt etwas über die beiden Frameworks aus.