Visual Studio.Net 2003
Artikel erschienen in Swiss IT Magazine 2003/10
Um es gleich vorwegzunehmen: Visual Studio.Net 2003 ist nicht das Update der grossen Innovationen. Vielmehr handelt es sich um einen sogenannten Integrations-Release, der viele der in den letzten Monaten von Microsoft auf den Markt gebrachten Erweiterungen in einem neuen Paket zusammenfasst. Dazu zählen beispielsweise J#, die Web Service Enhancements (WSE), das Mobile Internet Toolkit oder das erst seit einigen Wochen verfügbare .Net Compact Framework. Trotzdem gibt es unter den Neuerungen die eine oder andere Perle zu finden. Auch die ebenfalls neue Version 1.1 des .Net Framework bringt einige interessante Detailerweiterungen mit sich.
Zu dieser Kategorie der kleinen, aber feinen Verbesserungen zählen zweifellos die neuen IntelliSense-Funktionen der Code-Editoren von C# und Visual Basic. So lassen sich nun beim manuellen Verdrahten von Events im Code auf Tastendruck die Delegate-Instanz und die dazu passende Event-Handler-Methode einfügen. Beim Vererben von Interfaces generiert IntelliSense ebenfalls auf Tastendruck den gesamten Klassenrumpf mit allen zu implementierenden Methoden und Eigenschaften. Ebenfalls sehr praktisch: Die Code-Completion-Listbox blendet jetzt die am meisten benutzten Items gleich an oberster Stelle ein.
Nur Visual-Basic-Entwicklern vorbehalten ist das Komplettieren von Exeption-Handling-Blöcken nach der Eingabe des Schlüsselworts "Try". Ausserdem gibt es innerhalb des Visual-Basic-Code-Fensters die bereits aus früheren VB-Versionen bekannten Procedure Separators. Diese sorgen für eine bessere Übersicht im Code, indem zwischen jeder Methode eine Hilfslinie eingeblendet wird.
Die Visual-Basic-Sprache kann ebenfalls mit zwei kleinen Neuerungen aufwarten. So lassen sich jetzt Variablen direkt im Header einer For-Schlaufe deklarieren. Ausserdem gibt es zwei neue Bit-Shift-Operatoren.
C# hat nur marginale Veränderungen erfahren, die insbesondere zwecks Anpassung an die ECMA-Standardisierung vorgenommen wurden. Von den im letzten Herbst angekündigten C#-Erweiterungen wie Generics oder Iterators ist noch nichts zu sehen. Diese werden frühestens im nächsten Release 2004 (Codename "Whidbey") zu finden sein. Dafür gibt es neu sogenannte Build Events, über die sich C#-Kompiliervorgänge besser automatisieren lassen. Ausserdem ist jetzt auch ein Migrationsassistent enthalten, der beim Konvertieren von Java- und J++-Code nach C# behilflich ist.
Entwickler, die mit C++ oder J# arbeiten und ihre WinForm-Interfaces derzeit noch mühsam von Hand programmieren, dürfen aufatmen: Mit der Version 2003 kommen auch sie in den Genuss des Drag&Drop-Form-Designers. Zudem wurde C++ nun besser an die ISO-Norm angepasst und ist jetzt laut Microsoft zu 98 Prozent mit dem Standard konform. Anwendungen werden dadurch einfacher und schneller zwischen Windows, Linux und Unix portierbar sein.
Das neue .Net-Framework 1.1 ist sowohl Bestandteil von Visual Studio 2003 als auch von Windows Server 2003. Wer .Net-1.1-Applikationen nicht mit Visual Studio entwickeln oder ganz einfach nur .Net-1.1-Anwendungen laufen lassen will, kann das .Net Framework auch kostenlos von der Microsoft-Site (msdn.microsoft.com/netframework) herunterladen und auf seinem Windows-System installieren.
Die wichtigste Neuerung der Version 1.1 ist die Fähigkeit für Side-by-Side-Execution, dank der sich mehrere .Net-Framework-Versionen parallel auf derselben Maschine einsetzen lassen. Die Installation des.Net-Framework 1.1 bedeutet damit nicht, dass zwangsläufig alle .Net-Applikationen auf die Version 1.1 umgestellt werden müssen. Je nachdem, für welche Version eine .Net-Anwendung kompiliert wurde, wird bei deren Ausführung automatisch die passende Runtime-Umgebung geladen. Dieses Verhalten lässt sich notfalls auch per Konfigurations-File unterdrücken. So kann etwa eine Framework-1.1-Anwendung explizit angewiesen werden, die 1.0-Runtime zu verwenden, wenn keine 1.1-Umgebung vorhanden ist. Andererseits kann auch einer 1.0er-Anwendung vorgeschrieben werden, das Framework-1.1 zu nutzen, falls beide Runtime-Versionen auf der Maschine installiert sind.
Genau wie das Framework lassen sich auch Visual Studio 2002 und 2003 parallel auf demselben Rechner nutzen. Das wird in vielen Fällen zumindest während einer Übergangsphase auch nötig sein, denn die 2003er Version kann nur MSIL-Code für .Net 1.1 kompilieren, während Visual Studio 2002 ausschliesslich 1.0er-Code erzeugt. Vor dem Kompilieren kann Visual Studio nun angewiesen werden, die Konfigurationsdatei der Applikation automatisch so anzupassen, dass für die Ausführung auch die 1.0er-Runtime genutzt werden kann oder muss. Hierbei ist allerdings höchste Vorsicht geboten: Wer neue Features des Framework 1.1 in seinem Code verwendet und als Ziel-Runtime das .Net-Framework 1.0 angibt, wird weder vom Compiler noch von IntelliSense gewarnt. Allfällige Fehlermeldungen werden erst zur Laufzeit der Anwendung ausgegeben.
Ein weiterer Stolperstein: Die Solution- und Projekt-Dateien von Visual Studio 2002 und 2003 sind nicht miteinander kompatibel. Einmal unter VS2003 geöffnete und abgespeicherte Projekte lassen sich mit VS2002 nicht mehr nutzen.
Neben einer Reihe von Detailänderungen in den Klassenbibliotheken bietet das .Net-Framework jetzt Support für IPv6 und neue Datenadapter für ODBC und Oracle. Der ODBC-Dataprovider war bislang ebenfalls als Download verfügbar und setzt auf dem Client-System die Microsoft-Datenzugriffskomponente MDAC 2.7 voraus. Komplett neu in das Framework integriert sind die Native-Dataprovider für Oracle 8i und 9i.
ASP.Net wurde um Request Validation erweitert, mit dem sich Script-Attacken via HTTP-Post proaktiv unterbinden lassen. Weitere Neuerungen sind die Integration der Mobile Controls, Code Access Security für Sandbox-Konfigurationen (für ISP-Hosting gedacht) und Unterstützung von neuen IIS-6.0-Features (Bestandteil von Windows Server 2003) wie etwa die Prozess-Isolation auf Applikationsebene.
Für die Entwicklung mobiler Anwendungen verfügt Visual Studio .Net 2003 neu über das Mobile Internet Toolkit und das .Net Compact Framework. Das Mobile Internet Toolkit, das bereits seit einigen Monaten als separater Download erhältlich ist, erlaubt ASP.Net-Entwicklern das Erstellen von Webseiten, die speziell auf Westentaschen-Browser zugeschnitten sind. Für die meisten der in ASP.Net enthaltenen Web-Controls gibt es ein passendes Pendant, das für mobile Browser optimiert ist. Der Vorteil: Da die Erstellung von mobilen Web-Anwendungen nach demselben Muster wie die gewöhnliche ASP.Net-Programmierung funktioniert, können Entwickler ihr bestehendes Know-how einsetzen.
Beim .Net-Compact-Framework, das erst vor wenigen Wochen freigegeben wurde, handelt es sich um eine abgespeckte Variante des .Net-Framework, die auf die eingeschränkten Speicherkapazitäten von PDAs und Smartphones zugeschnitten wurde. Während das .Net-Framework noch einen Memory-Footprint von 20 MB benötigt, kommt die Compact-Version gerade mal mit 1,5 MB aus. Um dies zu erreichen, hat Microsoft alle überflüssigen und auf einem PDA nicht zwingend benötigten Funktionen aus den Klassenbibliotheken entfernt. Für die Zwecke von Mobilgeräten ist das Compact-Framework zwar ziemlich komplett, trotzdem kann es sein, dass die eine oder andere Funktionalität, die im .Net-Framework noch als Klasse angeboten wurde, bei der Mobil-Variante wieder von Hand ausprogrammiert werden muss.
Dafür werden sich .Net-Entwickler auch im Compact-Framework sofort heimisch fühlen. Die APIs der beiden Frameworks sind weitgehend identisch. Zudem bietet Visual Studio 2003 auch für Mobil-Anwendungen die gewohnten Werkzeuge wie WinForm-Designer, IntelliSense-Code-Editoren und Debugger. Praktisch: Mit dem PocketPC-Emulator lassen sich Applikationen schon mal vorab innerhalb der Entwicklungsumgebung austesten, um die gröbsten Fehler auszumerzen. Per Remote Debugging können die Programme in einem zweiten Schritt auch direkt auf der Hardware ausgetestet werden.
Das .Net-Compact-Framework unterstützt derzeit PocketPC 2000 und 2002 sowie alle Geräte, die auf Windows CE .Net basieren. Eine Version für SmartPhone PocketPCs wird erst zu einem späteren Zeitpunkt nachgeschoben werden. Leider ist auch die Compact-Ausgabe von .Net punkto Plattform-Support eine Microsoft-only Angelegenheit; von der einst angekündigten Version für das PalmOS fehlt derzeit noch jede Spur.
.Net-Applikationen werden bekanntlich erst zur Laufzeit von der Common Language Runtime (CLR) in binären Maschinencode übersetzt. Der Visual-Studio-Compiler kaut den Source-Code lediglich für die Runtime vor und erzeugt dazu den leichter verdaulichen MSIL-Zwischencode (Microsoft Intermediate Language). Das macht .Net-Programme viel anfälliger auf Code-Klau und Reverse Engineering, weil sich MSIL-Anweisungen mit Hilfe eines Decompiler problemlos wieder in gut lesbaren Source-Code zurückverwandeln lassen. Um genau das zu verhindern, verfügt Visual Studio nun erstmals über einen Obfuscator, der für mehr Verwirrung im Code sorgen soll. Durch Ersetzen von "freundlichen" Variablennamen und Entfernen von Metadaten wird der Code derart verändert, dass er auch nach einer Dekompilierung nur schwer verstanden werden kann. Leider handelt es sich beim Dotfuscator, den Microsoft von PreEmptive-Solutions lizenziert hat, lediglich um die Light-Ausgabe des viel wirksameren Dotfuscator Professional. Wer kommerzielle Software entwickelt und seinen Code bestmöglich schützen will, wird um einen Upgrade auf die Professional-Version nicht herumkommen.
In Sachen Web Services hat sich bei Visual Studio 2003 herzlich wenig getan. Etwas verbessert wurde die Dialog-Box, die für das Zufügen von Web-Service-Referenzen verantwortlich ist. So wird ein angewähltes WDSL-File nun nicht mehr in kryptischem XML, sondern als sauber formatierte Webseite mit Erklärungen und den verfügbaren Methoden angezeigt. Dank den Web Service Enhancements, die bislang ebenfalls als Download erhältlich waren, werden die aktuellsten Web Service Standards wie WS-Routing, WS-Security, WS-Attachments und DIME (Direct Internet Message Encapsulation) unterstützt. Da die Entwicklung bei den Web Service Standards der WS-I schnell voranschreitet, wird Microsoft für die Überbrückung bis zum Visual-Studio-Release wohl nicht um die Herausgabe einiger Add-ons herumkommen.
Alles in allem hauen die Neuerungen, die Visual Studio 2003 zu bieten hat, sicherlich niemanden aus den Schuhen - insbesondere, wenn man bedenkt, dass viele der angepriesenen Novitäten bereits als Download verfügbar waren. Wer aber Applikationen für .Net-Framework 1.1 entwickeln will, muss auf jeden Fall upgraden. Echte Innovationen wird es erst mit dem nächsten Visual-Studio-Release geben, der sich derzeit unter dem Codenamen "Whidbey" in Entwicklung befindet und im Laufe des Jahres 2004 kommt. Zu den zu erwartenden Neuerungen zählen etwa die bereits erwähnten C#-Erweiterungen, Integration mit der nächsten SQL-Server-Generation ("Yukon"), "Edit and Continue"-Debugging und eine komplett überarbeitete ASP.Net-Version.