Thema: Delphi Robustes Plugin-System

Einzelnen Beitrag anzeigen

hanspeter

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

Re: Robustes Plugin-System

  Alt 2. Dez 2009, 13:20
Zitat von ele:

Mein Favorit ist bisher die Lösung mit getrennten Prozessen und COM. Jetzt muss ich mal ein Grundgerüst bauen und sehen wo die schwierigkeiten liegen.
Bei der Lösung bin ich nach vielen Versuchen auch angekommen und ärgere mich über alle Umwege.
Man sollte aber mit Delphi 2009/2010 anfangen, da hier die Com-Geschichte gründlich überarbeitet wurde und
vieles einfacher macht. So wird z.B. die Typlibrary nicht mehr binär editiert, sondern in einer Quellcodedatei vorgehalten ,
welche danach compiliert wird.
Das Anlegen eines Com-Servers untstützt Delphi mit Experten recht gut.
Ein Comserver kommt letztendlich auch nur als dll daher. Die dll sind relativ groß, da sie die Laufzeitumgebung von Delphi mit eingebunden haben. Dafür sind sie aber von der Compilerversion völlig unabhängig.
Das spätere Ändern von Schnittstellen ist ebenfalls kein Problem. Ein Com-Object kann mehrere Schnittstellen beinhalten.
Die alte Schnittstelle wird unverändert gelassen und eine neue Schnittstelle declariert.
Die richtige Schnittstellenzuordnung erfolgt automatisch über die GUID der Schnittstelle.
Man muß nur eisern daran festhalten eine einmal veröffentlichte Schnittstelle nie mehr zu ändern.
Alte Software arbeitet mit der alten Schnittstelle, neuere Software kennt bereits die neueren Schnittstellen.
Mit dem ersten Aufruf eines Com-Objectes läd das OS dieses und gibt es automatisch frei, wenn keine Referenz auf dieses Objekt mehr vorhanden ist.
Praktisch heist das, das ein Com-Object auch entladen wird, wenn das Hauptprogramm abstürzt und seinen Process beendet..
Ein Comserver kann als Inprocess oder outprocess-Server deklariert werden.
Bei einem outprocess-Server können beliebig viele Client auf diesen Server zugreifen, so er das kann.
Vom Comserver zur Anwendung gibt es die Möglichkeit von Events. Das war vor Delphi 2009 etwas schwierig.
Alternativ kann das aufrufende Programm eine Callback Adresse übergeben. Bei mir ist diese parameterlos und fordert den Client nur auf den Serverstatus abzufragen.
Bei Interesse mal die email-Adresse als PM schicken. Ich kann dann eine kleine Demo-Version schicken.
Hier wird die Form aus dem Com-Server z.B. in einem Tabshett als Parent eingebunden.


MAF Components habe ich mir auch angesehen. Dabei bin ich aber wieder bei Abhängigkeit von runtime - BPL.

Ich haffe das hilft
Mit Gruß
Peter
  Mit Zitat antworten Zitat