Vorteile der Migration von Visual Basic 6.0 auf Visual Basic .NET Whitepaper Ken McNamee Eric Cherng James Duff Scott Stanfield Vertigo Software, www.vertigosoftware.com Jay Roxe Microsoft Corporation August 2004 Betrifft: Microsoft Visual Basic 6.0 Microsoft Visual Basic .NET Microsoft Visual Studio .NET 2003 Microsoft .NET Framework 1.1 Zusammenfassung Eine kürzlich durchgeführte Studie von Doculabs hat gezeigt, dass Visual Basic .NETWebanwendungen deutlich mehr Anwender unterstützen als vergleichbare VB 6Anwendungen. Dieses Dokument fasst die Ergebnisse der Studie zusammen. Hervorgehoben werden insbesondere die Steigerung der Anwendungsleistung sowie der Entwicklerproduktivität. Wir zeigen einige dieser Vorteile, in dem wir die Vergleichsanwendung von der ASP/Visual Basic 6.0-Version auf die ASP.NET/Visual Basic .NET-Version migrieren. Im Durchschnitt haben wir allein durch die Migration von Visual Basic 6.0 nach Visual Basic .NET eine Steigerung des Systemdurchsatzes um 300 Prozent notiert. Alle anderen Systemkomponenten blieben dabei unverändert. Dieses Dokument fasst die Ergebnisse der Studie zusammen und erläutert einige der neuen Funktionalitäten von Visual Basic .NET, wie etwa Output-Caching, die zu diesen Ergebnissen geführt haben. 1 von 13 Einführung Die Ergebnisse des Vergleichstests verdeutlichen, dass ein Upgrade auf Visual Basic .NET zu einer Leistungssteigerung um wenigstens das Doppelte der ursprünglichen Visual Basic 6.0-Anwendung führen kann. Wie aber kann ein Technologie-Upgrade zu einem solch drastischen Performancegewinn führen? Dieses Dokument untersucht die Leistung einer realen Anwendung und diskutiert die neuen Technologien in ASP.NET und Visual Basic .NET, die zu solchen signifikanten Verbesserungen in Performance und Skalierbarkeit führen. Visual Basic .NET verkörpert die neueste Version der Visual Basic-Programmiersprache. Bereits seit der ersten Version ist Visual Basic als einfache, produktive Sprache bekannt, die für die Erstellung leistungsstarker Anwendungen eingesetzt wird. Visual Basic .NET führt diese Tradition fort, in dem es die Sprache weiterentwickelt, doch aber vieles derselben, vertrauten Syntax beibehält. Zusätzlich wird Visual Basic .NET durch das .NET Framework unterstützt. Dadurch erhalten Entwickler Zugang zu vielen weiteren leistungsstarken Funktionalitäten, die die vorangehenden Versionen nicht beinhalteten. Etwas so Komplexes beispielsweise wie der Aufruf eines Webdienstes in Visual Basic 6.0 bedarf in Visual Basic .NET jetzt nur noch zweier Codezeilen. Um die Leistungsgewinne darzustellen, die sich durch die Migration von Visual Basic 6.0 nach Visual Basic .NET ergeben, werfen wir einen Blick auf Vergleichstests der NileWebanwendung. Bei Nile handelt es sich um eine Beispielanwendung eines OnlineBuchhandels (E-Commerce), die von zahlreichen unabhängigen, testenden Unternehmen viel genutzt wird, um Anwendungsplattformen zu bewerten. Diese Anwendung, die ursprünglich von Doculabs und dem PC Magazine verwendet wurde, um diverse Anwendungsplattformen zu testen, wurde nach Visual Basic 6.0 und Visual Basic. NET portiert. Obwohl es sich bei Nile nur um ein Beispiel handelt, kann es doch als wertvoller Vergleichsmaßstab genutzt werden, da es viele reale Webanwendungselemente verwendet. So ist Nile zu 90 Prozent datengetrieben, nutzt Session States und Anwenderauthentifizierungs-Logins. Wir betrachten die Vergleichstests der beiden Visual Basic-Versionen der NileAnwendung: die eine, die in ASP mit Visual Basic 6.0 COM+ Komponenten geschrieben wurde, und die andere, die in ASP.NET 1.1 unter Verwendung von Visual Basic .NET geschrieben wurde. Durch den Vergleich von Visual Basic 6.0 und Visual Basic .NET in derselben Anwendung mit derselben Rechnerkonfiguration, wird es uns möglich sein, die erheblichen Leistungsverbesserungen zu erkennen, die Visual Basic .NET bietet. Um den Vergleichstest durchzuführen, wurde ein Skript verwendet, das simulierte, der Anwendung alle zwanzig Minuten gleichzeitig 250 virtuelle Anwender hinzuzufügen. Der Vergleichstest galt als beendet, wenn zu viele HTTP-Fehler auftraten oder die durchschnittliche Response-Zeit von drei Sekunden überschritten wurde. Der folgende Abschnitt zeigt die Ergebnisse des Vergleichstests. Weitere Informationen über die Hardware und Softwareeinstellungen finden sich am Ende desselben Abschnittes. Bei den in diesem Dokument aufgeführten Ergebnissen handelt es sich um die Zusammenfassung einer Studie. Die kompletten Ergebnisse können Sie hier finden. 2 von 13 Spitzendurchsatz Der Spitzendurchsatz (Peak Throughput) wird definiert als der maximale Durchsatz, den eine bestimmte Konfiguration unterstützen kann. Die folgende Abbildung zeigt den Spitzendurchsatz für vier verschiedene CPU-Konfigurationen, die sowohl mit der Visual Basic 6.0- als auch der Visual Basic .NET-Nile-Anwendung getestet wurden. Wie Sie an der Abbildung oben erkennen können, überragt die ASP.NET/VB.NET-Version die entsprechende ASP/VB6-Version um wenigstens 200 Prozent. Dies ist tatsächlich eine bescheidene Zahl, denn die höheren CPU-Konfigurationen zeigen, dass die Visual Basic .NET-Version die Visual Basic 6.0-Version um mehr als das Dreifache des Spitzendurchsatzes übertrifft. In dem Fall von Visual Basic 6.0 bedeutet die Steigerung der CPU-Zahl die Steigerung der Anwendungsleistung um durchschnittlich 48 Prozent. Dem gegenüber steht die Visual Basic .NET-Version der Anwendung, bei der die Leistung um durchschnittlich 70 Prozent gesteigert wird. Das zeigt, dass es besser möglich ist, zusätzliche Ressourcen zu nutzen und skalierbarere Lösungen zu erstellen, wenn Anwendungen mit Visual Basic .NET geschrieben werden. Kleinunternehmen und Hobby-Entwickler verwenden üblicherweise keine MultiprozessorServer für den Betrieb ihrer Webanwendungen. Aufgrund der Performanceverbesserungen in Visual Basic .NET übertrifft die ASP.NET/VB.NETAnwendung deutlich die ASP/VB6-Anwendung – selbst im Fall der 1-CPU- und 2-CPUKonfiguration. Die Möglichkeit der Performanceskalierung gestattet es, die Webanwendung mit einer minimalen Hardwareanforderung zu starten. Es besteht die Option, weitere Hardware entsprechend wachsender Performanceanforderungen später flexibel hinzuzufügen. Anders als bei Kleinunternehmen laufen die meisten Unternehmensanwendungen üblicherweise mit mehreren CPUs, um eine optimale Performance zu erzielen. Die folgende Abbildung betrachtet die 8-CPU-Konfiguration. Sie zeigt, dass die Spitzendurchsatzleistung der Visual Basic .NET-Anwendung mehr als drei Mal besser ist als die der Visual Basic 6.0-Anwendung. 3 von 13 Vergleich der Skalierbarkeit Der Spitzendurchsatz ist eine Zahl, die man kennen sollte. Wichtiger aber ist, wie der Durchsatz bei Anwenderbelastung variiert. Ein Durchsatzvergleich zeigt Ihnen das Maximum erhaltener Transaktionen, die vom System unterstützt werden, ehe das System übersättigt ist und Fehler erzeugt. Die nachstehende Abbildung zeigt einen Durchsatzvergleich für die ASP/VB6- und die ASP.NET/VB.NET-Nile-Version auf einem 8CPU-Konfigurationsserver. Die oben stehende Abbildung zeigt, dass die Visual Basic 6.0-Anwendung bis zu 4.500 virtuelle Anwender mit ca. 500 Transaktionen pro Sekunde unterstützen kann, ehe sie die Testkriterien nicht mehr erfüllen kann. Das ist eine große Nutzeranzahl. Ist aber 4 von 13 nicht vergleichbar mit der Visual Basic .NET-Version, die 13.000 virtuelle User mit ca. 2.200 Transaktionen pro Sekunde unterstützen kann. Das bedeutet, dass bei derselben Anwendung ein Upgrade von Visual Basic 6.0 auf Visual Basic .NET die Unterstützung von mehr als zwei Mal so vielen Anwendern mit einem mehr als vier Mal so hohen Durchsatz erlaubt. Während alle anderen Elemente die gleichen sind, wie etwa die Hardware oder das Betriebssystem, zeigen der Durchsatz und die Zunahme der Benutzer, dass Anwendungen, die in Visual Basic .NET geschrieben wurden, Ressourcen wesentlich effizienter nutzen. Dadurch erhöhen sie den Wert bestehender Investitionen mehr als Anwendungen, die in Visual Basic 6.0 geschrieben wurden. Durch alle Vergleichstestergebnisse hindurch zeigt der allgemeine Trend, dass die Migration von Visual Basic 6.0-Anwendungen nach Visual Basic .NET – insbesondere die Migration von Webanwendungen – zu enormen Zuwächsen hinsichtlich Leistung und Skalierbarkeit führt. In einem späteren Abschnitt diskutieren wir die technologischen Verbesserungen in Visual Basic .NET, die solch dramatische Leistungssteigerungen ermöglichten. Setup Bei den Hardware- und Software-Beschreibungen in diesem Abschnitt handelt es sich um eine Zusammenfassung der kompletten Informationen, die in der vollständigen Studie zu finden sind. Hardware Für die Server in diesem Vergleichstest wurde die Compaq ProLiant-Serie verwendet. Für den Datenbankserver wurde ein Compaq ProLiant DL580-Server mit 4-CPUs (733 MHz Pentium III Xeon) und 3.6 GB RAM genutzt. Als Webanwendungsserver wurde ein Compaq ProLiant 8500R mit 4- und 8-CPUs (700 MHz Pentium III Xeon) und 2 GB RAM eingesetzt. Um den notwendigen Workload auf dem Server zu generieren, wurden insgesamt fünfzig Single-Prozessor-Dell-Client-Workstations verwendet. Um den Test zu verwalten und die Ergebnisse zu sammeln, wurde schließlich ein Mercury Interactive Controller eingesetzt. Software Als Betriebssystem für die Vergleichstests wurde Windows Server 2003 Enterprise Edition verwendet. Auf diesem Betriebssystem wurde SQL Server für die Datenbank eingesetzt, Internet Information Services (IIS) 6.0 wurde verwendet, um die NileWebanwendung zu hosten. Um die VB.NET-Version von Nile zu betreiben, wurde das integrierte .NET Framework 1.1 eingesetzt. Um die notwendige Auslastung zu erzeugen und die Ergebnisse zu erfassen, wurde die Mercury Interactive LoadRunner 7.5Testumgebung verwendet. 5 von 13 Sechs herausragende Gründe, um nach Visual Basic .NET zu migrieren Visual Basic .NET bietet die zurzeit einfachste und zugleich produktivste Sprache und Tools, um Anwendungen für Microsoft Windows und das Web schnell zu erstellen. Visual Basic .NET ist die ideale Wahl für bestehende Visual Basic-Entwickler ebenso wie für neue Entwickler, die auf die Microsoft .NET-Entwicklungsumgebung migrieren wollen. Visual Basic .NET bietet erweiterte Visual Designer, eine gesteigerte Anwendungsperformance, bessere Deployment-Möglichkeiten, verbesserten Datenbankzugriff und eine leistungsstarke Integrated Development Environment (IDE, integrierte Entwicklungsumgebung), mit der Entwickler ihre Anwendungsentwicklung deutlich beschleunigen können. Einfachere, leistungsstärkere webbasierte Anwendungsentwicklung Als erstklassige ASP.NET-Sprache ermöglicht es Visual Basic .NET Entwicklern, Webanwendungen einfach zu erstellen, die gegenüber klassischen ASPWebanwendungen gewaltige Verbesserungen in Leistung und Produktivität bieten. Visual Basic-Entwickler können jetzt ihre bestehenden Kenntnisse einsetzen, um schneller als je zuvor hoch performante, skalierbare und zuverlässige Webanwendungen zu erstellen. Wie also erlangt Visual Basic .NET solch deutliche Leistungsgewinne für die Webentwicklung gegenüber Visual Basic 6.0? Einer der ersten Punkte, der hier erwähnt werden muss, ist die Tatsache, dass das schwerfällige Interpreted Scripting-Modell, das vom klassischen ASP verwendet wurde, verstoßen wurde. Bei ASP.NET-Seiten handelt es sich tatsächlich um vollständig kompilierte Klassen innerhalb der Webanwendung. Sie laufen drei bis fünf Mal schneller als interpretierte ASP-Seiten. Eine Seite wird von der ASP.NET Runtime automatisch einmalig kompiliert und an einem temporären Ort zwischengespeichert, bis die Seite verändert und neu kompiliert wird. Ein zweiter Punkt ist, dass ASP.NET eine Funktionalität beinhaltet, die Output Caching genannt wird. Sie erlaubt es der Runtime, die Verarbeitung einer Seite zu überspringen, wenn bereits eine zwischengespeicherte Kopie des Output im Speicher besteht. Dadurch kann die Zeit, die notwendig ist, um den HTML-Output an den Anwender zurückzusenden, drastisch reduziert werden. Gleichzeitig kann die Durchsatzleistung des Webservers deutlich gesteigert werden. Zudem ist das ASP.NET Output Caching sehr konfigurierbar. Seiten können für jeden beliebigen Zeitraum zwischengespeichert werden, basierend auf jeglicher Anzahl individuell anpassbarer Parameter. Output Caching unterstützt auch das Zwischenspeichern einzelner Teile von Seiten. Das bedeutet, dass der Großteil einer Seite zwischengespeichert werden kann, während nur ein Bereich der Seite wirklich dynamisch bleibt. Schließlich haben Visual Basic .NETEntwickler Zugriff auf eine noch leistungsstärkere Caching API, die zusätzlich zu HTML das Zwischenspeichern von Objekten und Daten erlaubt. Diese technologischen Verbesserungen sind die wesentlichen Gründe, warum die Leistungsdiagramme, die oben als Ergebnisse der Vergleichstests gezeigt wurden, solch deutliche Vorteile von ASP.NET-Webanwendungen, die in Visual Basic .NET erstellt wurden, zeigen können. Abgesehen von der Performance bietet ASP.NET einen weiteren Vorteil: die Einfachheit der Sprache. Bei vorangehenden Versionen von Visual Studio (insbesondere Visual 6 von 13 InterDev) war es für die Webentwicklung erforderlich, dass Entwickler verschiedene Sprachen beherrschten: VBScript für ASP-Seiten, Visual Basic 6.0 für COMKomponenten, HTML für die Benutzerschnittstelle und JScript für den Client-Browser. Durch Verwendung der in ASP.NET integrierten Funktionalitäten und Steuerelemente und von Visual Basic .NET als Programmiersprache, ist es Entwicklern möglich, schnell und einfach eine Thin-Client-Benutzerschnittstelle zu erstellen, die von jedem Browser und auf jeder Plattform intelligent wiedergegeben werden kann. Die Steuerelemente reichen von grundlegenden Text-Feldern und -Buttons hin zu umfassenden Steuerelementen wie Kalendern, DataGrids, Field Validators und mehr. ASP.NET entscheidet automatisch, welches die beste Weise ist, diese Steuerelemente als HTML und JScript auszugeben (obwohl die Möglichkeit, mit HMTL und JScript zu programmieren, weiterhin vollständig unterstützt wird). Zusätzlich erkennt ASP.NET automatisch, welcher Browsertyp eine Seite anfordert und gibt den angemessenen HTML/JScript für diesen Browser aus. Es besteht also nicht länger der Bedarf, angepassten Code zu schreiben, um die spezifischen Browsertypen zu unterstützen. ASP.NET hat außerdem deutliche Verbesserungen im Bereich der Code-Wartbarkeit mit sich gebracht. Klassische ASP-Webanwendungen verfügten ziemlich häufig über eine äußerst unorganisierte Struktur. Die Seiten beinhalteten nicht nur den HTML-Output für den Browser, sondern auch die Geschäftslogik in Form von serverseitigem VBScript. Wohl konnten Code und HTML durch Kompilierung der Geschäftslogik in eine separate COM-Komponente getrennt werden. Dafür war es allerdings erforderlich, ein neues Projekt in einem anderen Tool zu erstellen und eine weitere Sprache zu beherrschen – und schließlich war es immer noch notwendig, VBScript-Zeilen zu integrieren, um die COM-Komponenten aufzurufen. ASP.NET-Seiten, die mit Visual Basic .NET oder einer anderen .NET-Sprache erstellt wurden, bieten ein Konzept, das „Code Behind“ genannt wird. Damit wird es möglich, HTML in einer Datei zu belassen, während der serverseitige Code sich in einer anderen Datei befindet. Da der Code wesentlich einfacher zu lesen und zu warten ist, erlaubt dieses Konzept eine weit effizientere Team-basierte Entwicklung und gesteigerte Entwicklerproduktivität. Durch die Verwendung von Code Behind wird es möglich, dass ein Webdesigner die einfache ASP.NET-Syntax verwendet, um das Layout der Seite zu erstellen, während ein Visual Basic .NET-Entwickler gleichzeitig an der Geschäftslogik arbeiten kann. Der gleichzeitige Zugriff auf Quellcode wird damit wesentlich weniger häufig. Session State wurde für ASP.NET umgeschrieben. Dabei wurden viele der Punkte einbezogen, von denen man im klassischen ASP gelernt hatte, das sie ein echtes Manko darstellten und die Nützlichkeit des Session-Objekts in einer Webfarm-Umgebung reduzierten. Zusätzlich zum klassischen ASP-Modell beinhaltet ASP.NET zwei neue Möglichkeiten, die es erlauben, Anwendungen einfach von einem einzigen Server zu einer Multiserverfarm zu skalieren und gleichzeitig weiterhin die Vorteile von Session State zu nutzen. Der Session State kann jetzt in einem dedizierten State-Server oder auch in einer SQL Server-Datenbank gespeichert werden. Auf beide Möglichkeiten kann von allen Servern in der Webfarm zugegriffen werden, und es besteht der zusätzliche Vorteil, dass der Session State nicht verloren geht, sollte die Webanwendung aus irgendeinem Grund gestoppt und neu gestartet werden. ASP.NET Session State bietet außerdem eine wesentlich bessere Unterstützung für Cookie-lose Operationen. All diese Optionen sind konfigurierbar, so dass die Art des verwendeten Session State im Betrieb verändert werden kann, ohne irgendwelche Ausfallzeiten in Kauf nehmen zu müssen. 7 von 13 Erstellung leistungsstarker Windowsbasierter Anwendungen Visual Basic .NET ist das aktuell produktivste Tool für die Erstellung leistungsstarker Microsoft Windows-basierter Anwendungen und Dienste. Es bietet eine erstklassige Umgebung für die Erstellung von Windows Forms-Anwendungen mit Unterstützung für XML-Webdienste, den erweiterten Windows Form Designer und viele zusätzliche Steuerelemente. Datenzentrische Windows-basierte Anwendungen können in einer verteilten Architektur durch Verwendung von XML-Webdiensten für die Vermittlung ihrer Datenanfragen skalierbarer gemacht werden. Das .NET Framework bietet einen hohen Unterstützungsgrad für Webdienste, indem es die Methode zur Abfrage an einen Webdienst über das Internet so einfach macht wie eine lokale Abfrage. Der neue Windows Forms Designer stellt eine deutliche Verbesserung gegenüber dem Visual Basic 6.0 Forms Designer dar. Er ermöglicht es Entwicklern, ihre DesktopAnwendungen in geringerer Zeit auf den Markt zu bringen. Die Form-Klasse verfügt jetzt über viele neue Eigenschaften und Steuerelemente, die den Code, den Visual Basic .NET-Entwickler schreiben müssen, deutlich reduzieren, und gleichzeitig eine umfassende, moderne Benutzerschnittstellenerfahrung bieten. Beispielsweise erfordert die Unterstützung für Control Anchoring und das flexible Docking nicht länger komplexen Code im Resize Event Handler. Das Formular kann mit der Eigenschaft „Opacity“ teilweise transparent gemacht werden – oder sogar nicht-rechteckig, wenn die Eigenschaft „TransparencyKey“ verwendet wird. Durch Verwendung der Eigenschaft „TopMost“ kann das Formular über jedes andere Anwendungsfenster gestellt permanent sichtbar gemacht werden. Visual Basic 6.0 beinhaltete eine umfassende Sammlung von Steuerelementen, die ein Reichtum an Funktionalitäten mit einem einfachen Drag&Drop von der Toolbox bot. Visual Basic .Net erweitert diese Sammlung um einige weitere Steuerelemente wie CheckedListBox, PrintPreviewControl und LinkLabel, das als anzuklickender WebbrowserLink angezeigt wird. Nehmen wir als Beispiel die Erstellung einer Anwendung, die ein Systemablage-Icon unterstützt. Das NotifyIcon-Steuerlement in Visual Basic .NET erlaubt es Entwicklern, ein Anwendungs-Icon in der Systemablage einfach anzuzeigen, ohne zu komplexen Win32 API-Aufrufen umsortieren zu müssen. Dem könnten wir das ContextMenu-Steuerelement hinzufügen, um für das Systemablage-Icon ein Rechte-Mausklick-Menü anzubieten oder es sonst wo in der Hauptbenutzerschnittstelle der Anwendung zu verwenden. Mit Visual Basic wäre für diese einfache Aufgabe einiges an Fähigkeiten und Kenntnissen der reinen Win 32-APIs notwendig gewesen. Durch die leistungsstarken neuen Objekt orientierten Möglichkeiten von Visual Basic .NET ist es einfacher denn je, bestehende UserControls mit weniger und leichter zu wartendem Code zu erweitern. Visual Basic .NET bietet zudem eine fundiertere und integriertere Unterstützung zahlreicher Win32 API-Funktionen, für die zuvor komplexer Code mit DeclaresStatements erforderlich war. Die Klassen im System.Drawing Namespace bieten eine einfache API für die Durchführung komplexer Window-Zeichnungen. Es besteht außerdem eine integrierte Unterstützung für die meisten bekannten Image-Typen wie 8 von 13 GIF, JPG und PNG. Dieser Namespace ermöglicht es Entwickler auch, ihre eigenen Images einfach programmatisch zu erstellen oder sogar ein bestehendes Image mit Text zu überlagern. Dank integrierter Unterstützung für reale Windows-Dienste, Multi-Threading und Zugriff auf Webdienste können Visual Basic .NET-Entwickler jetzt komplexere und leistungsfähigere Anwendungen erstellen. Visual Basic .NET bietet eine ServiceBaseKlasse, die die Erstellung von Windows-Diensten zu einem Klacks machen – ohne den Bedarf einer Drittanbieterlösung. Schließlich wird die Anwendungsleistung und Reaktionszeit durch die neuen Threading-Fähigkeiten für den Anwender deutlich spürbar und messbar verbessert. Die Visual Basic-Sprache an sich wurde dramatisch verbessert und modernisiert. Visual Basic .NET hat sich zu einer vollständig Objekt orientierten Sprache gewandelt, die einen leistungsfähigeren, wieder verwendbaren und letztlich besser zu wartenden Code ermöglicht. Eine konsequente Typenkontrolle sorgt für weniger aufwändig zu suchende Bugs und eine eindeutigere Schnittstelle, wodurch die Wiederverwendbarkeit verbessert wird. Eine konsequente Ausnahmehandhabung macht die Fehlersuche deutlich effizienter und genauer – und sorgt somit für eine ganzheitlich stabilere Anwendung. Nahtlose Bereitstellung Einer der Bereiche, in denen Visual Basic .NET dramatische Vorteile gegenüber Visual Basic 6.0 zeigt, ist der Bereich der Bereitstellung (Deployment). Visual Basic 6.0Entwickler sind mit dem Prozess vertraut, der gemeinhin „DLL-Hölle“ genannt wird: dem Prozess der Installierung einer Anwendung, Registrierung der Komponenten und der Frage, wie verschiedene Versionen derselben Komponente über verschiedene Anwendungen hinweg gemeinsam genutzt werden können. Im besten Fall kann man davon sprechen, dass dieser Prozess lästig ist. Im schlimmsten Fall jedoch davon, dass er ein Alptraum ist. Das .NET Framework bietet eine Funktion, die „XCOPY Deployment“ genannt wird. Sie ermöglicht es, sowohl Windows- als auch Webanwendungen ganz einfach zu installieren, indem sie in das Zielverzeichnis kopiert werden. In den Fällen, in denen sich XCOPY Deployment nicht eignet, ermöglicht es das neue Auto-Download-Deployment, Windows-basierte Anwendungen auszuführen, indem lediglich mit einem Webbrowser auf eine URL gezeigt wird. Windows-Anwendungen, die mit Visual Basic .NET erstellt wurden, können jetzt genauso installiert und gewartet werden wie eine HTML-Seite: indem der Server mit der neuen Anwendung oder Anwendungskomponente aktualisiert wird. Dieses Konzept wird „No-Touch-Deployment“ genannt und stellt sicher, dass Anwender immer über die neueste Version einer Windows-Anwendung verfügen. Dadurch kann der Anwender seine gewohnte Benutzerschnittstelle nutzen, und gleichzeitig werden viele der Probleme eliminiert, die im Zusammenhang mit dem Deployment von Windows-basierten Anwendungen auftreten. Microsoft bietet darüber hinaus weitere Komponenten wie bspw. den Updater Application Block for .NET Applications, der es Entwicklern erlaubt, leistungsstarke und flexible Anwendungen zu erstellen, die sich selbst intelligent aktualisieren können. Auch im Fall von Webanwendungen ist ASP.NET nicht knapp an bemerkenswerten Deployment-Fähigkeiten. So besteht bspw. nicht länger der Bedarf, COM-Komponenten zu registrieren – und dadurch einige Minuten an Ausfallzeit in Kauf zu nehmen, während denen der Webserver gestoppt und neu gestartet werden muss, um verschlossene DLLs auszulesen. ASP.NET-Anwendungen, die mit Visual Basic .NET erstellt wurden, brauchen 9 von 13 lediglich über die laufende Webanwendung kopiert zu werden. Weder muss der Webserver angehalten noch der Server rebootet werden. Alle bestehenden HTTPAnfragen an den Webserver werden auch weiterhin von der alten, gespeicherten Version der Webanwendung verarbeitet, während alle neuen HTTP-Anfragen bereits durch die neue Version gehandhabt werden. Diese Funktion ermöglicht tatsächlich eine Webanwendung mit Null Ausfallzeit. ASP.NET verfügt außerdem über ein neues Konzept für eine WebanwendungsKonfigurationsdatei, genannt „web.config“. Anwendungsspezifische Einstellungen können sicher in dieser Datei gespeichert und zusammen mit dem Rest der Webseiten bereitgestellt werden. Die Einstellungen werden von der Datei einmalig gelesen und in der Memory gespeichert. Wird die web.config-Datei verändert, so liest ASP.NET diese Einstellungen erneut aus der neuen Datei aus und beginnt einen neuen Prozess, um neue Anfragen zu verarbeiten. Auch in diesem Fall ist keine Webserver-Ausfallzeit erforderlich, wenn Änderungen an der Anwendung vorgenommen werden. Leistungsstarker, flexibler Datenzugriff mit ADO.NET Mit ADO.NET erhalten Entwickler Zugriff auf leistungsstarke Komponenten wie die DataSet-Klasse und ein stark typisiertes Programmiermodell, das über IntelliSense und eine Befehlsvervollständigung für Data Access Code verfügt. Anders als klassisches ADO ist ADO.NET optimiert, um sowohl für verbundene als auch für getrennte datenzentrische Anwendungen die beste Performance und Skalierbarkeit zu bieten. Die DataSet-Klasse stellt eine hervorragende Möglichkeit dar, um Daten abzufragen und zu aktualisieren und gleichzeitig die notwendige Zeit zu reduzieren, während der eine kostenintensive Verbindung zur Datenbank gehalten werden muss. Klassisches ADO eignete sich hervorragend für das Senden und Empfangen von Daten. Gleichwohl gab es nur begrenzte Möglichkeiten, mit den Daten zu arbeiten, sobald der Entwickler die Verbindung beendet hat. Das führte viele Entwickler zu einem Weg, der die Leistung, Reaktionszeit und Skalierbarkeit ihrer Systeme begrenzte. Das DataSet fungiert wie eine gespeicherte Kopie der Datenbank, inklusive zahlreicher Tabellen, Beziehungen und der Möglichkeit, ursprüngliche und neue Werte nachzuverfolgen. Auf diese Weise kann ein Teil der Datenbank über die DataSet-Klasse zum Client gebracht, mit neuen Daten aktualisiert und zurück zum Server gesendet werden, wo er wieder in die Datenbank eingespeist wird. Durch Verwendung von Visual Basic .NET und ADO.NET können Entwickler schnell produktiv werden und mit minimalem Codeaufwand eine Datenmanagementanwendung erstellen. Der Data Adapter Configuration Wizard kann allen notwendigen Code generieren, um Daten aus jeder Tabelle der Datenbank auszuwählen, einzufügen, zu aktualisieren und zu löschen. Darüber hinaus bietet er – anders als klassisches ADO – dem Entwickler die Möglichkeit, jeden SQL-Befehl anzupassen und sogar Stored Procedures zu erstellen. Das klassische ADO ist in seiner XML-Unterstützung beschränkt. ADO.NET indes wurde von Grund auf für die Verwendung von XML in so gut wie jeder vorstellbaren Weise erstellt. Beispielsweise kann die DataSet-Klasse mit nur einer Codezeile in ein gut gestaltetes XML-Dokument umgewandelt werden – einschießlich des XML-Schemas, das die Struktur des Dokuments beschreibt. Das DataSet kann außerdem transparent in eine Datei serialisiert und später wieder in ein DataSet deserialisiert werden, ohne irgendwelche Daten oder Schema-Information zu verlieren. Schließlich kann das DataSet 10 von 13 sich selbst in XML konvertieren, wenn es als Teil einer Webdienstanfrage über das Internet transportiert wird. ADO.NET beinhaltet neue Data Provider, die speziell dafür erstellt wurden, direkt mit Datenbanken wie SQL Server 7.0 oder größer zu kommunizieren. Dies kann zu einem Leistungsanschwung führen, da es für den Visual Basic .NET-Code nicht erforderlich ist, vielzählige API-Layer zu durchlaufen, ehe er zu der aktuellen Datenbank gelangt. Das macht Datenbankabfragen schneller und wesentlich effizienter. Es besteht auch ein Data Provider für OLEDB-unterstützte Datenbanken und sogar einige neue Data Provider, die direkten Zugriff zu anderen Datenbank wie Oracle anbieten. ADO.NET baut auf früheren Versionen von Datenzugriffsmodellen auf. Und da es fest in das .NET Framework und die Visual Studio .NET IDE integriert ist, bietet es die Leistung und Produktivität, die Entwickler erfordern. Bestehende Investitionen fortführen Die Migration auf Visual Basic .NET bedeutet nicht, dass vergangene Investitionen in Visual Basic 6.0-COM-Komponenten oder sogar die Visual Basic-Sprache selbst unnötig waren. Durch die Verwendung eines einfachen Werkzeugs namens „Type Library Importer“ ist es Visual Basic .NET möglich, COM-Komponenten sowohl in Windows- als auch Webanwendungen zu verwenden, als wären es wirkliche .NET-Assembler. Aus diesem Grund ist es möglich, Geschäftslogikkomponenten, die seit Jahren werden, erst dann als .NET-Komponenten neu zu entwickeln, wenn Zeit und Budget dies erlauben. Und wenn diese Zeit gekommen ist, werden es Tools wie VB6 Code Advisor und der Visual Basic .NET Upgrade Wizard Entwicklern ermöglichen, 60 bis 90 Prozent ihres bestehenden Visual Basic 6.0-Codes nach Visual Basic .NET zu migrieren. Um die Interoperabilität zwischen Visual Basic 6.0 und Visual Basic .NET noch flexibler zu machen, besteht außerdem ein Werkzeug namens Type Library Exporter, das aus einer .NET Assembly eine komplementäre COM-Komponente erstellt. Auf diese Weise können Entwickler, die Visual Basic .NET verwenden, getrost weiterhin ihre COMbasierten Anwendungen erweitern – so werden bestehende Investitionen gewahrt und gleichzeitig die neue Entwicklung gefördert. Schließlich wird auch die Investition in die Visual Basic-Sprache gewahrt. Visual Basic .NET erhält viele der syntaktischen Funktionalitäten und den besonderen Klang der Sprache Visual Basic 6.0, während es gleichzeitig die Leistung und Flexibilität einer wirklich modernen Programmiersprache bietet. Gesteigerte Produktivität mit Visual Studio .NET 2003 Visual Studio .NET unterstützt Visual Basic-Entwickler mit mehr Leistung denn je zuvor, um äußerst schnell sehr produktiv zu werden. Der Bereich der Projekttypen umfasst jetzt Konsolenanwendungen, Windows GUI-Anwendungen, Klassen- oder Steuerelement-Bibliotheken, Webanwendungen, Webdienst-Anwendungen, WindowsDienste und sogar Anwendungen, die für den Betrieb auf mobilen Endgeräten wie dem Pocket PC und Smartphone gedacht sind. Das Server Explorer-Werkzeugfenster bietet Entwicklern eine Möglichkeit, auf einen Blick schnell die laufenden Rechnerressourcen zu sehen – wie Message Queues, Performance 11 von 13 Counter, SQL Server-Datenbanken, Windows-Dienste und Ereignisberichte. Diese Dienste können schnell und einfach auch in eine Anwendung integriert werden. Dafür ist es lediglich notwendig, ein Element auf die Designoberfläche eines Webform oder Windows Form zu ziehen, die sich daraufhin in programmierbare Objekte wandeln und so eine beispiellose Produktivität ermöglichen. Ziehen Sie beispielsweise eine SQL Server-Tabelle auf die Designoberfläche, so fügt die Visual Studio .NET IDE augenblicklich allen notwendigen Code hinzu, um die Tabelle in Laufzeit mit der Datenbank zu verknüpfen. Damit wird es möglich, jede beliebige Spalte der Tabelle auszuwählen, hinzuzufügen, aktualisieren oder zu entfernen. Ziehen Sie den Performance Counter auf die Designoberfläche, so kann der aktuelle Wert des Counters mit nur einer Codezeile zu jeder beliebigen Zeit abgefragt werden. Der Visual Studio .NET Debugger wurde deutlich verbessert, um Entwicklern einen sehr genauen Speicherauszug des aktuellen Betriebsstatus der Anwendung und aller beteiligten Variablen und Objekte zu geben. Das Call Stack-Fenster bietet eine Liste aller Funktionsaufrufe, die bis zu einem bestimmten Punkt in der laufenden Anwendung gemacht wurden. Das Task List-Fenster hilft Entwicklern bei der Organisation und Verwaltung der mit der Anwendungserstellung verbundenen Aufgaben. Mithilfe dieses Fensters können Entwickler Probleme, die bei der Code-Kompilierung oder -Erstellung automatisch erkannt wurden, einfach sortieren, filtern, erkennen und lokalisieren. Das Command-Fenster kann verwendet werden, um Visual Studio .NET-Befehle auszugeben, Ausdrücke zu bewerten, Statements auszuführen oder variable Werte zu drucken und editieren. Sogar IntelliSense wird vollständig unterstützt. Das Debug-Fenster kann gefiltert und flexibel angepasst werden, um nur die passendsten Informationen anzuzeigen – wie in-scope Variablen oder nur solche Variablen, an denen der Entwickler ein spezielles Interesse hat. Daraus folgend können der Entwickler Probleme schneller und genauer aufzeigen, ohne dass er eine Reihe irrelevanter Daten durchsuchen muss, ehe er die Information findet, die er benötigt. Die Visual Studio .NET IDE ist zudem hoch konfigurierbar und erweiterbar, wodurch das Tool leicht an die Weise angepasst werden kann, wie der Entwickler am liebsten arbeitet – und nicht anders herum. Die Entwicklungsumgebung ist vollständig anpassbar – von Schriftarten und Farben zu Anzeige, Platzierung und Verhalten des Werkzeugfensters. Mühselige Entwicklungsaufgaben lassen sich durch Verwendung des erweiterten, Visual Basic-basierten Macro Recorder und Editor vereinfachen. Entwickler können sogar ihre eigenen leistungsstarken Add-in Tools erstellen, die direkt in die IDE eingebunden werden. Visual Studio bietet einen Projekttypen genau zu diesem Zweck, wodurch der Prozess sogar noch einfacher wird. Schließlich beinhaltet Visual Studio .NET das herausragende IntelliSense, eine vollständig integrierte, kontextsensible Hilfe und einen schnellen Zugang zur ganzen Bandbreite des im Microsoft Developer Network (MSDN) verfügbaren Wissens, um neue Visual Basic .NET-Enwickler so schnell als möglich produktiv werden zu lassen. Zusammenfassung Visual Basic .NET ist das jüngste einer langen Reihe von produktiven und leicht zu erlernenden Entwicklerwerkzeugen. Es hat die bekannte, vom Menschen zu lesende Syntax, das Drag&Drop-Benutzerschnittstellendesign und die Einfachheit einer Sprache beibehalten und weiterentwickelt, um die herum eine der stärksten Entwicklergemeinschaften weltweit entstanden ist. Darüber hinaus haben Performance 12 von 13 und Skalierbarkeit mit Visual Basic .NET den gleichen Stand erhalten wie Produktivität und einfache Nutzung. In dem in diesem Dokument beschriebenen Fall, haben wir gesehen, dass die Migration der Nile-Webanwendung von Visual Basic 6.0 nach Visual Basic .NET zu einer mehr als dreihundertprozentigen Durchsatzsteigerung geführt hat. Visual Basic .NET nimmt das Beste aus Visual Basic 6.0 und verbindet es mit der Performance des .NET Framework, um Entwicklern einen bestechenden Grund für das Upgrade zu liefern. 13 von 13