AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Kommunikation mehrerer DataSnap-Server untereinander
Thema durchsuchen
Ansicht
Themen-Optionen

Kommunikation mehrerer DataSnap-Server untereinander

Ein Thema von t2000 · begonnen am 12. Jul 2017 · letzter Beitrag vom 12. Jul 2017
Antwort Antwort
Benutzerbild von t2000
t2000

Registriert seit: 16. Dez 2005
Ort: NRW
232 Beiträge
 
Delphi 12 Athens
 
#1

Kommunikation mehrerer DataSnap-Server untereinander

  Alt 12. Jul 2017, 14:42
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
Thomas
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Kommunikation mehrerer DataSnap-Server untereinander

  Alt 12. Jul 2017, 14:54
Zitat:
Also die Frage: Kann ein DataSnap Server gleichzeitig auch Client eines anderen DataSnap Servers sein?
Wenn Du es so implementierst.
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#3

AW: Kommunikation mehrerer DataSnap-Server untereinander

  Alt 12. Jul 2017, 15:03
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (12. Jul 2017 um 15:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von t2000
t2000

Registriert seit: 16. Dez 2005
Ort: NRW
232 Beiträge
 
Delphi 12 Athens
 
#4

AW: Kommunikation mehrerer DataSnap-Server untereinander

  Alt 12. Jul 2017, 15:15
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.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.056 Beiträge
 
Delphi 12 Athens
 
#5

AW: Kommunikation mehrerer DataSnap-Server untereinander

  Alt 12. Jul 2017, 16:01
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:43 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