Seit 1995 beschäftige ich mich ununterbrochen mit dieser Sprache und habe Ende der 90-iger Jahre in mehreren großen Projekten wertvolle Erfahrungen sammeln können. In diesen Jahren ist Alles dabei gewesen, kleine Stand Alone Anwendungen und umfangreiche, objektorientiert entwickelte mehrschichtige Datenbank-Anwendungen. Von Access über den SQL Server bis hin zu Oracle reichte das Spektrum der angesprochenen Datenbanksysteme.
Neben VB unterhielt Microsoft weitere Sprachen und Entwicklungsumgebungen, u.a. Visual C++, eine Sprache, die auf ganz anderen Objektbibliotheken aufsetzte als VB6, der zu dieser Zeit aktuellen VB Version. C++ basierte auf den 1992 eingeführten Microsoft Foundation Classes (MFC), VB6 wiederum auf seinen eigenen Basisbibliotheken. Das sollte zu Beginn des neuen Jahrtausends auf eine neue gemeinsame Grundlage gestellt werden, dem .NET Framework. Alle Sprachen, die Microsoft zur Verfügung stellt, können und sollen dieses Framework ansprechen. Und die ehemals hauptsächlich prozedurale Sprache VB6 wurde von Grund auf neu entwickelt und es entstand Visual Basic.NET, eine vollständig objektorientierte Sprache, die mit dem Vorgänger eigentlich nur noch den Namen gemein hat.
Diesen Entwicklungsschritt bin ich mitgegangen, habe mich ausführlich mit der Datenbankentwicklung unter dem .NET Framework beschäftigt und der asynchronen Programmierung, wie sie das .NET Framework in verschiedenen Ausprägungen anbietet. Ein Beispiel zur Programmierung einer asynchroner Anwendungen stelle ich Ihnen im 2. Abschnitt dieser Seite vor.
Vor etwa 40 Jahren stellte Microsoft eine Weiterentwicklung der altehrwürdigen Sprache Basic vor, Visual Basic, gerne auch VB abgekürzt. Erstmals wurden Elemente objektorientierter Programmiersprachen wie Klassen und eine ereignisgesteuerte Ausführung in diese Sprache integriert. Dies und eine Entwicklungsumgebung, die es gestattete, schnell und doch zuverlässig funktionierende Benutzeroberflächen und Programme zu entwickeln, faszinierte viele Programmierer und führte zu einem hohen Verbreitungsgrad von VB Programmen.
Allerdings hatte VB Zeit seines Lebens mit der Tatsache zu kämpfen, dass sich die Entwickler bei Microsoft nie dazu durchringen konnten, VB zu einer vollwertigen objektorientierten Sprache umzugestalten und so blieb VB im Grunde eine prozedurale, strukturierte Programmiersprache, die es erlaubte, in bescheidenem Umfang objektorientiert zu entwickeln. Mit anderen Worten: Im Rahmen einer prozeduralen Sprache programmierte man gegen Objekte, eigene oder aus Fremdbibliotheken.
Dennoch, wer sich wirklich auf die Sprache einließ, konnte Programme entwickeln, die ausschließlich auf der Definition von Klassen mit Ihren Eigenschaften, Ereignissen und Methoden basierten. Ende der 90 -iger Jahre war ich Teil eines Entwicklerteams, das sich zum Ziel gesetzt hatte, Frontend und Middletier ausschließlich mit VB 6 objektorientiert zu entwickeln. Am Ende sollte eine mehrschichtige Anwendung stehen, die einen Oracle Datenbankserver über Objekte der Middle Tier ansprach. Das Frontend formulierte eine Anfrage an die Businessobjekte der Middle Tier und präsentierte die gelieferten Daten. Alle Objekte der Middle Tier, die auf einem Windows NT Server betrieben wurde, sind als VB6 Dlls implementiert.
Entwicklungsumgebung VB 6 mit Extruder Projekt der Krauss Maffei Group
Nun, Sie werden mit Recht sagen, dass ist technologisch Alles völlig überholt, aber die Sprache besitzt noch ihre Relevanz, allein deshalb, weil dort draußen immer noch VB-Programme existieren, verwendet werden und gewartet werden müssen, wie die zugehörige Abbildung belegt. Und in einer virtuellen Maschine mit 32 Bit Betriebssystem kann VB 6.0 auch heute noch verwendet werden.
Simple Backup Tool - Datendateien sichern mit Robocopy im asynchronen Prozeß
Es ist trivial auf die Bedeutung von Datensicherungen hinzuweisen. Und obwohl dies vielen Nutzern bekannt ist, wird die regelmäßige Erstellung von Backups häufig vernachlässigt, obwohl viele Softwarelösungen existieren, auch als Freeware. Aber ihnen allen ist gemeinsam, dass sie einen Overkill an Funktionalität bieten, den Viele wahrscheinlich gar nicht benötigen.
Und so ging es auch mir: Die Sicherung ganzer Betriebsysteme und installierter Programme, gar ein Image einer vollständigen Festplatte, haben mich nie sonderlich interessiert, was ich so einfach wie möglich erledigt wissen wollte war die Sicherung meiner Datendateien, Bilder, Worddokumente, Exceldateien, privates und berufliches. Und diese Sicherung sollte so einfach wie möglich und so schnell wie möglich erfolgen können.
Seit Windows Vista wird mit dem Betriebssystem ein mächtiges Kommandozeilen Kopierprogramm ausgeliefert, Robocopy. Und im Unterschied zu COPY oder XCOPY ist es ideal für Backupzwecke, denn es erlaubt inkrementelle Backups, berücksichtigt Unterverzeichnisse und gelöschte Dateien. Und es ist wesentlich schneller als die genannten Tools. Auch die Methoden des .NET Framework können mit Robocopy nicht konkurieren.
Ich stellte mir eine einfach gestaltete Benutzeroberfläche vor, die es erlaubt, die zu sichernden Daten dauerhaft festzulegen und den Backup-Prozess zu starten. Allerdings hat Robocopy einen derartigen Ressourcenhunger, dass eine Arbeit im laufenden Betrieb schon mal empfindlich gestört werden kann. Auch sollte eine Fortschrittleiste den Fortgang des Backups kommunizieren. Mit den Werkzeugen von Visual Basic und dem .NET Framework habe ich Benutzeroberfläche und die Kopiervorgänge in unterschiedliche, asynchrone Prozesse "verpackt". Interprozesskommunikation erlaubt es dem Robocopy-Prozeß, die Oberfläche über den Fortgang der Arbeiten zu informieren, so dass diese dem Benutzer den Fortgang des Backups transparent werden lässt.