Das Tool muss folgende Anforderungen haben:
<br>
1. Multiuser-fähig ohne Daten zu zerstören
2. Synchronisieren mit Erkennung von beidseitigen Änderungen und
2a Mergen falls erforderlich, am besten mit Liedvorschau
3. Serverfähig sein, aber
4. Trotzdem lokale Kopien erhalten, mit denen OpenLP laufen kann.
<br>
Das Verfahren würde dann so aussehen:
<br>
- OpenLP wird über den Wrapper gestartet. Dieser synchronisiert zuerst die lokale Datenbank mit dem Server (falls möglich), startet dann OpenLP und verschwindet wieder im Hintergrund.
- Sobald OpenLP geschlossen wird, wird die Datenbank zurück synchronisiert (falls möglich).
- Falls keine Verbindung besteht, wird einfach beim nächsten Start synchronisiert.
- Wird OpenLP ohne das Tool gestartet, müssen Änderungen ebenfalls einwandfrei erkannt und synchronisiert werden.
- Falls während des Betriebes von OpenLP die Serverdatenbank durch den Multiuser betrieb geändert wird, muss das behandelt und evtl. gemerged werden.
<br>
#warum während des Betriebes? Warum nicht einfach die DB sperren, während OpenLP läuft? Ganz einfach, was wäre, wenn jemand den PC anlässt und das Tool läuft, aber z.B. schlafen geht? Niemand könnte mehr daran arbeiten, weil die DB gesperrt ist. -> Sperrzeiten so kurz wie möglich halten.
<br>
- Es muss erkannt werden, an welchen Datensätzen änderungen vorgenommen wurden, um den Benutzer nicht mit >9000 Liedern zu Bombadieren, wovon nur eines geändert wurde.
- Die Lieder sollten übersichtlich ausgegeben werden: In der DB steht XML. Auch die Reihenfolge der Verse sollte beachtet werden.
<br>
Hohe Anforderungen :) Mal schauen, was die nächsten Wochen daraus wird. Geschrieben wird das ganze allerdings nicht Plattformunabhängig, da ich .NET und WPF benutzen werde. Da .NET aber in MONO ein unabhängiges äquivalent hat, und WPF sehr strikt Design von Logik trennt, wird die Portierung auf andere Plattformen mit hoher wahrscheinlichkeit ohne größere Schwierigkeiten möglich sein.