Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Kommunikation mehrerer DataSnap-Server untereinander (https://www.delphipraxis.net/193289-kommunikation-mehrerer-datasnap-server-untereinander.html)

t2000 12. Jul 2017 13:42

Kommunikation mehrerer DataSnap-Server untereinander
 
Hallo,

ich starte gerade eine sehr große Umstellung (meines langjährigen Projekts) von selbst entwickelter TCP Kommunikation unter Delphi 7 auf DataSnap unter Delphi 10.2.

Folgende Situation:
Meine Kunden haben teilweise mehrere Filialen.
In jeder Filiale ist ein lokales autarkes Netzwerk mit einem Server und einigen Clients.
Ein Server wird als "Master" deklariert (Master-Filiale). Meist sind die Filialen via VPN sternförmig (vom Master aus) verbunden.

Meine Software besteht aus einem Applikationsserver der auf eine Datenbank zugreift und über TCP/IP mit den Clients kommuniziert.

Wenn ein Client Daten einer fremden Filiale haben möchte, so fragt er "seinen" Server und dieser erkennt, dass er die Daten aus einer anderen Filiale holen muss. Er nimmt Kontakt mit dem Master (der Master-Filiale) auf und der Master leitet die Anfrage an den gewünschten Filialserver weiter.

Das funktionierte sehr gut in den letzten Jahren.
(Hinweis: Oft haben die Client-PC's keine Verbindung nach außen, so dass sie nur über ihren eigenen Server kommunizieren können)

Jetzt möchte ich auf DataSnap wechseln. Dazu wir es aber nötig sein, das die einzelnen Filialserver sich untereinander unterhalten können.

Also die Frage: Kann ein DataSnap Server gleichzeitig auch Client eines anderen DataSnap Servers sein?

Gibt es weitergehende Infos zu diesem Thema? Ich habe bisher nur Basisinformationen gefunden. Der nächste Versuch würde sein, einfach im Server die Clientmodule zu integrieren und probieren ob es geht. Aber vielleicht hat ja jemand Tipps für mich. Ich habe erst im Frühjahr von Delphi 7 (aus 2002) auf 10.2 umgestellt und muss eine Menge nachholen.

Vielen Dank.
Thomas

mkinzler 12. Jul 2017 13:54

AW: Kommunikation mehrerer DataSnap-Server untereinander
 
Zitat:

Also die Frage: Kann ein DataSnap Server gleichzeitig auch Client eines anderen DataSnap Servers sein?
Wenn Du es so implementierst.
Zitat:

Zitat von http://docwiki.embarcadero.com/RADStudio/Tokyo/de/DataSnap_%C3%9Cberblick_und_Architektur
DataSnap ermöglicht die Implementierung von Client und Server in derselben Anwendung. Dieser Ansatz ist auch als In-Process-Konnektivität bekannt.


himitsu 12. Jul 2017 14:03

AW: Kommunikation mehrerer DataSnap-Server untereinander
 
Zitat:

Zitat von mkinzler (Beitrag 1376546)
Zitat:

Also die Frage: Kann ein DataSnap Server gleichzeitig auch Client eines anderen DataSnap Servers sein?
Wenn Du es so implementierst.

Jupp, Du baust dann einfach in deine Anwendung einen DS-Server und einen DS-Clienten ein.

Der Server kann dann Funktionen in seiner eigenen Anwendung ausführen, oder eben den Clienten benutzen und das in einem anderen Server ausführen lassen.


Zitat:

DataSnap ermöglicht die Implementierung von Client und Server in derselben Anwendung. Dieser Ansatz ist auch als In-Process-Konnektivität bekannt.
Das bezieht sich darauf, dass Server und Client in der selben EXE drin sind und sich gegenseitig aufrufen.
Der Client nimmt eine Verbindung zum Server in der eigenen EXE auf.

PS: Man kann in seiner EXE auch die EXPORTS-Klausel verwenden, wie man sie von DLLs kennt.
Verlinkung dann natürlich nicht statisch, sondern nur dynamisch.

So kann man Funktionen/Units haben, die selber keine phyischen Verbindungen (z.B. in gemeinsam genutzten Units) besitzen und erst zur Laufzeit die Verbindung (DataSnap, GetProcAddress, NamedPipe, NamedMMF, ...) herstellen.

t2000 12. Jul 2017 14:15

AW: Kommunikation mehrerer DataSnap-Server untereinander
 
Dank schon mal für die Antworten. Ich werde es probieren.

@mkinzler: Wegen der docwiki. Ich habe daraus nicht abgeleitet, dass diese Kommunikation auch mit fremden DataSnap Server funktioniert. Also ob beliebige Connect-Parameter einstellbar sind oder es einen speziellen In-Process gibt.

himitsu 12. Jul 2017 15:01

AW: Kommunikation mehrerer DataSnap-Server untereinander
 
DataSnap ist eine Client-Server-Archtektur, die ihre Verwaltungsdaten veröffentlicht.
Du baust den Server und wenn du magst, kannst du dir daraus automatisch die Client-Klassen/Units bauen lassen.

DataSnap baut eine Verbindung via TCP/IP auf.
Also über Intenet, Intranet/LAN, innerhalb eines PCs (localhost) oder gar Beides innerhalb einer Anwendung.

Mini-Beispiel: TIdTCPServer und TIdTCPClient ... die kann man in zwei getrennte oder in die selbe Anwendung einbauen und sich dann untereinander verbinden.
Anwendung 1 (Client) ==> Anwendung 2 (Server) -> Anwendung 2 (Client) ==> Anwendung 3 (Server)
Anwendung 2 wäre also sowas wie ein Proxy.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:42 Uhr.

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