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