Hi,
ich habe da mal einige Fragen zur Anwendungsmöglichkeit von XML.
Ich habe eine XML Datei mit einem Frontend, über welches der Benutzer Daten einsehen kann.
Jetzt soll das Ganze so verwendet werden, dass mehrere Benutzer darauf Zugriff haben und auch Einträge editieren können.
Ist das mit XML überhaupt möglich?
Geteilter Zugriff wobei geöffnete Knoten (wenn ein Anwender diesen gerade einsieht) für die anderen zur Bearbeitung zu sperren?
Aktuallisierung aller Arbeitsplätze wenn ein Anwender etwas verändert hat?
Gibt es sowas wie Replikation?
Das Frontend ist in VB.NET entwickelt.
Ich denke das eine oder andere könnte man Programmiertechnisch in VB lösen, oder gibt es Wrapper, die einem die Arbeit abnehmen?
Danke,
Andre
Hallo Andre,
grundsätzlich ja, aber.
Egal in welcehr Form Daten „zentral“ abgelegt werden ist der Zugriff bei mehreren Usern zu organisieren.
Ich lege xml Fragmente in einer Db ab. Wird der Datensatz in die Anwendung zur Bearbeitung geladen setze ich eine Sperre auf DB Ebene (Eintrag in separates Feld). Wird die Bearbeitung beendet wird die Sperre aufgehoben. Für den Fall, dass die Anwendung abbricht habe ich die Möglichkeit (Admin
) alle Sperren aufzuheben.
Ich lasse mich da gerne belehren, aber imho: Wird ein Datensatz zur Bearbeitung geöffnet, muss der „Server“ das wissen und dementsprechend die Bearbeitung durch andere ablehnen. Das muss also dort „protokolliert“ werden.
In deinem Fall würde ich (spontane Idee) allen relevanten Knoten ein Attribut „openForUser“ mitgeben, in dem ich beim Öffnen den Usernamen (Kennung …) eintrage. Beim Abschluß des Edit wird dieses Attribut wieder geleert. (Dazu der Admin Knopf, alle leeren …).
Das aktualisieren in einer offenen Anwendung kann ich mir nur so vorstellen, dass die Anwendung im Hintergrund ständig ein Datum (wohl auch auf Knotenebene …?) abfragt und mit dem Datum beim Laden abgleicht. Ist der Anwender im Edit-Modus für den Knoten ist der für andere eh nur lesend erreichbar. Änderungen können dann nicht vorkommen. Speichert er wird das Datum neu gesetzt und die „Lauscher“ können die neuen Daten sehen.
Sorry für den langen Text, aber das Problem nervt mich auch. Wenns bessere Ansätze gibt, es scheint mir egal zu sein, ob das xml, DB oder Detaien betrifft (daher auch ggfs. ins das Brett "Programmierung allg." wecheseln :wink:), würde mich das sehr interessieren. Mag sogar sein, das DBs da was „im Standard können“.
mfg
Dirk.Pegasus
Hallo Dirk,
danke für die ausführliche Antwort und Erklärungen.
Das mit dem Attribute zur Kennzeichnung ist eine gute Idee.
Die parallele Aktualisierung hatte ich mir bisher so gedacht, dass ich die Datei via FileSystem überwachen lasse.
Ist zwar auch Neuland, aber soweit ich bisher gelesen habe müßte es gehen.
Somit wäre ja fast alles möglich, was ich auf meinem Wunschzettel stehen hatte 
Danke,
Andre
Hallo Andre,
wenn alles in einer Datei liegen sollte, gibt`s noch ein Problem. Um den „einen“ Knoten zu schreiben muss die gesamte Datei vewendet werden. Soll also ein zeitgleicher „Edit“ Zugriff möglich sein muss beim Speichern alles, wegen etwaiger Änderungen, neu gelesen werden, dann schnell den Knoten einbauen und speichern. In diesem Zeitraum darf dann kein anderer Speichern wollen. Da das (wie groß ist die Datenmenge?) sehr schnell sein könnte, sehe ich da erstmal kein Problem. Man muss die anderen Speichervorgänge halt abwarten lassen. Hängt aber stark von der Anzahl der User und der Anzahl der Schreibvorgäge ab. Ggfs. kann man ja die Daten in Häppchen zerlegen, die dann genau einem User gehören und zum Lesen zusammengestzt werden. So wie ich mein xml-Fragmente in einer DB verteile.
Berichte mal weiter…
mfg
Dirk.Pegasus