Zum Inhalt springen

C# - 30 MB XML-Datei schnell übers Netzwerk auslesen - wie?


Empfohlene Beiträge

Geschrieben

Hallo zusammen,

ich habe ein kleines Programm geschrieben, dass Daten verwalten kann.

Diese Daten habe ich lokal in eine XML-Datei gespeichert, quasi als kleine Datenbank.

Mit ReadXML() und WriteXML() habe ich die Daten in ein DataSet geladen bzw. in eine XML-Datei geschrieben. Das ging wunderbar.

Mit der Zeit ist das Programm gewachsen und ich sollte die Daten auf einem Server auslagern, so dass mehrere Personen damit abreiten können. Das ging mit ein paar kniffen auch noch.

Dummerweise ist die Datei jetzt auf 31 MB gewachsen und enthält etwa 3700 Datensätze.

Das Einlesen und Schreiben der XML-Datei dauert mittlerweile jeweils etwa 20 Sekunden.

Nun meine Frage: gibt es eine Möglichkeit das zu beschleunigen?

Oder bietet sich eine Datenbank an? Wenn ja welche? Reicht eine Access Datenbank?

Muss ich dabei etwas besonderes beachten?

Vielen Dank im Voraus!

Geschrieben
Oder bietet sich eine Datenbank an?

ja, weil

[...], so dass mehrere Personen damit abreiten können.

Reicht eine Access Datenbank?

bedingt, weil

[...], so dass mehrere Personen damit abreiten können.

Access kann nicht einzelne datensätze sperren, sondern immer nur die gesamte Tabelle

deswegen kann es sein, dass du eine andere Datenbank verwenden müsstest

grundsätzlich ist es aber egal, welche du verwendest

du solltest aber auch kein DBMS wählen, welches dazu gedacht ist, in eine Anwendung integriert zu werden (wie SQLite)

jede Instanz des DBMS sperrt die gesamte Datenbank, sodass kein Zugriff mehr von anderen Instanzen deiner Anwendung mehr besteht

Geschrieben

LINQ ist der C# Weg, wenn es um XML-Parsing geht.

Stichwort »XDocument«.

Allerdings ist es vergeudete Liebesmüh, sowas mit C# Boardmitteln auswerten zu wollen.

Eine ordentliche Datenbank mit einem Webservice davor wäre eine architektonisch saubere Lösung.

Geschrieben

Eine ordentliche Datenbank mit einem Webservice davor wäre eine architektonisch saubere Lösung.

Ein Webservice ist in den meisten Fällen wieder ein Nadelöhr, so dass man sich direkt nativ an die Datenbank hängen sollte (sofern möglich)

Geschrieben
Ein Webservice ist in den meisten Fällen wieder ein Nadelöhr

Grundsätzlich ja.

so dass man sich direkt nativ an die Datenbank hängen sollte (sofern möglich)

Was dadurch nicht unbedingt gerechtfertigt würde.

So groß sind die Einbußen nicht.

Im Übrigen läßt sich das recht fix umsetzen:

Introducing WCF WebHttp Services in .NET 4 - The .NET Endpoint - Site Home - MSDN Blogs

HowTo: JSON / AJAX – Webservices mit WCF erstellen | Code-Inside Blog

Wenn du es nicht zwingend als verteilte anwendung bauen willst(was bei so einem kleinen Projekt wohl kaum Sinn macht) würde ich das auch direkt an die DB klemmen. Warum die Zeremonie mit nem Webservice?

Weil Du a) offen für Erweiterungen bleibst und B) eine Abstraktionsschicht mehr in Deiner Anwendung hast; was letztendlich Deine Lösung flexibel hält.

Geschrieben (bearbeitet)

Die Gretchenfrage ist da denke ich WIE man auf die Daten zugreifen möchte.

Wenn man über eine Intranet Seite, oder mehrere Tools darauf zugreifen möchte, würd ich definitiv auch einen Webservice aufsetzen, der sich dann auf die Datenbank connectet. Dann hätte man eine einheitliche Schnittstelle, was immer was schönes ist. (Lässt sich aber auch über ne DLL lösen die man sich schreiben könnte für den DB Zugriff, Intranet hier mal ausgeklammert)

Wenn ich nur über >eine< Applikation zugreifen möchte, die mehrere User verwenden, würde ich direkt in der Applikation den DB-Zugriff implementieren.

Beides ist aber schnell erledigt und nicht sonderlich komplex. Irgendwo im Netz ein XML File ablegen, und mit mehreren Usern drarauf arbeiten, das ist aber... ja wie soll mans sagen, geziehlt selbst ins Knie geschossen kommt denke ich nahe ran.

Bearbeitet von streffin
Geschrieben

Hallo? Ich meine der TE macht aktuell Zugriff auf ein file direkt auf der Platte. Ist die Diskussion gerade nicht etwas abgehoben am Thema vorbei?

vom Xml File zum Fully blown Webservice? Ich denke da passen die Dimensionen aktuell nicht ;-)

Geschrieben

Naja, sieh' es mal umgekehrt:

30MB XML-File als Datenbank missbrauchen - da ist "unterdimensioniert" geschmeichelt.

Und wie schon erwähnt: So komplex ist ein "fully blown webservice" -was auch immer Du darunter verstehen magst- nun auch wieder nicht.

Geschrieben
Hallo? Ich meine der TE macht aktuell Zugriff auf ein file direkt auf der Platte.

dann verstehst du wohl unter "Auslagern" etwas anderes als wir

würde sie lokal auf der Platte liegen, dann könnte nur 1 Benutzer damit arbeiten

es sei denn, sie wurde im Netzwerk freigegeben, wodurch sie wieder für die anderen Benutzern nicht lokal auf der Platte liegt

man muss bei einer richtigen Datenbank (die von einem DBMS verwaltet wird) auch bedenken, dass diese grundsätzlich besser in der Speicherplatzverwaltung ist, als eine XML-Datei, da bei einer solchen ein Overhead durch tags und Attribute besteht (und wenn die Datei ordentlich formatiert ist auch durch die Einrückungen)

Geschrieben

du reißt mein Zitat aber aus dem Zusammenhang. Ich wollte damit andeuten, wenn er die nötigen Kenntnisse für WCF hätte, würde er die Frage wie oben sicherlich nicht stellen. So dass ich als nächsten Schritt erstmal ein DBMS vorschlage, ohne über einen Web Service zu gehen.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...