diff --git a/README.md b/README.md index a7e8f6e8..3ac7d68a 100644 --- a/README.md +++ b/README.md @@ -265,6 +265,43 @@ Alle Daten werden lokal pro Benutzer gespeichert: Self-signed Zertifikate der Starface werden automatisch akzeptiert. Es ist kein manueller Zertifikat-Import erforderlich. +### Mehrplatz-Betrieb / Sync-Sperre + +Mehrere Arbeitsplaetze koennen dasselbe Starface-Adressbuch pflegen. Damit sich +gleichzeitig laufende Syncs nicht ins Gehege kommen (Dubletten, ueberschriebene +Aenderungen), gibt es zwei Schutzebenen: + +**1. Lokal (immer aktiv):** Auf einem PC kann nie mehr als ein Sync gleichzeitig +laufen. Startet der Auto-Sync-Timer, waehrend ein manueller Sync laeuft (oder +umgekehrt), wird der zweite Lauf uebersprungen. Atomar per `Interlocked`. + +**2. Clientuebergreifend (optional):** In den Einstellungen kann ein +**gemeinsames Verzeichnis** (Netzlaufwerk oder UNC-Pfad wie +`\\server\freigabe\sync`) hinterlegt werden. Funktionsweise: + +- Beim Start eines Syncs legt der Client dort die Datei **`starface-sync.lock`** + an - **atomar** ueber `FileMode.CreateNew`: das Anlegen schlaegt fehl, wenn + die Datei bereits existiert. Damit kann immer nur ein Client gleichzeitig die + Sperre halten. +- Die Datei wird waehrend des gesamten Syncs **offen gehalten** und am Ende + wieder **geloescht**. Sie existiert also nur, solange tatsaechlich gerade + synchronisiert wird (bei kleinen Adressbuechern nur sehr kurz). +- Inhalt der Datei: `Rechnername | Benutzer | UTC-Zeitstempel | Prozess-ID` - + damit man sieht, wer gerade synct. +- Findet ein anderer Client die Sperre vor, **wartet** er (Abfrage alle 3 + Sekunden, bis zu 2 Minuten) und synct erst danach. Wird die Sperre nicht frei, + wird der Lauf uebersprungen und beim naechsten Intervall erneut versucht. +- **Absturzsicher:** Stuerzt ein Client mitten im Sync ab, gibt Windows das + Datei-Handle frei. Die verwaiste Lock-Datei gilt nach 15 Minuten als veraltet + und wird vom naechsten Client uebernommen. Lebt der Halter noch, scheitert das + Loeschen am offenen Handle - die Sperre bleibt also korrekt bestehen. +- Ist **kein** Verzeichnis konfiguriert oder es ist nicht erreichbar, laeuft der + Sync ohne diese Sperre weiter (die lokale Sperre bleibt aktiv). + +> Hinweis: Im Mehrplatz-Betrieb sollte die **bidirektionale** Sync-Richtung +> verwendet werden. Die Ein-Richtungs-Modi ("Ersetzen") wuerden die von anderen +> Arbeitsplaetzen gepflegten Kontakte loeschen. + ## Lizenz Proprietaer - Alle Rechte vorbehalten.