Thema: Delphi Robustes Plugin-System

Einzelnen Beitrag anzeigen

hanspeter

Registriert seit: 26. Jul 2003
Ort: Leipzig
1.350 Beiträge
 
Delphi XE2 Professional
 
#2

Re: Robustes Plugin-System

  Alt 1. Dez 2009, 20:51
Zitat von ele:
Hallo,

Ich stehe vor der Herausforderung ein robustes, modulares System zu Programmieren und möchte gerne eine Diskussion anregen, welches die beste Lösung sein könnte.
Bemühe mal die Suchfunktion. Dazu gibt es schon eine Reihe Diskussionen.
Ich hatte das gleiche Problem und habe alle Varianten, einschließlich teurer Kauftools wie Remobjects Hydra, ausprobiert.

Jetzt bin ich der Ansicht, das es unter Delphi für ein robustes Pluginsystem, das auch von Dritten erweitert werden kann, nur zwei Möglichkeiten praktikabel sind.

Das ist einmal eine getrennte ExeFile. Hier habe ich mir ein Framework geschrieben, was den Datenaustausch realisiert.
Start des Programmes über Kommandozeile. In dieser werden Steuerparameter und das Handle des rufenden Programms übergeben.
Das externe Plugin meldet sich dann über wm_copydata an und übergibt/übernimmt die Steuerparameter.

Die zweite Variante ist die Realisierung als Com-Server.
Einziger Nachteil ist hier die Notwendigkeit einer einmaligen Registrierung bei der Installation.
Wenn man erst einmal mit dem Prinzip klar kommt, es ist einfach aber schlecht dokumentiert, dann ist das die bei weitem eleganteste Lösung.
Alle Plugin ein einheitliches Basisinterface. Den Namen des Plugin in einer Inifile oder ähnlichem eingetragen und das Problem ist gelöst.
Alle anderen Verfahren funktionieren nur mit Klimmzügen, wenn man ohne Laufzeit BPL arbeitet.
Mit Laufzeit BPL handelt man sich eine BPL-Hölle ein, gegen die die DLL Hölle ein Erholungslager ist.

Com hat noch ein paar andere Vorteile.
So kann das Plugin als Exe angelegt werden. Mit COM+ können Plugin rechnerübergreifend eingesetzt werden.
Letztendlich bieten solche Plugin praktisch eine Sprachunabhängikeit, wenn man sich an die in Delphi verfügbaren Datentypen für das Interface hält.
Z.B. kann ein Net Programm mit wenigen Klicks in ein Com-Server verwandelt werden und ist aus Delphi problemlos aufrufbar.
Die Forderung zur Laufzeit laden, entladen erfüllt Window automatisch.

Gruß
Peter
  Mit Zitat antworten Zitat