Inwieweit ist MEF ein Ersatz für PRISM?MEF: ein Ersatz für PRISM?
Antwort
Edit: Sie diese Antwort nicht lesen. Es ist peinlich falsch. Ich bin scheitern. Lies Glenn Block's unten.
Es ist nicht offensichtlich, aber das ist die gleiche Frage: Managed Extensibility Framework (MEF) vs. Composite UI Application Block (CAB)
Konsens im doppelten Beitrag ist, dass MEF und Prism den gleichen grundlegenden Satz von Funktionen auf unterschiedliche Weise zur Verfügung stellen, mit der Ausnahme, dass Prism die Event Aggregator liefert, Das ist ein Pub-Sub-Mittel zur Kommunikation zwischen Anwendungskomponenten. Sie können dies jedoch mit MEF verwenden. Es ist ziemlich viel zu bevorzugen, wirklich.
Werfen Sie einen Blick auf diese Sparkling Client podcast auf MEF und Prism.
Heute würde ich sagen, Prism und MEF einander ergänzen. So wie Prisma und Einheit. Prism führt eine Reihe spezieller Dienste wie RegionManager, DelegateCommand und EventAggregator ein, die beim Erstellen von Composite-Apps helfen. MEF auf der anderen Seite ist ein allgemeinerer Kompositionsmechanismus für die Erweiterbarkeit von Anwendungen und Frameworks, unabhängig davon, ob es sich um Composites handelt oder nicht. Das Hauptmerkmal von MEF ist seine Auffindbarkeit, was bedeutet, dass es alle verfügbaren Teile dynamisch entdecken kann.
Sie könnten bei der Prüfung des MEF contrib Projektes (mefcontrib.codeplex.com), die enthält eine Integrationsschicht für Einheit und MEF interessieren. Mit dieser Erweiterung verwaltet Unity MEF hinter den Kulissen, sodass Sie nicht mit zwei Contianern konkurrieren müssen. Der Vorteil ist, dass Sie Unity für allgemeine Pocos und MEF für die Erkennung von Erweiterungen verwenden können. Da Prism derzeit auf Unity aufbaut, können Sie damit MEF nutzen. Um das contrib-Projekt verwenden zu können, müssen Sie einige kleine Änderungen an Ihrem Unity-Bootstrapper vornehmen, aber es sollte ziemlich trivial sein.
Es gibt definitiv einige Überschneidungen. Der Ort, wo es am meisten hervorsticht, ist in Bezug auf Module. Prism verwendet ein IModul als Mittel zur Entdeckung. In MEF kann jede Komponente ein Teil sein und dynamisch erkannt werden. Das heißt, mit MEF haben Sie von oben nach unten Modularität, während bei Modulen mit Prism mehr granulare Einheiten vorhanden sind. Zusammengesetzte Anwendungen sind definitiv ein Bereich, mit dem wir in der MEF-Zeit konfrontiert sind. Mit der Zeit wird es sehr wahrscheinlich sein, dass Sie immer mehr Unterstützung beim Erstellen solcher Apps innerhalb von MEF sehen werden. Wir arbeiten mit p & p, um sicherzustellen, dass es zu diesem Zeitpunkt einen reibungslosen Übergang gibt.
Beachten Sie jedoch, dass die [MEF-Unterstützung in Prism zu Ende geht] (https://github.com/PrismLibrary/Prism): "MEF wird mit WPF aus Gründen der Kompatibilität mit früheren Versionen unterstützt. Es wird nicht zu Windows 10 UWP oder Xamarin Forms hinzugefügt. " – Informagic
MEF wird nie Prisma ersetzen
MEF ist ein Dependency Injection manager.its kein Dependency Injection Container.
MEF bietet die Möglichkeit, Exporte und Importe delklarar über Attribute zuzuweisen.
Prism mit MEF gibt Ihnen Fähigkeit, Fähigkeit, Auto entdeckt DLLs und die Fähigkeit, Plug-in zum Hinzufügen und Entfernen durch das Hinzufügen oder DLLs zu löschen. Wo, wie Prisma Rahmen gibt Ereignis-Aggregator, Region Manager, Service-Locator.
können Sie Prisma ohne MEF verwenden. Es gibt verschiedene andere Optionen wie Ninject, Einheit und andere DI-Container.
können Sie MEF mit Prisma verwenden für Plugin-basierte erweiterbare Anwendungen zu bauen.
- 1. Ist MEF ein Ersatz für System.Addin?
- 2. Prism v4: Einheit oder MEF?
- 3. prism mef ViewSortHint funktioniert nicht
- 4. Was sollte ich in Prism-MEF oder Unity verwenden?
- 5. Wie sortieren Sie Ansichten in einem ItemsControl in Prism/MEF?
- 6. Prism/mef Ansichtsmodell: Pro und Contra von Eigentum gegen Ctor
- 7. Ein Ersatz für Pythons httplib?
- 8. Würde MEF für ein Produkt arbeiten?
- 9. Menüelement für jedes Modul, wobei der Modulinhalt dynamisch mit Prism oder MEF geladen wird
- 10. Ist MEF ein Abhängigkeitsinjektionsframework?
- 11. Ist svcutil.exe ein Ersatz für xsd.exe?
- 12. Ist brennen ein Wix Ersatz für msiexec?
- 13. Was ist ein brauchbarer Ersatz für Searchlogic?
- 14. Ist BDD ein Ersatz für TDD?
- 15. Wird das Prism-Buch für Prism 6 aktualisiert?
- 16. Gibt es einen Ersatz für MEF in .NET Core (oder ASP.NET 5)
- 17. Prism-Modul-System aus WCF-Service?
- 18. Ist MEF OSGi für .NET?
- 19. SettingsProviderAttribute Ersatz für Anwendungsebene individueller Settings
- 20. Ein universeller createPopup() Ersatz?
- 21. Prism/MVVM (MEF/WPF): Exposing Navigation [Menü zum Beispiel] von Modulen
- 22. Ersatz für UDC, Nutzungsdatensammler?
- 23. MEF: Schnittstelle für Export markieren
- 24. Ersatz für Neuronale Netze
- 25. Ersatz für veraltet `WrappingNeoServerBootstrapper`
- 26. Ersatz für veraltete eregi
- 27. Ist es möglich (und sinnvoll), MEF und Prism (CAL) in einem Projekt zu verwenden?
- 28. SYSGEN_SYSISAPI Ersatz für WinCE6
- 29. Ersatz für Python statvfs?
- 30. CGAL Ersatz für iOS
Ugh ... Ich weiß, dass es von vor einem Jahr war, und ich habe viel gelernt, aber diese Antwort ist wirklich falsch. Glenn Blocks Post ist präziser.Sie können dies am deutlichsten an der Tatsache erkennen, dass Prism V4 eine Option zur Verwendung von * MEF für verschiedene Formen von IoC und Komposition hat. Ich kann meinen eigenen Beitrag nicht löschen oder sogar ablehnen. –
Es ist komisch, etwas zu lesen und zu sagen: "Wer ist dieser Idiot? ... oh" –
+1 für pure Ehrlichkeit. Obwohl Ihre Antwort nicht die "richtigste" ist, gibt sie im Gegensatz zu Glenn's Antwort einen Einblick. Die Linien der Verantwortung/Funktionalität zwischen MEF/Prism/Unity/MAF sind ziemlich unscharf (und Sie verdienen auch keinen Downvote). – Doug