Einzelnen Beitrag anzeigen

markusj

Registriert seit: 9. Dez 2005
Ort: Kandel
408 Beiträge
 
#8

Re: Datengitter in einem LAN synchron halten

  Alt 14. Nov 2006, 22:00
Vorschlag 1: Lock nur wenn was geändert wird -> Änderung nur möglich, wenn gerade nicht gelockt ist.
Wenn ein PC Lockt, teilt er das der Workstation ja dann mit ... => Serverkontakt nur beim Ändern des Datensatzes.

Vorschlag 2: UDP ist denkbar ungeeignet, wenn man eine Bestätigung braucht, verschlucken wird nämlich nicht gemerkt ... dann lieber gleich TCP.

Man muss ja nicht gleich Locken, sondern erst, wenn man in den Edit-Mode geht. Solange die anderen nicht gemeldet haben, dass sie diese Zelle bearbeiten, kann man ja einfach durchrauschen. Der Server sorgt nur dafür, dass keine Überschneidungen auftreten. Er übernimmt die Mitteilung an die anderen Clients nicht.
Sobald man eine Zelle bearbeiten will, fragt man den Server, ob niemand anderes gerade diese Idee bekommen hat.
Wenn nein, Lockt der Server intern für den Clienten, und dieser Teilt das den anderen mit.
=> Internes Register bei den Clients, welche Zellen gerade gelockt sind. Alle anderen sind prinzipell frei.
Will der User dann was ändern, wird erst beim Server nachgefragt, dann ein Lock gesetzt.
(Das Locken ist ja der einzige zeitkritische Vorgang, bei dem das Serverurteil nötig ist ... bei normaler Betrachtung reicht die Meldung der anderen Clients mit einem Zeitversatz von vielleicht 0,1 Sekunden.

mfG

Markus

EDIT: Bei Unlock sendet der Bearbeiter allen anderen Workstations + Server den neuen Wert. Erst wenn dieser angekommen ist, ist der Unlock vollständig. Dieser Schritt verringert die Serverbelastung und sichert die Datenintegrität.

EDIT: Die Servervariante ist noch deutlich schneller, wie die P2P-Anfrage an alle ... dann muss man nämlich bei jedem Kästchen alle Informieren ... und auf deren Antwort warten. So hat man einen Zeitversatz von einer Ping-Time*X (X=5 oder So), und Transferiert dabei einmal die Information "Möchte Zelle XYZ BLocken" und die Antwort "Belegt/Nicht Belegt".
Wärend man die Zelle dann bearbeitet, kann man die anderen Clients darüber informieren.

EDIT: Die Belastung des Servers/der Server besteht ja nur noch darin, die Locks zu verwalten, sowie die Änderungen an den Daten mitzuprotokollieren/übernehmen.
Die Clientverwaltung erledigt sich fast von alleine, es muss nur eine vollständige Clientliste geführt und bei Bedarf verteilt werden. Jegliche Information aller Clients über den Lockstatus entfällt, (von Neuangemeldeten Clients mal abgesehen), diese Information wird im laufenden Betrieb von den Clients selbst untereinander weitergegeben.
Nur wenn selbst jemand Locken will, wendet er sich an den Server ... den Rest macht er Nebenher.

Dazu kommt noch die Möglichkeit einer Rechteverwaltung: Lock Aufheben darf nur der Ersteller (über IP Identifiziert, oder ein Admin via Server) oder der Server bei einem Time-Out.
Markus
  Mit Zitat antworten Zitat