Programm-Funktionalität in Plugins auslagern

Für Fragen von Einsteigern und Programmieranfängern...
YannVDC
Beiträge: 14
Registriert: Mo 4. Okt 2010, 09:07
OS, Lazarus, FPC: MacOSX/Linux/Windows (L 0.9.28 FPC 2.4)
CPU-Target: 32/64bit
Wohnort: Altstätten SG/Schweiz
Kontaktdaten:

Re: Programm-Funktionalität in Plugins auslagern

Beitrag von YannVDC »

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
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.

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*

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Programm-Funktionalität in Plugins auslagern

Beitrag von theo »

Bist du sicher, dass man Pascal Script nicht unter OSX zum laufen bringt?
Imho ist das die ideale Lösung für Plugins. Man kann auch GUI Elemente einsetzen und soo langsam ist es wahrsch. gar nicht. Man kann in Bytecode vorkompilieren.

Falls es nicht out-of-the-box klappt, könntest du es vllt. auf OSX portieren. Dann hättest du eine feine Lösung und eine gute Tat vollbracht. ;-)

carli
Beiträge: 657
Registriert: Sa 9. Jan 2010, 17:32
OS, Lazarus, FPC: Linux 2.6.x, SVN-Lazarus, FPC 2.4.0-2
CPU-Target: 64Bit

Re: Programm-Funktionalität in Plugins auslagern

Beitrag von carli »

Du kannst ja eine Scriptsprache benutzen.

Scriptsprachen sind zwar langsamer, aber solange du sie nicht für Pixeloperationen in einem Bildprogramm missbrauchst, ist der Geschwindigkeitsunterschied wirklich nicht spürbar.

YannVDC
Beiträge: 14
Registriert: Mo 4. Okt 2010, 09:07
OS, Lazarus, FPC: MacOSX/Linux/Windows (L 0.9.28 FPC 2.4)
CPU-Target: 32/64bit
Wohnort: Altstätten SG/Schweiz
Kontaktdaten:

Re: Programm-Funktionalität in Plugins auslagern

Beitrag von YannVDC »

Folgenden Output bekomm ich sowohl unter MacOSX als auch unter Windows7 mit Lazarus 0.9.28.2 und FPC 2.2.4. Ist das ne gute Nachricht? Ich mein, das ich bei beiden Systemen den identischen Output hab. Ich musste noch Pack_PowerPDF 0.9.3 installieren, hab dann das aktuellste PascalScript von 2005 (Version 3.0.3.54) genommen.

Bild

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Programm-Funktionalität in Plugins auslagern

Beitrag von theo »

YannVDC hat geschrieben:Frage: Hat jemand von Euch Pascalscript unter Windows7 mit dem aktuellsten Lazarus zum Laufen gebracht? Bin nur etwas stutzig, weil Pascalscript schon von 2005 ist.
Ich hab's nicht neulich getestet, aber es gibt ja laufend Anpassungen in SVN.
Die Letzte vor 9 Tagen, die Letzte für FPC vor 2,5 Monaten. Das kann also nicht soo daneben sein.

http://code.remobjects.com/p/pascalscri ... tree/HEAD/" onclick="window.open(this.href);return false;
YannVDC hat geschrieben:hab dann das aktuellste PascalScript von 2005 (Version 3.0.3.54) genommen.
Wo hast denn du das her? Das hier ist einiges neuer:
http://www.remobjects.com/free.aspx#ps" onclick="window.open(this.href);return false;

YannVDC
Beiträge: 14
Registriert: Mo 4. Okt 2010, 09:07
OS, Lazarus, FPC: MacOSX/Linux/Windows (L 0.9.28 FPC 2.4)
CPU-Target: 32/64bit
Wohnort: Altstätten SG/Schweiz
Kontaktdaten:

Re: Programm-Funktionalität in Plugins auslagern

Beitrag von YannVDC »

theo hat geschrieben:
YannVDC hat geschrieben:Frage: Hat jemand von Euch Pascalscript unter Windows7 mit dem aktuellsten Lazarus zum Laufen gebracht? Bin nur etwas stutzig, weil Pascalscript schon von 2005 ist.
Ich hab's nicht neulich getestet, aber es gibt ja laufend Anpassungen in SVN.
Die Letzte vor 9 Tagen, die Letzte für FPC vor 2,5 Monaten. Das kann also nicht soo daneben sein.

http://code.remobjects.com/p/pascalscri ... tree/HEAD/" onclick="window.open(this.href);return false;
YannVDC hat geschrieben:hab dann das aktuellste PascalScript von 2005 (Version 3.0.3.54) genommen.
Wo hast denn du das her? Das hier ist einiges neuer:
http://www.remobjects.com/free.aspx#ps" onclick="window.open(this.href);return false;
Habs jetzt vom SVN genommen, lässt sich noch nicht kompilieren, aber ich werds mir am Wochenende ansehen, da hab ich mehr Zeit und nen freien Kopf, heute ist sowieso nicht ganz mein Tag ;o(

Benutzeravatar
theo
Beiträge: 10872
Registriert: Mo 11. Sep 2006, 19:01

Re: Programm-Funktionalität in Plugins auslagern

Beitrag von theo »

YannVDC hat geschrieben:Habs jetzt vom SVN genommen, lässt sich noch nicht kompilieren, aber ich werds mir am Wochenende ansehen, da hab ich mehr Zeit und nen freien Kopf, heute ist sowieso nicht ganz mein Tag ;o(
Habe eben deiner Meldungen wegen die SVN Version gezogen, das lpk installiert (Linux GTK2) und die TestApp konvertiert.
Ich hatte nicht das geringste Problem. Alles reibungslos. Funktionieren tut's auch soweit. Siehe Screenshot.
Dateianhänge
pscript.png

Antworten