Autor Beitrag
gammaomega
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 02.01.08 12:09 
Hallo!

Ich habe ein Programm in C# (VS 2005) geschrieben, welches ein Freund von mir mit diversen Erweiterungen versehen hat. Wir arbeiten zusammen in einem SubVersion-Repository. Allerdings ist sein Code in einem eigenen Projekt "PlugIns" in der Projektmappe, so dass es in eine eigene DLL compiliert wird.

Im Hauptprogramm werden einfach nur 3 Klassen (eine für jedes Plugin) instanziert.

Dieses Vorgehen ist allerdings mittlerweile sehr unschön, da die PlugIns und das Hauptprogramm sehr verwachsen sind:
- alle 3 PlugIns stecken in einer DLL
- es wird immer alles zusammen kompiliert
- es gibt keine Versionsnummern für die PlugIns
- es lassen sich PlugIns und Hauptprogramm nicht unabhängig voneinander updaten und ausliefern
- ...

Wir möchten hin zu einer "echten" PlugIn-Architektur:

- Das Hauptprogramm soll ein Unterverzeichnis "plugins" haben und hier selbstständig die PlugIns finden und starten.
- jedes PlugIn soll eine eigene Datei sein und eine eigene Versionsnummer haben
- beim Starten soll ein PlugIn prüfen ob die Versionsnummer des Hauptprogramms zur Versionsnummer des PlugIns passt
- ...

Doch jetzt stellt sich die Frage wie man dieses Ziel erreicht?
Könnt ihr mir vielleicht ein paar Tipps geben?

Ich glaube das Thema nennt sich auch "late binding", weil das Hauptprogramm ja erst zur Laufzeit nachsehen kann welche PlugIns es starten soll. Und die PlugIns erst zur Laufzeit erfahren welche Version des Hauptprogramms sie genau als Basis haben.

Doch wie setzt man dies in der Praxis am besten um?
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 02.01.08 13:36 
.Net 3.5 enthält schon ein vollständiges PlugIn-Framework: System.AddIn
Wenn du aus irgendwelchen Gründen (= Win-2000-Nutzer ;) ) auf 2.0 angewiesen bist, kannst du ja wenigstens ein bisschen abgucken :zwinker: .
gammaomega Threadstarter
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mi 02.01.08 14:54 
Ein Wechsel des Frameworks ist derzeit leider keine Option :-(