AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Datengitter in einem LAN synchron halten
Thema durchsuchen
Ansicht
Themen-Optionen

Datengitter in einem LAN synchron halten

Ein Thema von alzaimar · begonnen am 14. Nov 2006 · letzter Beitrag vom 14. Nov 2006
 
markusj

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

Re: Datengitter in einem LAN synchron halten

  Alt 14. Nov 2006, 23: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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:28 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz