Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Datasnap über Dritt-Server (https://www.delphipraxis.net/177103-datasnap-ueber-dritt-server.html)

braunbaer 16. Okt 2013 12:28

Datasnap über Dritt-Server
 
Hallo Zusammen,
um mit Datasnap zu arbeiten muss von aussen ein Port auf den Datasnapserver geöffnet werden.
Einige meiner Kunden hosten ihre ERP-Lösung, mit der meine App für die Lagerverwaltung und Aussendienst (iOS, bald auch Android) kommuniziert, in Rechenzentren.Diese wollen aber verständlicher Weise keinen Port öffnen.

Meine Idee ist nun den umgekehrten Weg zu gehen.

Der Datasnap-Server im Rechenzentrum stellt die Verbindung zu einem Server in der Cloud über Port 80 her (Port 80 ist nach aussen offen).
Auf diesem Cloud-Server läuft wiederum ein Datasnap-Server, mit dem sich die Mobilen Einheiten verbinden können.
Die Kommunikation läuft dann also über Mobile-Einheit - CloudServer - KundenServer und umgekehrt.

Durch so eine Lösung könnte ich die Problematik des geöffneten Ports lösen.
Weiters ist seitens des Kunden keine fixe IP-Adresse notwendig.

Leider habe ich für diese Logik noch keinen Lösungsansatz gefunden.
Ich hoffe, dass das mit den Datasnap-Komponenten in Delphi (noch XE4 - bald XE5) machbar ist.

Bin schon auf Eure Lösungsvorschläge gespannt.
Danke für jeden Tipp!!

Gebhard

Darlo 16. Okt 2013 12:34

AW: Datasnap über Dritt-Server
 
Lass doch den Datasnap-Server über Port 80 oder 8080 laufen....

himitsu 16. Okt 2013 12:52

AW: Datasnap über Dritt-Server
 
Dann muß aber dieser Port ach innen offen sein, damit die mobilen Geräte den Server dort beim Kunden ansprechen können.
Und grade das wollte der Kunde nicht.

Nja, im Grunde kommt da in den Kundenserver kein DataSnap-Server, sondern DataSnap-Client rein, denn schließlich gehen dann die Anfragen von ihm aus.
Genauso wie in die mobilen Geräte ein DataSnap-Client reinkommt
und bei euch in der Cloud ist der eigentliche DataSnap-Server.

Zum Kunden-Server (welcher nun eigentlich ein DataSnap-Client ist), müßtest du entweder einen Callback einrichten, damit der CloudServer den Server-Clienten benachrichtigen kann, wenn von den mobilen Clienten eine Anfrage kommt.
Oder der Server-Client des Kunden muß euren Cloud-Server ständig pollen, um anzufragen, ob ein Client grade was will, um es dann abzuarbeiten.

Wenn beim Kunden firmenintern ein DataSnap-Server benötigt wird, dann brauchst im Kundenserver dann womöglich wieder eine Verbindung von diesem DS-Clienten, zum eigentlichen DS-Server des Kunden,
oder ihr habt die Zugriffe auf's Kundensystem dann doppelt (einmal im firmeninternen DS-Server und für Außen nochmel in dem DS-Clienten, der mit dem Cloud-Server redet)




Aber ganz im Ernst, wenn der Kunde eine Verbindung nach von außen will, dann sollte er auch einen Port dafür öffnen.
Port 80 nicht, aber statt Port 211 kannst du dennoch einen anderen Port nutzen.
Aber du solltest im DataSnap unbeding eine Authentifizierung und am Besten noch eine verschlüsselte Datenübertragung nachrüsten.




Wenn der Kunde aber nicht ganz soviel Angst hat, dann könnte man auch einen anderen Weg gehen, welcher etwas einfacher ist, als dein geplantes Vorgehen.

Im Kundenserver wird Port 211 (oder ein Anderer) aufgemacht und dort läuft der DataSnap-Server,
aber die Zugriffe sind nur für die IP eurer Cloud offen. (die DS-Verbindungen aber immernoch verschlüsseln)

Bei euch, in der Cloud, läuft ein DataSnap-Server mit einem DataSnap-Clienten dran.

Mobiles Gerät spricht euren Cloud-DataSnap-Server an, der leitet die Anfrage direkt an den DataSnap-Clienten in eurer CloudServerApp weiter, welcher die Anfrage direkt an den Kunden-DataSnap-Server weiterreicht.

> Der Vorteil hier ist, daß man dann auch problemlos den Cloudserver weglassen kann und, wenn der Kunde weniger Angst hat, dann können die mobilen Geräte direkt mit dem Kundenserver reden.

braunbaer 16. Okt 2013 13:14

AW: Datasnap über Dritt-Server
 
Am Kunde liegt es nicht, sondern am Rechnenzentrumsbetreiber. Der öffnet keinen Port von aussen. Punkt.
Der sagt einfach: macht es wie Teamviewer - mobiles Gerät und Datasnapserver melden sich am Cloudserver an und schon läufts!
Daher kommt auch die Idee mit dem Dritt-Server in der Cloud.

braunbaer 16. Okt 2013 13:19

AW: Datasnap über Dritt-Server
 
Zitat:

Zitat von Darlo (Beitrag 1232171)
Lass doch den Datasnap-Server über Port 80 oder 8080 laufen....

von aussen ist alles dicht!

Union 16. Okt 2013 14:18

AW: Datasnap über Dritt-Server
 
Und lass ihn als ISAP-Dll laufen wenn Du mehr als 10 Benutzer erwartest ;)

himitsu 16. Okt 2013 14:49

AW: Datasnap über Dritt-Server
 
Wie sieht es eigentlich mit sowas wie einem VPN-Kanal aus, der vom KundenServer zum CloudServer aufgebaut wird?

So würde der DataSnap-Server in der Cloud laufen und könnte "direkt" auf die Resourcen (Datenbank, Netzlaufwerke) des Kunden zugreifen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:13 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