Frage zu System.getproperties.

Mich würde interessieren, was dieser "ClientServer" für eine Aufgabe hat.

Wir synchronisieren in einem Projekt über 3600 Datenbanken in Schulen über eine zentrale DB und dadurch auch untereinander, als Teil eines größeren Projektes. So eine merkwürdige Architektur ist aber dafür nicht notwendig. Das Kultusministerium war immer der Meinung, dass das Internet nichts Beständiges ist und auch nur selten verfügbar. Diese Ansicht war auch teilweise berechtigt, z.B.: in ländlichen Gebieten, Baustellen. Daher musste jede teilnehmende Schule eine eigene DB bzw. Server und eine oder idR. mehrere (Rich-)Clientanwendungen haben. Die Synchronisierung der Daten wird immer durch einen Client initiiert. Daher ist es gar nicht notwendig, dass der Server der Schule selbsttätig mit der Außenwelt kommuniziert.
Alle Änderungen/Updates/usw., egal auf welcher Seite, werden in Datenpaketen (Projektjargon: ZIP-Dateien) zusammengefasst und in einem WebDAV (einziger Punkt mit erforderlichem Login außerhalb der Schule) abgelegt(natürlich nach Nutzern getrennt). Jede Seite holt sich automatisch die betreffenden Datenpakete ab und verarbeitet diese, und sendet selbst welche. Solche Datenpakete kann man sehen als würde man eine Datei speichern. Es können sehr viele Änderungen enthalten sein oder sehr wenige. Es könnte auch sein, dass ein Client die Datenpakete 3 Monate nicht abholt und dann alle auf einmal.

Es gibt noch einen Sonderfall. Es kann sein, dass ein Client die DB bzw. Server neu installieren muss. In so einem Fall wird nach der Installation ein Setup-Datenpaket vom zentralen Server angefordert und auch dieses wird im WebDAV abgelegt und kann vom Client abgeholt werden.

Das Verfahren läuft also vollständig asynchron, erfordert nur wenige Serverkomponenten, wenig Nutzerinteraktion und ist leicht zu überblicken bzw. zu warten.

Nachteil ist, dass manchmal Schulen auf Daten anderer Schulen warten, weil diese gerade keine Datenpakete senden (wollen/können). Es gibt aber einen zentralen fachlichen und technischen Support, welcher hier vermitteln kann.

Eine lokale Installation von DB's, Severn oder auch Clientsoftware kann aber idR. von einer Schule nicht sinnvoll und fehlerfrei gewährleistet werden. So sind Frust und Kosten für Vor-Ort-Support sowie Dienstleister mit der Zeit immer mehr gestiegen. Eine solche Architektur ist in Zeiten von Glasfaser und mobilem Internet nicht mehr zeitgemäß und wird deshalb durch eine reines Onlineportal abgelöst. Diese ist schneller, moderner, kostengünstiger, kann ohne Installation von Clientsoftware verwendet werden und bietet trotzdem alle Funktionen und Möglichkeiten, welche vorher vorhanden waren (und mehr).
 
@Oneixee5 Als erst mal, ich habe keine Kunden und baue seit vier Jahren an der Plattform. Das ist mein erstes Java Projekt. Ich habe meine DesktopApp ausgehend von einem Vokabeltrainer für meinen Sohn entwickelt und Sie hat den Schwerpunkt das die Schüler an jedem Platz mit PC, Lerninhalte bearbeiten kann. Ich hatte auch mal eine App, konnte das aber nicht aufrecht erhalten, weil ich nicht beides im Auge behalten kann.

Der Clientserver ist für die Schule und für alle Schulen gleich. Die Schule nutzt Ihn als Plattform ohne es direkt zu merken. Mit den einzelnen Servern will damit Komplexität vermeiden. Allerdings können die Schulen auch untereinander Daten tauschen. Die Anwendung in sich recht komplex, aber so was liegt mir mehr wie das Server organisieren, zumal ich davon wie Du ja gesehen hast keine Ahnung von bis zum Ende schlüssigen Konzepten habe. Das führt dazu das ich immer wieder alles umbauen muss. Mir ist es jetzt wichtig das Projekt komplett fertig zu bekommen und zwar so das es wirklich gut ist.

Und nun hatte ich gedacht ich wäre fertig. Das war ganz schön enttäuschend. Na ja ist ja nicht das erste Mal das ich alles wieder umgraben muss.
Hat bisher immer hingehauen und am Ende war ich zufrieden.

Die Frage ist nun, ist mein neues Konzept umsetzbar, oder gibt es Fehler die mir erst nach vielen Stunden Arbeit auf die Füße fallen.
 
Ich kann dir nur raten, lass diese ClientServer ganz weg. Es macht für den Client keinen Unterschied aber die Architektur insgesamt einfacher.
 
Das ist eines meiner Probleme.

Ich kann nicht einschätzen ab wann dies notwendig würde, da ich keine Erfahrung mit der Leistungsfähigkeit eines Servers, den es dann ja auch noch in verschiedenen Ausbaustufen gibt, habe.

Ich hatte gedacht, wenn ich es halt nicht einschätzen kann, dann mache ich es skalierbar.

Aber Ihr habt doch auch bei 3.600 Schulen mindesten 400.000 Schüler die auf eure Server zugreifen
und dabei Daten herunterladen und eure Datenbank abfragen.

Wie regelt ihr das ?
 
Ansonsten hier noch ein Hinweis auf die beiden Grundregeln für Optimierungen:

1. Tun Sie es nicht.
2. (Nur für Experten): Tun Sie es noch nicht.

M.A. Jackson
mach doch erstmal dass es funktioniert und die architektur passt ... dann schau mal weiter

wenn die architektur passt kannst du änderungen liechter machen wenn alles abschmiert
 
Unsere Anwendungen sind nicht für Schüler, sondern für Lehrer/Verwaltung. Aber ja es werden u.a. auch über 400T Schüler erfasst.
 
Das habe ich vor.

Ich möchte mich noch mal bedanken, für all die Denkanstöße und Hilfen bei diesem Thema
was ja nicht so nah an der Javaprogrammierung ist.

Also noch mal, vielen Dank für euere Hilfe.
Ich habe jetzt erst mal viel zu tun, tut immer weh solche Dinge die überall hineingreifen wieder abzureißen.
 
deswegen solltest du auch in modulen denken ... vllt solltest du dich mit software engineering mal auseinander setzen weil da is es genau das ziel sowas zu verhindern
 
Ich hatte gedacht, wenn ich es halt nicht einschätzen kann, dann mache ich es skalierbar.
Zunächst, es gibt verschiedene Möglichkeiten für https://de.wikipedia.org/wiki/Skalierbarkeit. Es ist aber oft so, dass die für einen Serverdienst benötigte Leistung überschätzt wird. Ein Server hat ja im Prinzip nicht viel zu tun -> Anfrage annehmen, Daten Speichern, Daten abrufen, Antwort ausliefern. Also alles schnell einfach und effizient. Für einen privaten/halb kommerziellen Service würde ich dir raten auf einen Dienst wie Amazons AWS zurückzugreifen, dort kann automatisch skaliert werden und du musst nur bezahlen was du verbrauchst.
 

Zurück
Oben