Rash thoughts about .NET, C#, F# and Dynamics NAV.


"Every solution will only lead to new problems."

Friday, 20. October 2006


Eine überwachte Kopierfabrik

Filed under: C#,Tools — Steffen Forkmann at 20:20 Uhr

Bei uns in der Firma haben wir das Problem, dass wir für Entwicklungstests oft große Navision-Datenbanken aus einem Original-Verzeichnis in unsere Testverzeichnisse auf dem Testserver kopieren müssen. Dies hat bisher immer sehr viel Zeit (bis zu 30min pro DB) in Anspruch genommen – Zeit in der man nur unproduktiv auf das Ende des Kopiervorgangs warten konnte. Mit Hilfe eines kleinen Tricks kann man diese Zeit jedoch für den Nutzer fast komplett auf Null reduzieren.

Wir haben jetzt folgende Verzeichnisstruktur (alles auf dem selben Server)

  • Original (hier liegen die Ausgangsdatenbanken)
  • Lager (dies ist ein überwachtes Zwischenverzeichnis)
  • Nutzer
    • Steffen
    • Maik

Die Idee ist nun, dass die Nutzer sich eine Datenbank bei Bedarf einfach aus dem Lager in ihren Nutzer-Ordner schieben. Dabei passiert auf dem Dateisystem ja kein Kopiervorgang – sondern nur ein sehr schneller Verschiebevorgang. Der Lager-Ordner wird jedoch von einem Mini-Tool überwacht. Dies hat den Vorgang registriert und kopiert nun im Hintergrund die Datenbank aus dem Originalverzeichnis ins Lager. Sobald dieser Vorgang abgeschlossen ist, kann der nächste Nutzer wieder schnell auf die DB im Lager zu greifen.

Nun zur Implementierung des Ãœberwachungs-Tools in C#:

// Consolenstart static void Main(string[] args) { FDBWatcher fdbWatcher = new FDBWatcher(); Console.ReadLine(); } class FDBWatcher { private string warehousePath = @"C:\\Test\\Lager\\"; private string originalPath = @"C:\\Test\\Original\\"; private string targetEndingFilter = "*.fdb"; public FDBWatcher() { FileSystemWatcher fdbWatcher = new FileSystemWatcher( warehousePath, targetEndingFilter); fdbWatcher.EnableRaisingEvents = true; fdbWatcher.IncludeSubdirectories = false; fdbWatcher.Deleted += new FileSystemEventHandler(fdbWatcher_Deleted); Console.Write("FileSystem Watcher started"); } private void fdbWatcher_Deleted(object sender, FileSystemEventArgs e) { Console.WriteLine("File {0} deleted", e.FullPath); FileInfo oldFile = new FileInfo(e.FullPath); FileInfo originalFile = new FileInfo(originalPath + oldFile.Name); originalFile.CopyTo(oldFile.FullName); Console.WriteLine( "Copy {0} to {1}", originalFile, oldFile); } }

4 Comments »

  1. […] Gestern habe ich über ein kleines Tool berichtet, dass wiederkehrende langwierige Kopierfunktionen für den Nutzer versteckt in den Hintergrund verlagert und so einen ganz deutlichen Performancegewinn darstellt. […]

    Pingback by Blog der .NET / Navision - Group Halle » Eine überwachte Kopierfabrik (2) — Saturday, 21. October 2006 um 17:36 Uhr

  2. Das einzige Problem was ich dabei sehen würde ist, dass wenn 2 Personen kurz nacheinander auf die Dateien zugreifen und der Kopiervorgang bei der 2. Person noch nicht abgeschlossen ist. Dann würde die 2. Person nicht alle Dateien verschieben können, oder es würde ein Fehler kommen da bei einer bestimmten Datei noch darauf zugegriffen wird.

    Comment by Sebastian Wolf — Tuesday, 24. October 2006 um 15:03 Uhr

  3. Ja da liegst du völlig richtig.
    Aber es ist so, dass dieser Fall relativ selten auftritt, da wir ziehmlich viele Original-Datenbanken haben und man sich ja nicht alle 10 Min. eine neue ziehen muss – vielleicht einmal pro Woche oder noch weniger.

    Aber auch in dem wie gesagt unwahrscheinlichen Fall der Konkurrenz hat der Zweite ja keinerlei Nachteil gegenüber der “Nur-Kopieren”-Lösung – sprich er muss ja nicht länger warten als er dass vorher ohnehin getan hätte.

    Comment by Steffen Forkmann — Tuesday, 24. October 2006 um 15:07 Uhr

  4. […] Nachdem ich nun schon 2 kleinere Artikel zur überwachten Kopierfabrik geschrieben habe (Teil 1 und Teil 2) habe, folgt nun der dritten Teil. Heute soll kurz gezeigt werden wie man mit C# ein Eingangsverzeichnis überwachen kann und dann bei Änderungen per Mail informiert wird. […]

    Pingback by Blog der .NET / Navision - Group Halle » Eine überwachte Kopierfabrik (3) — Friday, 27. October 2006 um 15:50 Uhr

RSS feed for comments on this post. | TrackBack URI

Leave a comment

XHTML ( You can use these tags): <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> .