Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Kommunikation zwischen Formular- und Dienstanwendung (https://www.delphipraxis.net/168065-kommunikation-zwischen-formular-und-dienstanwendung.html)

KWolf 3. Mai 2012 09:05

Kommunikation zwischen Formular- und Dienstanwendung
 
Hallo Forum,

ich frage mich, wie ich am besten Daten zwischen einer Formularanwendung und einer Dienstanwendung austauschen kann.

"Früher" habe ich hierzu Memory Mapped Files genutzt, dies funktioniert aber scheinbar seit Vista und Co. nicht mehr. Jedenfalls scheiterte bei mir die Kommunikation zwischen Programmen die in unterschiedlichen User-Sessions laufen.

Möglich wäre in beide Programme einen TCP/IP Client und Server zu integrieren und die Kommunikation dann per TCP/IP zu ermöglichen. Dies würde sicher gut funktionieren, allerdings wäre der Aufwand auch nicht ganz ohne.

Über Named Pipes habe ich etwas gelesen, bin mir jedoch nicht sicher, ob das wirklich funktioniert. Können über eine Namend Pipe zwischen verschiedenen User-Sessions Daten ausgetauscht werden? Zudem stellt sich mir hier die Frage wie das in der Praxis laufen könnte. Ich schreibe eine Information in diese Pipe (Programm A) und das Programm B muss diese Information wieder auslesen? Ginge timergesteuert, aber was mache ich wenn in wenigen Millisekunden mehrere Daten übertragen werden. Ich würde dann nur einen Teil dieser Daten tatsächlich abgreifen? Oder verstehe ich da etwas falsch?

Welche Möglichkeiten gibt es noch Daten zwischen Formular und Dienst sicher (und schnell) auszutauschen ohne das dabei was "verloren" geht?

Vielen Dank euch für alle Hinweise!

Gruß,
KWolf

s.h.a.r.k 3. Mai 2012 09:16

AW: Kommunikation zwischen Formular- und Dienstanwendung
 
Herzlich Willkommen in der DP :dp:

Ich würde das Ganze über TCP/IP laufen lassen, da ich hier die einfache Verteilung der Anwendung sehe. Du kannst dann den Dienst auch mal auf einem Server laufen lassen und mehrere Clients auf anderen Rechner bedienen. Ob sich wirklich der Aufwand lohnt kommt wohl auf die Anwendung drauf an.

Vielleicht schreibst du kurz auch noch, um was für eine Anwendung es geht.

Bummi 3. Mai 2012 09:22

AW: Kommunikation zwischen Formular- und Dienstanwendung
 
Geht zwischen Sessions, Du hast eine Server und eine Clientkomponente, der OnPipeMessage einen Stream anbieten der von Thread per Messages gefüllt wurde ... einen kleinen Wrapper darum basteln für das Protokoll ....

http://cc.embarcadero.com/Item/21507

KWolf 3. Mai 2012 10:18

AW: Kommunikation zwischen Formular- und Dienstanwendung
 
Hallo,

@s.h.a.r.k: Es geht einfach darum, dass ich über ein kleines Tool Einstellungen an einer Laufenden Dienstanwendung durchführen möchte. Der Dienst soll ebenfalls Feedback geben können.

@Bummi: Danke für den Link und die Info, dass sessionübergreifende Kommunikation möglich ist! Ich werde mir das mal ansehen!

Gruß und Danke!
KWolf

Dalai 3. Mai 2012 17:53

AW: Kommunikation zwischen Formular- und Dienstanwendung
 
Ich benutze bei Verwendung von Named Pipes die Unit Pipes von rllibby. Leider weiß ich nicht mehr, wo ich die runtergeladen habe, aber ich kann dir sagen, dass darin die Klassen TPipeServer, TPipeClient und TPipeConsole enthalten sind. Die Unit registriert sogar die genannten Komponenten, so dass man sie einfach auf dem Formular plazieren und benutzen kann.

MfG Dalai


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz