| 

.NET C# Java Javascript Exception

4
Ich möchte in einer .NET-Anwendung Assemblies dynamisch laden. Alle diese Assemblies liegen in einem gesonderten Anwendungspfad. Ist es sinnvoller, die Assemblies – ggfs. per Interfaces vereinheitlicht - direkt dynamisch zu laden und deren Funktionalitäten über Reflection zu ermitteln oder auf ein gesondertes und komplexes Plugin-Framework zurückzugreifen (hier gefällt mir die Funktionalität des für Java erhältlichen Java Plug-In Frameworks (siehe http://jpf.sourceforge.net/ )?
28.01.2013
David G. 191 1 6
2 Antworten
1
Deine Anforderungen lassen sich gut mit einem Plugin-Framework realisieren. Plugin-Frameworks nutzen letztendlich auch Reflection zur Auflösung der Referenzen. Im .NET Umfeld gibt es verschiedene Frameworks zu diesem Zweck. An erster Stelle ist, wie lbm1305 bereits erwähnt, MEF zu erwähnen. MEF ist Teil des .Net-Frameworks ab Version 4.0. Weitere bekannte Frameworks sind z.B.

LightCore
Castle Windsor
Unity
Spring.NET
AutoFac

Lightcore hat den Charme, dass es komplett in Deutsch dokumentiert ist, da es von Schweizern entwickelt wurde.
30.01.2013
luedi 2,2k 1 9
Danke für die große Auswahl an Frameworks, die sich für .NET eignen. Ich werde mich da mal einarbeiten.
David G. 30.01.2013
1
Die Hauptaufgabe aller oben aufgezählten Frameworks ist aber eher 'Dependency Injection'. Hier muss aktiv in die Registrierung der Assemblies eingegriffen werden, wenn man nicht über Reflection geht. Bei MEF muss man ein paar Atribute angeben und das Framework kümmert sich nach der Installation des Plugins automatisch um das Weitere.
lbm1305 30.01.2013
1
Hier nochmal ein Link zur Übersicht über MEF
http://msdn.microsoft.com/de-de/library/dd460648.aspx#what_mef_provides
lbm1305 30.01.2013
1
MEF zielt in die Richtung Plugins. Persönlich hab ich aber damit noch nichts gemacht.
MEF bei Codeplex
28.01.2013
lbm1305 849 1 8
+1 für MEF. Die in der akzeptierten Antwort aufgezählten Container können das eigentliche Problem (wie Du auch kommentiert hast) nicht lösen - ihr Einsatzzweck ist imho ein anderer.
ffordermaier 30.01.2013
Hehe...danke :-)
lbm1305 30.01.2013

Stelle deine .net-Frage jetzt!