Hallo,
ich überlege derzeit, ein größeres Programm in eine echte Client-/Server-Architektur einzubauen. Das Programm besteht aus einem Hauptprogramm mit mehreren Modulen/Plugins. Die Datenspeicherung übernimmt eine
MySQL-Datenbank.
Was ist denn daran derzeit "nicht" Client-Server?
Da das Programm und dessen Plugins hauptsächlich mit Daten aus der
DB arbeiten, benötigt jedes Programmteil eine Datenbankverbindung und muss mit dem
DB-Server kommunizieren können.
Das hat natürlich zum Nachteil, dass pro Benutzer mehrere Datenbankverbindungen (eine pro Programmteil) geöffnet wird. Weiterer Nachteil ist, dass es zu schwer abfangbaren Problemen im Programm kommt (keine Reaktion etc.), wenn die Verbidung zur Datenbank verloren geht. Dies kann durch remote-Zugriff via VPN etc. öfter mal passieren.
Ich habe ein ähnliches Programm-Konzept mit meinem WWS: ein Hauptprogramm und dazu 18 Module, wo jedes seine eigene Datenbankverbindung hat. Das Ganze läuft schon seit über 14 Jahren auf über 800 Installationen. Bisher konnte ich diese von dir angesprochenen Nachteile nicht nachvollziehen. Entweder die Datenbank und der Server kann das, oder irgendwas läuft falsch.
Abgesehen von den vermeintlichen Nachteilen hat das Prinzip auch (daten-)sicherheitstechnische Vorteile. Wenn ein Client (ein Modul auf einem PC im Netz) abraucht (nicht mehr reagiert) dann hat das auf die übrigen Verbindungen überhaupt keinen negativen Einfluss. Der Server trennt diese einzige Verbindung, ohne dass die anderen Clients davon was mitbekommen.
Daher habe ich mir überlegt, einen Windows-Dienst zu schreiben.
Also einen Dienst der den Datenbank-Dienst (nichts anderes ist ja (d)eine Datenbank) mit Daten "füttert". Und wenn die CS-Verbindung abraucht, dann raucht die (Netzwerk-)Verbindung deines Dienstes zu den Clients auch ab. Ich kann da beim besten Willen keinen Vorteil erkennen. Höchstens den Schluss daraus ziehen: Wenn deine Datenbank und/oder deren Clients mit Verbindungsabbrüchen bis hin zu Stromausfällen im laufenden Betrieb nicht richtig umgehen können, dann liegt das Übel nicht am System, sondern an der Datenbank, oder dessen Programmierer der die Möglichkeiten der Datenbank nicht ausschöpft.
Sorry, gar nichts.