Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Simpler Application Server (https://www.delphipraxis.net/164646-simpler-application-server.html)

Linor 23. Nov 2011 10:31

Simpler Application Server
 
Hallo Zusammen,

ich habe zur Zeit eine Anwendung die als Client/Server programmiert ist. Als ein (Rich)-Client der sich im LAN an eine Datenbank anmeldet und damit arbeitet...

Mein anliegen ist jetzt das ich von "irgendwo" per TCP auf diesen Server zugreifen möchte, oberste Intention ist der Zugriff von einem PC im Internet auf die Datenbank. Dabei werfen sich eine Menge Fragen und auch Erfahrung auf:

- Datenbank-Server-Port freischalten: Nix gut! Einmal in Bezug auf Sicherheit und Tests haben gezeigt das die Latenzzeiten den Client alles andere als brauchbar machen...

- Dann benötigt der Client auch Dateien aus dem lokalen Netz von einem FileServer: Freischaltung ist unmöglich!

- VPN Verbindungen sind eine alternative, aber der administrative Aufwand ist zu hoch und je nach Leitung auch nicht praktikabel, wieder mal die Latenzzeiten...

Als denke ich an einen Application Server, habe da auch schon viele Sächelchen gefunden, Midas, DataSnap, RemObjects etc etc. Alle diese Teile würden eine komplette Neuprogrammierung des Clients erfordern, da die Business-Logiken ja neu definiert werden um App-Server abgelegt werden müssten. Das ganze dann noch im Zusammenspiel mit dem Rich-Client.

Der nächste Gedanke also: Ok, fange einen neuen und abgespeckten Client an, der mit "irgendwas" kommuniziert, und genau darum geht es mir :wink:

Da ich aber keine fertige AppServer-Lösung, unter anderem wegen des finanziellen Aufwandes, nehmen möchte wollte ich einen einfachen Server selbst programmieren, Anforderungen (nach den ersten Überlegeungen):

- Multithreaded
- Robust Robust Robust! Vor allem in Sachen Verbindungsstabilität...
- Soll als Dienst laufen

Vom reinen Ablauf Stelle ich mir das so vor: Der Client wird gestartet und Verbindet sich mit dem Server auf Port XYZ. Setzt einen "Befehl" ab und bekommt eine Antwort, also in etwas wie bei einem RPC. Dazu habe ich die nun für mich wichtigsten Fragen:

- Sicherheit: Würde es reichen die Daten mittels AES zu verschlüsseln? Oder ist da sowas wie SSL und Zertifikate notwendig? Ich denke eine Art Zertifikat wird man eh benötigen um vom ersten Byte der Übertragung an gesichert zu arbeiten, sonst müsste ja erst ein Handshake stattfinden der "erschnüffelt" werden könnte?

- Komponenten: Welche Komponenten sind dafür notwendig ohne sich großartig um die reine Kommunikation kümmern zu müssen. Also einfachsterweise so was Client.Connect, Client.SendCommand, Client.WaitForAnswer und Client.ReceiveData. Auf dem Server Server.OnConnect, Server.OnCommand, Server.SendAnswer, Server.OnDisconnect.

- Protokoll: Dachte an Senden von Command-Strings die der Server parst, und als Ergebis eine XML-Datei liefert, die unter anderem auch Binärdaten als UUencoded liefert. Hauptsache wird die Übertragung von SQL-Befehlen, oder entsprechende Synomyme, und das liefern eines ResultSet, in welcher Form auch immer. Ist XML gut dafür? Der Overhead für das generieren könnte groß sein? TQuery > XML...

So, das war jetzt recht viel, aber ich denke man gut erkennen worauf ich hinauswill? Bitte keine Antworten wie "TSocket verwenden" oder "Nutze Indy", ich weiss das es all diese Komponenten gibt, man sich aber sehr sehr tief darin einarbeiten muss um einen wirklich stabilen Server zu erhalten :roll:

taveuni 23. Nov 2011 10:49

AW: Simpler Application Server
 
Zitat:

Zitat von Linor (Beitrag 1137462)
Bitte keine Antworten wie "TSocket verwenden" oder "Nutze Indy", ich weiss das es all diese Komponenten gibt, man sich aber sehr sehr tief darin einarbeiten muss um einen wirklich stabilen Server zu erhalten :roll:

Ja eben. Du hast's selbst weiter oben erwähnt. RemObjects nimmt Dir alles ab.
Du kannst Dich aufs wesentliche konzentrieren. Wir setzen RemObjects seit Jahren ein.
Nicht zu vergessen: Gibts auch für .net und neu auch für Ios.

Sir Rufo 23. Nov 2011 10:59

AW: Simpler Application Server
 
Genau das geht auch mit mORMot

mquadrat 23. Nov 2011 13:11

AW: Simpler Application Server
 
Webservices. Ich würde da auf SOAP mit WS* gehen. Wenn die Daten sensitiv sind, dann Authentifikation mit Zertifikaten.

Als Alternative würde ich aber auch noch Terminal Server mit Remote Application in den Raum werfen. Dann brauchst du auch keinen neuen Client schreiben.

grl 23. Nov 2011 14:54

AW: Simpler Application Server
 
Hab mal eine Zeitlang mit kbmMW rumgemacht. Ging extrem gut wenn man den Dreh mal raushatte und der Wechsel von "normalem" TDataset dorthin war recht einfach.

Da ich eigentlich weg bin aus der Windows-Welt hab ich das dann nicht mehr so beachtet, nutze aber immer noch kbmMemtable vom selben Hersteller.

Gruß
Luggi

daywalker9 23. Nov 2011 15:06

AW: Simpler Application Server
 
Zitat:

Zitat von taveuni (Beitrag 1137469)
Nicht zu vergessen: Gibts auch für .net und neu auch für Ios.

Auch für Objective-C/XCode


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