![]() |
Client-Server Datenaustausch
Hallo,
seit langer Zeit verwalte ich ein Windows-Programm, indem es hauptsächlich darum geht, dass die Anwender spezielle Daten ihrer Kunden erfassen und Auswertungen erstellen. Dies funktioniert so, dass die Endkunden papierne Formulare ausfüllen, in denen bei allen Fragen eine der vorgegebenen Antworten angekreuzt werden muß. Anschließend müssen Mitarbeiter der Anwender diese Antwort-Formulare mit dem Programm in die Datenbank eintragen, was umständlich und aufwendig ist. Die gewünschten Auswertungen kann man am Ende einfach erstellen. Inzwischen besteht der Wunsch, den Umweg über papierne Formulare nach Möglichkeit zu vermeiden. Dazu sollten die Endkunden die gewünschten Daten mit einer App auf ihrem Smartphone erstellen und an den jeweiligen Kunden übertragen können. Damit müssten die Mitarbeiter unserer Anwender nur noch Antwortdateien importieren, was sehr viel einfacher ist. Eine entsprechende App. habe ich mit Firemonkey weitestgehend erstellt und auf meinem eigenen Smartphone mit Android-Betriebssystem via USB-Kabel getestet. Die App funktioniert gut, das Hauptproblem ist derzeitig der Datenaustausch. Die App muß Konfigurationsdateien für die Formulare herunterladen und Antwortdateien der Endkunden hochladen können. Das Hauptprogramm muß lokal erstellte Konfigurationsdateien hochladen und Antwortdateien herunterladen und löschen können. Ich stelle mir vor, dass der Anwender irgendwo auf seinem Server ein spezielles Verzeichnis einrichtet, das Unterverzeichnisse für die Konfigurations- und Antwortdateien enthält, und dass der Datenaustausch über ein spezielles, noch zu entwickelndes Programm ermöglicht wird. Leider weiß ich nicht, wie man so etwas organisiert und welche Komponenten man am besten dazu benutzt. Bei Download habe ich Erfahrung im Zusammenhang mit meinen Programm-Updates, wobei ich TNetHTTPClient benutze. Beim Upload habe ich gerade Client-Server-Demoprogramme mit TIdTCPClient/TIdTCPServer erstellt, da funktioniert der Upload von Dateien aber auch noch nicht korrekt. Ein Problem sind auch noch die Firewalls. Wir sind ja wohl alle zufrieden damit, dass unerlaubte Zugriffe unterbunden werden, aber es müssen auch irgendwie Möglichkeiten existieren, mit denen legale Zugriffe programmiert werden können. Ich habe zu dem Thema schon viel gegoogelt und auch bei unserer IT zart angefragt, ohne dass ich eine Lösung gefunden habe. Bei den Dateien handelt es sich um einfache und kleine Textdateien, bei Delphi wird die Version XE 10.4 benutzt. |
AW: Client-Server Datenaustausch
Für mich klingt das so, als wäre man mit einem REST-Server ganz gut bedient. Dann braucht man auch nicht zwingend eine FMX-App, ein handelsüblicher Webbrowser genügt als Client. Dazu muss der Server zwar öffentlich erreichbar sein, das ist bei Deiner Lösung aber auch nicht anders. Ggf. nach Anmeldung durch den Endkunden könnten dann die Fragen und die zugehörigen Antworten direkt aus der Datenbank gelesen und an den Client übertragen werden (üblicherweise im JSON-Format). Welche Antwort ausgewählt wurde, wird dann wieder an den Server zurückgesendet und die nächste Frage samt Antworten abgefragt, der Server trägt die Antwort direkt in die Datenbank ein ohne irgendwelche Zwischenprogramme.
Für REST mit Delphi gibt es mittlerweile einige Frameworks, z.B. mORMot, DMVC oder TMS WebCore (zufällige Auswahl ohne Wertung und Anspruch auf Vollständigkeit). |
AW: Client-Server Datenaustausch
Wir haben für solche Szenarien den RelayServer als Open-Source Lösung entwickelt:
![]() Zentral läuft irgendwo der RelayServer. Das kann auf einer gemieteten VM oder in der Cloud sein. Bei den Endkunden vor Ort läuft jeweils ein Connector. Der Connector verbindet sich mit einer ständigen Realtime-Verbindung mit dem Server. Dann können HTTP-Requests an den RelayServer geschickt, und dabei ein Connector gezielt adressiert werden. Der Request geht dann über die Realtime-Verbindung zum Connector, der macht den gleichen Request lokal gegen eine HTTP-API und die Antwort wird dann wieder via dem RelayServer an den Client gesendet, der die ursprüngliche Anfrage geschickt hat. Somit müssen am Ziel keine Firewalls konfiguriert, Portfreigaben eingerichtet und irgendwelche DynDNS-Sachen registriert werden. Es sind ausschliesslich die Endpunkte im lokalen Netz erreichbar, die explizit im Connector freigegeben sind und der Zugriff auf den RelayServer kann auch über so ziemlich alle gängigen Authentication-Methoden abgesichert werden. |
AW: Client-Server Datenaustausch
Hallo,
danke für die Antworten. @DeddyH: Diese Möglichkeit scheidet leider aus. Es müssen diverse sehr unterschiedliche Layouts abgebildet werden und das ist ziemlich kompliziert. Es geht hier auch nicht darum, Antwort-Statistiken zu erstellen, sondern die jeweiligen Antworten sollen zeitnah graphisch dargestellt werden. @Phoenix: Diese Möglichkeit werde ich in Betracht ziehen. Ich verstehe es aber noch nicht so richtig und ich weiß auch nicht, ob das für uns eine Lösung ist. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:15 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