2008-11-15 12 views
32

Das kürzlich angekündigte Managed Extensibility Framework (MEF) von .NET 4.0 - ist es ein Framework zur Abhängigkeitsinjektion? Ist Microsoft Unity von Patterns and Practices in 4.0 veraltet? Wie vergleicht sich MEF mit einem Framework wie Unity?Ist MEF ein Abhängigkeitsinjektionsframework?

+0

[Diese Frage] (http://stackoverflow.com/questions/42251/whither-managed-extensibility-framework-for-net) könnte sein, Interesse für Sie. –

Antwort

27

Speziell in der 2. Keynote von PDC 2008 von Scott Guthrie angesprochen, hat MEF viel mehr mit Dingen wie der Erweiterung von Visual Studio 2008 und anderen Anwendungen zu tun, ohne alle COM und ältere Technologien verwenden zu müssen ... Sehr gut Demonstration der Erweiterung der Textausgabe in VS2008 wurde unter anderem gezeigt. Beginnen Sie etwa eine Stunde und 15 Minuten in den zweiten Tag Keynote (http://www.microsoftpdc.com) und Sie erhalten direkte Informationen, aber im Grunde, wenn Sie "eine Anwendung mit eingebauten erweiterbar Punkte erstellen, die leicht zu entdecken sind, und die Erkennung von Erweiterungen, "dann ist MEF was du willst. UNITY ist das, was Sie für einen qualitativ hochwertigen IoC-Container wünschen, der sowohl DI als auch die anderen Lösungen anbietet, aber eine großartige und einfache Integration in die Enterprise Library bietet.

In Bezug auf Unity in der EL4.0 (jetzt 4.1 - http://msdn.microsoft.com/en-us/library/dd203099.aspx) ist es eigentlich ein IoC, der auf dem ObjectBuilder der Version 2 sitzt und die EL4.1 verfügt über Erweiterungspunkte zur Vereinheitlichung der Konfiguration verschiedener EL-Anwendungsblöcke mit Unity .

MEF vs Einheit ist wie Äpfel mit Orangen zu vergleichen. Einige große und spezifische Podcast/Webcast (en), die UNITY vollständig beschreiben sind hier, die ich sehr empfehlen:

DotNetRocks anzeigen 393 # http://www.dotnetrocks.com/default.aspx?showNum=393 DNR.tv Show # 126 http://www.dnrtv.com/default.aspx?showNum=126

+10

Aber warum sollte ich Unity verwenden wollen, wenn ich MEF habe? – bitbonk

1

Ich sah eine schreiben, die es klang wie eine, aber mehr Informationen (Scott Guthrie at PDC2008 [Video/wmv]) ließ mich denken, es ist mehr als eine Abhängigkeit Injektion Framework. Von der sounds of things kann es für die Abhängigkeitsinjektion verwendet werden, tut aber auch mehr.

0

Ich möchte eine Mopre-Zeile hinzufügen, die ich gerade gelesen habe, dass MEF nicht ein Teil von Inversion of Control ist (wie abhängige Synonym von IOC sein soll), aber es implementiert es. Wenn wir IOC über Dependency-Injections implementieren, verwenden wir in der Regel Unity, um statische Abhängigkeiten zu erkennen. Mit MEF können wir jedoch die Erweiterbarkeit unserer Anwendung erhöhen, ohne die Komponenten statisch zu konfigurieren, selbst wenn sie zur Laufzeit erkannt werden. Es gibt andere Verbindungen als auch die Ihnen helfen kann mehr: Difference between Unity and MEF

+1

Ich bin mir nicht sicher, ob diese Antwort insgesamt kohärent ist –