Hallo zusammen,
ich habe zwei Fragen zum Umgang mit einer XML Datei.
Liebe Grüße
Kerstel
Ehrlich? Ich würde mir überlegen, ob XML wirklich das ist was man einsetzten möchte als DB.
Wenn ich mir deine erste Frage ansehe, kommt es mir so vor, dass du schon auf ein größeres Problem gestoßen bist.
Da kommt wenn überhaupt ein eigenartiges Copy/Paste-Struktur bei mir in Sinn auf die schnelle (was ich schon wegen Trashigkeit verworfen habe).
[edit]Okay eine halber Gedanke kam noch verzögert nach.
Ich würde eher dann empfehlen bei einer xml-Datei, dass nicht mehrere Module darauf zugreifen. Sondern ein zentrales Modul, welches von den mehrer Module angesteuert werden kann [/edit]
Hi,
ja ich habe das Problem das zwei Prozesse parallel zugreifen und einer dann halt nicht kann. Was schlägst Du als Alternative vor?
Lieben Gruß
Kerstel
Hi,
ich glaub bei den Anforderungen würde ich spontan 2 Möglichkeiten sehen:
a) Du machst es dir einfach und verlangst eine richtige, lokale Datenbank (z.B. SqlExpress)
b) Du schreibst dir einen Service, der als einziger Zugriff auf die XML-Files hat - und die beiden Prozesse, die die Daten benötigen sprechen ab dann nur noch mit diesem Service
Das lässt sich z.B. über WCF leicht lösen. (Zum googlen: "wcf ipc" - ipc steht für InterProcessCommuniation)
KG
Hi,
danke für die Antwort. Ich kann ja nicht davon ausgehen, dass eine DB auf dem System installiert ist. Also ist das mit dem wcf die eleganteste Lösung, oder?
LG
Kerstel
Hi,
nun - wenn du keine solchen Anforderungen stellen willst gibt es auch durchaus die Möglichkeit andere Datenbanken einzusetzen, die keine direkte Installation erfordern.
Somit steht z.B. der SQL Compact (Sql CE) zur Debatte (ziemlich easy im handling und für übersichtliche Datenmengen (wovon ich ausgehe) durchaus eine nette Sache)
Je nach Anforderungen kannst du auch eine NoSQL-Datenbank wie z.B. http://www.litedb.org/ in Betracht ziehen. (Wenn deine Daten bislang in XML gepspeichert werden sollte das sogar super leicht umzusetzen sein)
Wenn du weitere finden möchtest: Du hättest gerne eine "embedded" Datenbank 😉
LG
PS: WCF und Datenbank darf man übrigens gerne gemeinsam betrachten - wenn du dir einen solchen WCF-Service schreibst hast du z.B. die Möglichkeit zu sagen:
Ok - vorerst behalte ich XML bei - und bau dafür den WCF-Service - und wenn mir XML später nicht mehr reicht - dann kannst du einfach an dieser zentralen Stelle eine neue Implementierung bauen, die z.B. dann eben SqlCE oder LiteDb etc. pp. nutzt.
Würde somit empfehlen: Bau den WCF-Service - und je nach Notwendigkeit und Anforderung und Aufwand baust du noch Anbindungen für richtige Datenbanken.
Und noch was: Mach's so, dass ein Austausch wirklich durch eine reine Umstellung des WCF-Services möglich ist!
Es gibt viele Wege, die nach Rom führen.
Die Variante mit einer lokalen Datenbank ist aber definitiv die einfachere in solch einem kleinen Szenario.
Geht das nicht, dann musst Du eine Service-Architektur umsetzen.
In Zeiten von REST und OData bin ich kein großer Freund mehr von WCF; aber auch hier: viele Wege führen nach Rom.
Du musst das jetzt für Dich evaluieren, ob WCF geeignet ist oder doch eher eine REST API, die diese Service-Funktion in Deiner Infrastruktur bzw. Architektur zur Verfügung stellt.
LiteDB ist Process Safe, andere Embedded Databases wie SQlite sind dies nicht bzw. nur mit aktivem Write Ahead Logging, was per default deaktiviert ist.
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code