Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#27

AW: Konzepte für gemeinsames Arbeiten an einer Datei ohne Server

  Alt 8. Mär 2019, 22:42
Ehrlich gesagt war ich weniger interessiert an Gedanken um Viren, pro und contra von lokaler oder Server-Lösung, mir ging es wirklich nur darum, ob da jemand sich schon mal kluge Gedanken gemacht hat um so eine Art technisches Protokoll, bzw. was man zu beachten hat.

Z.B: Öffnet ein User A die Datei, macht es Sinn, dann in die Datei eine Info aufzunehmen, dass er die Datei geöffnet hat, so dass User B darüber unterrichtet wird. Schreibt man es dann in die Datendatei selber oder in eine zusätzliche Datei "ManAtWork.info"

Ich glaube, eine solche Lösung zusätzlich anzubieten wäre gut. Denn einige Leute (die evtl. nicht so IT-Affin sind) erwarten quasi, dass auch mehrere Anwender zur gleichen Zeit mit einer Datei arbeiten können.

Was mir im Moment so vorschwebt wäre folgendes (sollte noch vorweg schicken, dass die Datei immer vollständig in den Arbeitsspeicher geladen wird, um sie zu bearbeiten):

User A öffnet die Datei und arbeitet an der Datei im "Gruppenmodus" (quasi neue Variante zum "Netzwerkmodus" und "Einzelplatzmodus").

* Im Gruppenmodus wird jede Änderung an der Datei sofort gespeichert.

* Nun öffnet User B die Datei, letztlich im aktuellen Zustand, da ja jede Änderung von User A sofort gespeichert.

* Nun macht User A eine weitere Änderung an der Datei, die direkt gespeichert wird.

* Programm des Users B bekommt das sofort mit, weil es vom System über die Änderung der Datei informiert wird (zumindest unter Windows ja kein Problem).

* Darum lädt User B die geänderte Datei temporär in den Arbeitsspeicher und das Programm vergleicht die einzelnen Datensätze, lokalisiert den geänderten Datensatz (kein Problem, für jede Änderung gibt es einen Timestamp je Datensatz) und übernimmt die Änderung in den eigenen geladenen Datenbestand.

* Wenn User B nun eine Änderung vornimmt, läuft es genau wie zuvor geschrieben, halt nur umgekehrt (User A wird unterrichtet und aktualisiert seinen Datenbestand).

So kann das ja eigentlich Lustig hin und her gehen, der einzige evtl. problematische Fall wäre die Situation, wo beide Anwender zu gleichen Zeit am gleichen Datensatz arbeiten. In der Netzwerklösung lasse ich das nicht zu, da wird die Bearbeitung sofort gesperrt, wenn ein User anfängt einen Datensatz zu bearbeiten.

Es wäre also zu überlegen, ob man sich hier ein ersatzweises Locking ausdenkt oder ob man die Inhalte der Felder automatisch "merged" und nur, wenn die User am gleichen Feld was verändert haben, einen Konfliktlösungsdialog anzeigt (was nicht das Problem wäre, da ich sowieso schon eine Abgleichfunktion im Programm habe, wenn Außendienstmitarbeiter offline eine Datei bearbeiten und Änderungen hinterher wieder ins Netz einspielen wollen).

Hier habe ich halt keine so richtige Idee für ein ersatzweises locking für einen zu bearbeitenden Datensatz und glaube auch letztlich, dass es zuviel Aufwand wäre hier was einzuführen. Denn wenn nur 2-4 Leute in einer kleinen Firma mit einer Adressdatei arbeiten (oder ein einzelner User von verschiedenen Rechnern aus), wie oft wird das schon vorkommen, dass jemand zur gleichen Zeit ausgerechnet am gleichen Feld was ändert?

Geändert von Harry Stahl ( 8. Mär 2019 um 22:49 Uhr)
  Mit Zitat antworten Zitat