2009-10-20 8 views
14

Ich entwickle eine .NET 3.5 C# Desktop-Anwendung. Es sollte über Plug-Ins erweiterbar sein.MEF vs Mono.AddIn

Gibt es Artikel usw., in denen die Unterschiede zwischen MEF und Mono.AddIn diskutiert werden, damit ich eine fundierte Entscheidung treffen kann?

Oder noch besser haben Sie Erfahrung mit diesen beiden Frameworks und können sie kommentieren?

Danke, Patrick

Antwort

4

ich Hanselminutes Show #181 glauben hat einige Diskussion über Mono.Addins und was es auf den Tisch bringt.

Bei der Suche im Internet habe ich auch gefunden this discussion, die einen Unterschied in der wie diese beiden Frameworks derzeit Katalog-Caching behandelt.

+0

Danke. Es ist ein Anfang ... –

1

Ich untersuchte beide und entschied mich dafür, mit MEF zu gehen, vor allem weil es als Teil von .NET 4 veröffentlicht wird, so dass es automatisch mehr Unterstützung, Diskussion und Entwicklung geben wird. Außerdem schien MEF in der Lage zu sein, alles zu tun, was ich brauchte, indem ich Attribute direkt im Code verwendete, und Mono.AddIns benötigte einige Metadatendateien, wenn ich mich richtig erinnere.

EDIT: Wenn Sie MEF das Ergebnis meiner Bemühungen sehen möchten bei Verwendung eines erweiterbaren Application Framework zu bauen, ich habe sourced offen, und es einen Namen gegeben: SoapBox Core.

+0

Sie können Mono.Addins von Attributen auch fahren. Das XML-Manifest ist nur erforderlich, wenn Sie Daten/Metadaten einbinden oder einige der erweiterten Funktionen verwenden möchten. Sie können sogar mischen und übereinstimmen! –

+0

@mhutch: Ich weiß, aber es gab einige Funktionen, die nur im XML-Manifest verfügbar waren, und ich bevorzugte das All-Attribut-Modell von MEF. Aber das ist ziemlich unbedeutend, stimme ich zu. –

18

[ANMERKUNG: Ich arbeite an MonoDevelop, die Mono.Addins verwendet, aber ich diskutiert die Unterschiede zwischen MEF und Mono.Addins ausgiebig mit Glenn-Block aus dem MEF-Team letzte Woche]

MEF auf das Komponieren Code basiert obwohl die zugrundeliegenden Abstraktionen sehr flexibel sind. Im Gegensatz dazu basiert Mono.Addins auf einer Baumstruktur von Metadaten, in der Sie Daten/Metadaten/Code in ein reiches Schema Ihrer Definition einfügen können, sodass Erweiterungen Daten/Metadaten sowie Code hinzufügen können.

Mono.Addins bietet Ihnen ein Add-in Management/Verpackung/Repository/Update-System Out-of-the-Box. Für MEF müssten Sie zu diesem Zeitpunkt Ihre eigenen erstellen.

MEF hat eine etwas niedrigere Eintrittsbarriere, und viel mehr Designarbeit ist in seine Benutzerfreundlichkeit und die zugrunde liegenden Abstraktionen eingeflossen. Außerdem ist es ein Teil von .NET 4, also wird es eine viel größere Gemeinschaft von Benutzern geben, die sich mit/dafür entwickeln.

An diesem Punkt, wenn Sie Daten/Metadaten sowie Code einstecken müssen und Sie ein fertiges Verpackungssystem wollen, würde ich Mono.Addins empfehlen, sonst würde ich MEF empfehlen. Es ist wahrscheinlich, dass die Funktionen von Mono.Addins in MEF implementiert werden. Daher wird es wahrscheinlich einen Migrationspfad in Richtung MEF geben.

+0

Wie ist der Stand von Mono.Addins ab 2014? Letztes Commit in Codeplex war 2012, das heißt, es ist entweder tot oder sehr stabil :) – user3557327

+1

Es ist aktiv auf GitHub gepflegt: https://github.com/mono/mono-addins –