Entwickler-Ecke
Windows API - Pluginkommunikation - Wie realisieren?
locutus2k5 - Do 24.05.07 11:28
Titel: Pluginkommunikation - Wie realisieren?
Hallo!
Ich habe ein Pluginsystem, bei dem gefordert ist das die Plugins auch untereinander kommunizieren können, doch wie realisiere ich das?
Mittels Messages wäre eine Möglichkeit, jedoch habe ich auch mal was über TMemoryStreams gelesen. Hat noch jemand eine andere Idee wie eine Kommunikation möglich wäre?
arj - Do 24.05.07 11:32
Naja, eine Realisierung über Events wäre vielleicht möglich?
Ob das geht kann ich nicht sagen, da ich deine Pluginstruktur nicht kenne.
Stefan.Buchholtz - Do 24.05.07 12:08
Ich würde so für so etwas einen zentralen Nachrichtenverteiler in dein Hauptprogramm einbauen, bei dem sich die Plugins registrieren, wenn sie bestimmte Nachrichten empfangen wollen. Nachrichten kann man durch String-Konstanten (so funktioniert es in einen System, das ich mal gebaut habe) oder wie Window-Messages von Windows durch einen Integer identifizieren.
Ich habe als Nachrichtenverteiler eine Singleton-Klasse
TNotificationCenter, die (unter anderem) folgende Methoden hat:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| try TNotificationEvent = procedure (sender : TNotificationCenter; notification : TNotification) of object;
TNotificationCenter = class private ... public class function DefaultCenter : TNotificationCenter;
procedure AddObserver(const AObserver : TObject; const AEvent : TNotificationEvent; const ANotification : string = ''); procedure RemoveObserver(const AObserver : TObject; const ANotification : string = '');
procedure SendNotification(const ANotification : string; const ASender : TObject; const AUserInfo : TObject = nil; const AUserValue : string = ''); end; |
Gemeinsamer Zugriff deiner Plugins auf eine einzelne Singleton-Klasse wird allerdings nur funktionieren, wenn die Plugsins dynamisch geladene Delphi-Packages (bpl) sind. Bei DLLs müssten du die Funktionen des NotificationCenters über Callbacks aufrufen.
Stefan
locutus2k5 - Fr 25.05.07 00:23
Vielen danke für die Info's!
locutus2k5 - Fr 25.05.07 18:31
Ich find's toll so wie's 'is, gell?
Dunkel - Fr 25.05.07 18:45
[OT]
locutus2k5 hat folgendes geschrieben: |
Ich find's toll so wie's 'is, gell? |
Hey, und jetz sind sogar fast alle Apostrophs an der richtigen Stelle; bis auf das 'is ist's OK. :lol:
[/OT]
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!