Hhhmmmm, ich versteh in etwa was Du meinst, aber ich denke das würde ich bei meinem Projekt so gar nicht brauchen, da ich nicht vorhabe, "Hauptprogramm" mit "Plugin" kommunizieren zu lassen. Gut, die beiden teilen sich ein paar Config-Files und eine Datenbank, aber mehr gibts da nicht, es werden keine Daten und/oder Befehle hin und hergeschickt.mschnell hat geschrieben:Die passende Technik heißt "RPC" ("Remote Procedure Call") Rem,Objects macht genau das. Man braucht dafür neben dem Transport-Mechanismus einen "Marshalizer", der die Parameter in eine Datenstruktur ("offiziell: XML, andere Formate sind kompakter) packt. Bei RemObj kann man sich die Kodierung und den Transportmechnismus einzeln aus einer Anzahl Alternativen auswählen. Die "offizielle" Technik ist "SOAP": XML Struktur über HTTP Transport.
Wenn es so etwas als open source gäbe, wäre natürlich sehr schön. Muss ja nicht SOAP können. wenn erst mal die Units für einen Transport eines proprietären Formats durch Pipes vorhanden wären, wäre das ein Toller Ausgangspunkt.
Du brauchst einen Thread der auf eine Message aus der Pipe wartet und die dekodiert und dann (im einfachsten Fall mit Synchronzie) ein Event im Maintread mit den richtigen Parametern aufruft und idealer Weise ein Funktionsergebnis und "out" Parameter zurück-überträgt.
Das fände ich in jedem Fall die beste Lösung für ein Plugin-Interface
-Michael
Man könnte es so sehen, wie in einer Webapplikation, das Hauptprogramm stellt die Navigationsleiste dar, die ich dynamisch mit Links erweitern kann (mittels einer "Hinzufügen"-Funktion), die Plugins stellen die Linkziele dar, jedes ein ein eigenes Programm/Script das seine eigenen Funktionalitäten bietet, die einzigen Gemeinsamkeiten sind eben, dass beide mittels zentralem Config-File auf dieselbe Datenbank zugreifen.
Das Hauptprogramm bietet somit nur eine Auflistung aller möglichen Funktionen, die ich einzeln aufrufen kann. Gut, ich könnte lauter verschiedene Programme machen, die sich gegenseitig ausführen, nur habe ich so eben das Problem, dass ich jedes Plugin dann unabhängig vom Hauptprogramm ausführen könnte (was nicht gewünscht ist), bzw. hätte ich lauter neue Einträge in der Taskleiste und könnte auch unabhängig vom Plugin das Hauptprogramm schließen. So, und jetzt hab ich nen Knoten im Hirn *lach*