Thema: Delphi Robustes Plugin-System

Einzelnen Beitrag anzeigen

Benutzerbild von TheJeed
TheJeed

Registriert seit: 11. Jun 2009
Ort: Leipzig
57 Beiträge
 
#3

Re: Robustes Plugin-System

  Alt 1. Dez 2009, 21:10
Ich stand mal vor der selben Entscheidung. Die wurde mir dadurch erleichtert, dass ich mir ein Konzept erarbeitet habe, wozu meine Plugins eigentlich dienen sollten:
  • ein "Typ I" Plugin sollte eine Form darstellen
  • ein "Typ II" Plugin ist in etwa vergleichbar mit einer nicht-visuellen Delphi Komponente: Daten in meinem Programm zu importieren, zu exportieren oder zu manipulieren.

Alle Plugins sind DLLs.

Wird ein Typ I - Plugin eingebunden, dann wird eine in jeder DLL gleich gebaute Function aufgerufen, die eine Beschreibung der vom Hauptprogramm zu bastelnden Oberfläche zurückliefert, sowie Zeiger auf mitgelieferte Funktionen. Die Forms werden vom Hauptprogramm zusammengebaut, und zwar aus Komponenten, die es bereits "vorhält". Vereinfacht gesagt: Sagt das Plugin "hier kommt ein Button hin", instanziiert das Hauptprogramm den Button und verknüpft dessen Events mit Funktionen aus der DLL. Bei dieser Vorgehensweise nehme ich die Beschränkung hin, dass die DLL selbst keine Komponenten verwenden kann, die das Hauptprogramm noch nicht kennt.

Ein Typ II - Plugin tritt maximal als zusätzlicher Menüeintrag im Hauptprogramm in Erscheinung, oder wird unsichtbar mit einem Event verknüpft. Das Hauptprogramm stellt für bestimmte Events Publisher zur Verfügung, an denen sich sämtliche Typ II - Plugins als Observer anmelden, sobald sie geladen worden sind.

Das ist mein Ansatz - er hat seine Schranken und mag nicht sonderlich elegant sein, aber er ist im Einsatz und hat bisher keine Probleme bereitet.
Teitmaschine Go!
  Mit Zitat antworten Zitat