Hallo
DP-User
ich schreibe gerade an einer kleinen Client/Server-Anwendung. Um das ganze möglichst flexibel zu halten, nutze ich ein selbstentwickeltes
XML-ähnliches, binäres Format und habe an eine Plugin-Architektur gedacht.
Dabei exportiere ich in der
DLL eine Register-Funktion, die die Adressen aller in dieser
DLL enthaltenen Funktionen mit Funktionsnamen in eine Liste im Hauptprogramm einträgt (ähnlich wie es Delphi mit BPLs macht).
Wenn der Server einen Befehl bekommt, schaut er in seiner Liste nach und führt, wenn der Befehlsname in der Liste enthalten ist, das zugehörige Callback aus. Ich dachte daran, den Funktionen aus der
DLL als Parameter einfach einen meiner "
XML"-Tags zu übergeben, der wiederum andere Tags enthalten kann. So könnte ich die Parameterübergabe flexibel gestalten. KÖNNTE: Denn ich kann in der
DLL nicht auf die Objekte aus dem Hauptprogramm zugreifen. Ich vermute, das liegt daran, dass
DLL und Hauptprogramm jeweils ihre eigene
RTL,
VCL usw. haben.
Ich vermute, dass ich dafür Interfaces benutzen muss. Mit denen habe ich aber noch nie gearbeitet.
Helfen die denn überhaupt bei diesem Problem? Muss ich für alle bereits vorhandenen
XML-Klassen, die ich in der
DLL benutzen möchte, entsprechende Interfaces deklarieren?
Das Problem ist nämlich, dass ich die Objekte nicht nachträglich von TInterfacedObject ableiten kann, weil sei teilweise schon von anderen Klassen abgeleitet sind. Heißt das wiederum, ich muss für jede Klasse eine Wrapperklasse konstruieren? Gibt es vielleicht Tools, die sowas automatisieren?
Also am liebsten wäre es mir, wenn es eine andere Lösung gäbe...
Im schlimmsten Falle könnte ich vielleicht den Inhalt der Tags in einen Buffer speichern und hinterher wieder einlesen