Einzelnen Beitrag anzeigen

DelphiApostel

Registriert seit: 12. Apr 2005
10 Beiträge
 
Delphi 2010 Enterprise
 
#5

Re: Zugriff auf einen COM-Server aus einem Delphi-Dienst

  Alt 18. Dez 2006, 10:07
Guten Morgen,

also ich habe mir jetzt auch ein Buch bestellt... ("Delphi COM Programming" von Eric Harmon) - für 50 EUR! Ich hoffe, dass ich das Geld jetzt nicht umsonst ausgegeben habe

Zurück zum Thema:
der Windows-Dienst besitzt bereits einen Indy TCP-Server. Ich will jetzt nicht jedes mal, wenn eine Event-Meldung ausgegeben werden soll, beim Dienst einen neuen IdTCP-Client erzeugen, Port auf dem Listener öffnen und eine Verbindung zum "Listener TCP-Server" herstellen. Das dauert viel zu lange und verursacht unnötige CPU-Last. Der Dienst kann ruhig die Event-Meldungen verschicken, egal ob der Listener läuft oder nicht. Ich glaube, dass das nur mit COM-Möglich ist...

Zur Info: der Windows-Dienst läuft auf dem Server. Es gibt viele GUI-Clients auf den Workstations, die sich mit diesem Server verbinden und verschiedene Informationen austauschen. Deswegen werden viele Event-Meldungen auch Zeitgleich ausgegeben/erzeugt (was auch dazu führen wird, dass auf dem Windows-Dienst mehrere TCP-Clients parallel/zeitgleich erzeuget werden müssen - nicht gut...)

Was man wirklich machen könnte ist, den Dienst als COM-Server zu deklarieren. Das Listener-Programm übergibt einfach seine Callback-Schnittstelle an den COM-Server, der dann die Event-Meldungen an diese Callback-Funktion schickt.
Wie es aussieht, ist eine IPC-Kommunikation zwischen einem Dienst und einer GUI-Anwendung nur in dieser Konstellation möglich.
Ich werde das jetzt so ausprobieren und nachher hier berichten, ob es geklappt hat oder nicht.

Vielen Dank an die, die mich bei meinem Problem unterstützen

MfG
Delphi-Apostel
  Mit Zitat antworten Zitat