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