Visual Studio 2005: Komfortable .Net-Werkstatt
Artikel erschienen in Swiss IT Magazine 2005/20
Lange hat es gedauert, nun ist sie endlich da: die neue Entwicklungsumgebung von Microsoft. Eigentlich hätte Visual Studio 2005 bereits vor Jahresfrist auf den Markt kommen sollen. Die Ursache für die Verspätung lag aber weniger am Entwicklungsfortschritt von Visual Studio 2005 selber, sondern vielmehr am SQL Server 2005, dessen Entwicklung auf Grund der Integration von .Net 2.0 länger in Anspruch nahm als ursprünglich geplant. Gleich vorweg: Die Wartezeit hat sich gelohnt. Visual Studio 2005 macht punkto Funktionsumfang und Komfort einen Quantensprung. Wer einmal einen Tag lang mit der neuen Umgebung programmiert hat, wird nur noch zähneknirschend zu Visual Studio .Net 2003 zurückkehren.
Der allgemeine Trend bei Microsoft, Produkte in immer zahlreicheren, auf unterschiedliche Zielgruppen zugeschnittenen Versionen auf den Markt zu bringen, macht auch vor Visual Studio 2005 nicht halt. So ist die Entwicklungsumgebung in fünf unterschiedlichen Ausgaben verfügbar (siehe auch Tabelle «Visual-Studio-Editionen im Vergleich»), von denen es zum Teil wiederum verschiedene Sub-Varianten gibt:
Express Edition: Die vorerst kostenlos erhältlichen Express-Ausgaben (http://lab.msdn.microsoft.com/vs2005) sind vor allem für Neueinsteiger und Hobby-Programmierer gedacht. Entsprechend dieser Zielgruppe wurde auch der Funktionsumfang eingedämmt. So gibt es beispielsweise nur lokalen Support für Datenbank-Zugriffe (ausser bei Visual Web Developer) oder keinen Klassendesigner. Für die Entwicklung von WinForms-Anwendungen gibt es Visual Studio Express in je einer Variante für C#, Visual Basic, J# sowie C++. Visual Web Developer (VWD) ist der inoffizielle Nachfolger von ASP.Net Webmatrix und richtet sich an ASP.Net-Entwickler.
Standard Edition: Auch die Standard-Variante ist eher als Einstiegsversion zu sehen, unterstützt aber im Gegensatz zu den Express-Varianten alle .Net-Sprachen von Microsoft und ist sowohl für WinForms- als auch für ASP.Net-Anwendungen geeignet.
Professional Edition: Wer ernsthafte Geschäftsanwendungen entwickeln will, sollte mindestens auf die Professional-Ausgabe zurückgreifen. Erst in dieser Version gibt es für den Enterprise-Einsatz wichtige Funktionen wie die SQL-Server-2005-Integration, 64-Bit-Support oder bessere Deploymenttools.
Tools für Office: Diese Variante von Visual Studio 2005 ist ausschliesslich für die Entwicklung von auf Office 2003 basierenden Anwendungen gedacht. Unterstützt werden Excel, Word und InfoPath 2003. Outlook-2003-Support befindet sich noch in der Betaphase und wird später als separater Download nachgeliefert.
Team System: Der Nachfolger der bisherigen Enterprise Edition bringt eine Reihe von neuen Werkzeugen für das Lifecycle Management und die Entwicklung im Team (siehe auch separaten Abschnitt am Ende des Artikels). Team System gibt es in Versionen für Architekten, Developer und Tester. Diese umfassen jeweils nur einen Teil der Werkzeuge. Ausserdem gibt es eine Team Suite, die über alle Tools verfügt. Team System kann nur in Zusammenhang mit einem MSDN-Abonnement erworben werden.
Visual-Studio-Editionen im Vergleich
Die Steigerung der Entwicklerproduktivität ist eines der Hauptziele, welches sich Microsoft bei der Konzeption von .Net 2.0 auf die Fahne geschrieben hat. Die Umsetzung dieses Ziels manifestiert sich nicht nur in den Erweiterungen der Klassen des .Net Frameworks, sondern auch in den vielen neuen Komfortfunktionen der Visual-Studio-Umgebung. Eine der augenfälligsten Neuerungen ist das Change Tracking. Dieses markiert am linken Rand des Editorfensters durch eine gelbe Linie alle Zeilen, die seit dem letzten Öffnen des Files bearbeitet wurden. Geänderte Codezeilen, die bereits kompiliert worden sind, werden mit einer grünen Linie angezeigt.
Sehr praktisch ist die neue Code-Snippet-Funktion. Dabei handelt es sich um vorbereitete Codebausteine, die sich auf Tastendruck in den Code einfügen lassen. Will ein Entwickler beispielsweise in C# einen try/catch-Block einbauen, reicht die Eingabe von «try» und ein Druck auf die Tab-Taste. Visual Studio 2005 erzeugt dann automatisch das gesamte Gerüst der try/catch-Anweisung. Während im Visual-Basic-Editor eine riesige Auswahl an Snippets aus unterschiedlichen Themenbereichen wie Networking, Datenzugriff oder Sicherheit zu finden sind, werden bei C# seltsamerweise nur die Basiskonstrukte (Klassen, Interfaces, ForEach-Statement etc.) geliefert. Entwickler können die Snippet-Bibliothek um eigene Codeblöcke erweitern und diese auch im Team teilen.
Sehr hilfreich sind auch die SmartTasks, die innerhalb des Designers beim Plazieren von Controls zum Einsatz kommen. Konkret handelt es sich dabei um Pop-up-Menüs, die direkt neben dem entsprechenden Control eingeblendet werden. Über diese Menüs erhält der Entwickler schnellen Zugriff auf die wichtigsten Eigenschaften des Control und kann dieses so mit wenigen Handgriffen konfigurieren. So werden beispielsweise neben einem GridView-Control, das für die tabellarische Darstellung von Daten zuständig ist, gleich die Kommandos zum Einstellen der Sortierung, des Paging und des Editiermodus eingeblendet.
Im weiteren finden sich in Visual Studio viele kleinere Detail-Neuerungen, die den Entwickleralltag erleichtern. Dazu gehören etwa die automatische Formatierung in C#, die den Code entsprechend den Einstellungen selbsttätig einrückt, oder der «Surround With»-Befehl, mit dem sich markierter Code in eine neu eingefügte Anweisung einschliessen lässt.
Visual-Basic-Entwickler kommen in den Genuss von einigen exklusiven Goodies, die es in sich haben. Viele Visual-Basic-Entwickler wurden bislang durch die erhöhte Komplexität, die die Umstellung auf .Net mit sich bringt, abgeschreckt. Dabei wurden sogar Stimmen laut, die Microsoft aufforderten, Visual Basic wieder einfacher zu machen und auf Basis der Version 6.0 weiterzuentwickeln. Microsoft scheint diese Wünsche ernstgenommen zu haben und hat Visual Basic um einige interessante Hilfen erweitert, die den Umstieg in die .Net-Welt zumindest zu einem Teil erleichtern werden.
Das Highlight in Visual Basic schlechthin ist der My-Namespace. Dahinter verbirgt sich eine Reihe von Klassen, die mit wenigen Handgriffen Zugang zu häufig benötigten Funktionen bieten, die in den Tiefen der .Net-Klassenbibliotheken oder im aktuellen Projekt verborgen sind. Via My.Computer.Filesystem erhält man beispielsweise direkten Zugriff auf alle wichtigen Funktionen für den Umgang mit dem Dateisystem (Verzeichnis erzeugen, Datei kopieren etc.).
Bei fehlerhafter Syntax liefert der Visual-Basic-Editor – ähnlich wie die Rechtschreibprüfung in Word – Vorschläge für die Fehlerbehebung. Noch weiter geht der Exception Helper, der bei Laufzeitfehlern detailliert Auskunft über mögliche Ursachen und Tips zur Lösung des Problems gibt.
Unter Visual C# werden Projekte im Solution Explorer in einer übersichtlicheren Struktur dargestellt. Im Properties-Ordner werden alle Dateien aufgelistet, welche die Einstellungen und Ressourcen des Projekts betreffen. Ein Doppelklick auf den Properties-Folder öffnet nun den Konfigurations-Screen des Projekts, der ständig parallel zum Formular-Designer und dem Code-Editor über eine Registerlasche angewählt werden kann. Über den Konfigurations-Screen ist auch der Designer für die in Visual Studio 2005 neu hinzugekommenen Application Settings zugänglich. Hier können für das Projekt an zentraler Stelle Einstellungen wie beispielsweise ein Connection String hinterlegt werden. In Visual Basic lassen sich diese dann über die Klasse My.Settings abrufen. Im Projekt-Explorer sieht man auch sehr schön, wie der Einsatz der neuen Partial Classes (siehe Kasten «Spracherweiterungen») zu mehr Übersichtlichkeit verhelfen kann. So wird jetzt der generierte Code, der das Design von WinForms-Formularen beschreibt, in eine separate Datei (z.B. Form1.Designer.cs) ausgelagert.
Endlich führt Microsoft mit Visual Studio 2005 die seit langem überfälligen Werkzeuge für das Refactoring ein. Dabei handelt es sich um eine Reihe von Methoden, mit deren Hilfe sich Code umstrukturieren und dadurch besser aufbereiten lässt. Dazu stellt Visual Studio 2005 die folgenden Refactoring-Methoden zur Verfügung: «Extract Method», «Encapsulate Field», «Extract Interface», «Reorder Parameters», «Remove Parameters», «Rename» und «Promote local Variable to Parameter». Mit der Funktion «Rename» lässt sich beispielsweise eine Variable umbenennen. Dabei stellt Visual Studio sicher, dass die Variable an allen Stellen des Projekts umbenannt wird. Leider gibt es das Refactoring nur in C#. Immerhin können Visual-Basic-User das Tool Refactor! von Developer Express kostenlos von der MSDN-Site herunterladen. Dieses lässt sich als Add-in in die Visual-Studio-Umgebung einklinken und verfügt über einen ähnlichen Funktionsumfang wie die in C# integrierten Refactoring-Werkzeuge.
Visual Studio 2005 kommt erstmals auch mit einem Klassendesigner. Damit lassen sich Klassen und deren Abhängigkeiten visuell erstellen. Über ein Eigenschaftsfenster können die Klassen direkt mit Methoden, Properties, Variablen und Ereignissen ausgerüstet werden. Ein besonders interessanter Aspekt dabei ist, dass Source-Code und Diagramme synchron geschaltet sind. Änderungen am Code werden automatisch in den Diagrammen nachgetragen und umgekehrt. Schade, dass der Klassendesigner nicht in den Express-Versionen enthalten sein wird, denn der Designer eignet sich nicht nur zum Modellieren, sondern auch zum Analysieren und Verstehen von bestehendem Code. Für Einsteiger, für welche die Express-Ausgaben gedacht sind, wäre das eine willkommene Hilfe gewesen. Praktisch ist auch die Object Test Bench, mit der sich Objekte zur Design-Zeit instanzieren und ad hoc austesten lassen.
Mit Visual Studio 2005 kommt auch das von vielen Entwicklern vermisste Edit-and-Continue-Debugging zurück, das es bereits unter Visual Basic 6.0 gab. Dabei kann der Code während einer Debugging-Sitzung geändert und das Programm ohne Neukompilierung fortgesetzt werden. Edit-and-Continue gibt es nicht nur wie ursprünglich geplant in Visual Basic, sondern auch in C#. Sehr hilfreich beim Inspizieren von komplexen Objekten sind die Visualizers, die deren Inhalt in übersichtlicher Form darstellen können. Ein DataSet wird beispielsweise anschaulich in Form einer DataGrid-Ansicht angezeigt.
Auch das Codeless Databinding feiert sein Comeback. Damit lassen sich Datenbank-gebundene Web- oder Windows-Formulare erstellen, ohne dass dabei Code geschrieben werden muss. Statt dessen braucht man bloss die entsprechenden Con-trols per Drag&Drop auf dem Formular zu plazieren und die notwendigen Einstellungen mit Hilfe der oben erwähnten Smart Task zu setzen.
Sowohl für WinForms als auch für ASP.Net gibt es neue Controls. Im Bereich WinForms zählen etwa ein Web-Browser-Control, ein Container für Office Dokumente, ein besseres Control für gesplittete Ansichten und neue Bausteine zum Anzeigen von Daten dazu. Zudem sind auch stark verbesserte Controls für Menüs und Toolbars zu finden. Auch ASP.Net-Entwickler werden sich punkto Controls künftig weniger bei Drittanbietern eindecken müssen. So liefert Microsoft nun einige bislang vermisste Komponenten mit. Dazu gehören etwa Navigations-Controls für Pull-down-Menüs, Breadcrumbs oder Tree-Menüs, Login- und Passwort-Handling, Wizards oder Image Maps. Wie bei WinForms gibt es auch in ASP.Net ein leistungsstärkeres GridView-Control, bei dem Paging und Sorting neu nicht mehr von Hand codiert werden müssen.
ASP.Net-Entwickler kommen aber nicht nur in den Genuss von neuen Controls, sondern erhalten auch bei der Entwicklungsumgebung einige interessante neue Features geboten. Dazu zählt etwa das Project-less-Development. Hier werden ASP.Net-Applikationen nicht mehr in einem Projektfile zusammengefasst, sondern direkt auf der Dateisystemebene verwaltet. Das vereinfacht nicht nur die Entwicklung im Team, sondern auch das Deployment von ASP.Net-Anwendungen. Mit in der Visual-Studio-Umgebung integriert ist ein FTP-Client-ähnliches Deployment-Tool, mit dem sich eine ASP.Net-Anwendung oder einzelne Dateien auf den Webserver kopieren lassen.
Bei bisherigen Visual-Studio-Versionen machten viele Webentwickler jeweils einen riesigen Bogen um den Design-Modus im HTML-Editor. Der Grund: Beim Wechseln zwischen Design- und HTML-Modus formatierte Visual Studio den HTML-Code nach eigenem Gutdünken um. Ab Visual Studio 2005 gehört dies der Vergangenheit an. Von Hand erstellter HTML-Code wird nicht mehr angerührt. Erfreulich ist auch, dass die IntelliSense-Unterstützung im Code-Editor verbessert wurde. Ausserdem bietet Visual Studio jetzt eine automatische HTML-Validierung während des Editierens. Dabei kann der Entwickler wählen, nach welcher Spezifikation (HTML 4.01, XHTML 1.0, 1.1, IE 6.0, Netscape 4.0 etc.) er seinen Code validiert haben möchte.
ASP.Net-Anwendungen lassen sich neu vorkompilieren. Dadurch wird die aus der On-the-fly-Kompilierung resultierende Performance-Einbusse beim ersten Aufruf einer ASP.Net-Site eliminiert. Ein weiterer Vorteil: Die aus der Pre Compilation erzeugte DLL kann neben den Code- auch alle nötigen ASPX-Dateien enthalten und lässt sich so bequem auf den Webserver kopieren. Vor allem bei Hosting- oder Lizenzierungs-Szenarios hilft dieses Feature, ASP.Net-Anwendungen besser gegen unerwünschte Veränderungen und Codeklau zu schützen.
Im Rahmen von Visual Studio 2005 werden auch die Office-Werkzeuge neu aufgelegt. Das Produkt, das den etwas lang geratenen Namen Visual Studio 2005 Tools for the Microsoft Office System (kurz VSTO 2005) trägt, bringt wichtige Neuerungen wie etwa die Trennung von Daten und Ansichten in Office-Dokumenten mit Hilfe von XML Data Islands oder die zentrale, serverseitige Speicherung von Office-Komponenten. Microsoft hat auch die Integration zwischen Visual Studio 2005 und VSTO 2005 verbessert. So werden Word und Excel für das Design von Dokumenten direkt in Visual Studio gehostet.
Den Bereich Software Lifecycle Management hat Microsoft in den Entwicklungswerkzeugen bislang sträflich vernachlässigt. Mit der Team System Edition von Visual Studio 2005, die die bisherige Enterprise Edition von Visual Studio 2003 ersetzen wird, schliesst der Softwareriese nun diese Lücke. Im Grunde genommen ist die Team Edition eine Sammlung von unterschiedlichen Werkzeugen, die den Software-Entwicklungsprozess von der Planung bis zur Auslieferung abdecken. Das Team System wird wie eingangs erwähnt in unterschiedlichen Editionen auf den Markt kommen, die jeweils auf Architekten, Entwickler und Tester zugeschnitten sind. Ergänzend zum Team System wird es noch den Team Foundation Server geben, der eine Reihe von zentralen Diensten für Teamarbeit, Projektüberwachung sowie ein neues Source- und Versionsmanagement zur Verfügung stellen wird.
Für Architekten bietet Visual Studio Team System eine Reihe von Modeling-Werkzeugen mit denen sich Service-orientierte Systeme (SOA), Serverinfrastrukturen und deren Deployment planen und designen lassen. Entwickler erhalten Werkzeuge für Code Analyzing und Profiling. Dafür wurde unter anderem auch das beliebte Freeware-Tool FxCop integriert, mit dem sich Code auf die Einhaltung von Coding-Standards überprüfen lässt. Die Test-Ausgabe hilft beim Austesten der Software. Sehr praktisch ist das integrierte Unit Testing, mit dem sich Code in TDD-Manier (Test Driven Development) automatisiert testen lässt. Eigentlich schade, dass Microsoft dieses hilfreiche Werkzeug nicht auch in den preiswerteren Editionen von Visual Studio 2005 mitliefert. Ergänzend zum Unit Testing gibt es auch Hilfen, um Load Tests durchzuführen. So kann die Leistungsfähigkeit einer Webapplikation durch die Simulation von mehreren gleichzeitigen Benutzerzugriffen vor dem eigentlichen Deployment überprüft werden.
Mit der Markteinführung des .Net Framework 2.0 gibt Microsoft
gleichzeitig auch den Startschuss
für einige – vor langer Zeit angekündigte – Spracherweiterungen. Diese stehen teilweise in allen
.Net-Sprachen, manchmal aber
auch nur in der Sprache C# zur Verfügung:
Generics (C#, VB, C++, J#): Simpel ausgedrückt, erlauben Generics das Schreiben von Code, der universell für verschiedene Datentypen verwendet werden kann. So lassen sich beispielsweise Klassen und Methoden so definieren, dass sie unterschiedliche Datentypen akzeptieren können (z.B. Integer und String).
Partial Types (C#, VB): Mit den Partial Types kann der Code von Klassen und Strukturen auf mehrere Dateien verteilt werden. Der Vorteil: Riesige Codewüsten können in mehrere übersichtliche Dateien aufgeteilt werden.
Iteratoren (C#): Die Implementation von Typen, die sich iterativ (mit einer Foreach-Schlaufe) abarbeiten lassen, war bislang mit gewissem Aufwand verbunden. Mit den Iteratoren erhält C# nun ein neues Konstrukt, mit dem innerhalb eines Typs (Klasse, Struktur etc.) definiert werden kann, wie deren Inhalt mit einer Foreach-Schleife durchlaufen werden muss.
Anonyme Methoden (C#): Mit anonymen Methoden lässt sich die Delegate-Syntax, die unter anderem beim Event Handling zum Einsatz kommt, vereinfachen. Der Trick dabei: Statt der tatsächlichen Implementierung einer Delegate-Methode übergibt man einfach nur den auszuführenden Quellcode.
Nullable Types (C#): Mit den Nullable Types, die den Wert null annehmen können, kann jetzt ausgedrückt werden, dass ein Typ im Moment noch leer ist respektive noch nicht initialisiert wurde.
Gemeinsam mit Visual Studio 2005 kommt auch das .Net Framework in einer generalüberholten Version 2.0 auf den Markt. Die Neuerungen betreffen sowohl das Herzstück von .Net, die Common Language Runtime (CLR), als auch die Klassenbibliotheken des Frameworks, die teilweise – wie etwa im Falle von ASP.Net 2.0, ADO.Net oder WinForms – erheblich erweitert wurden. Zu den Erweiterungen in der CLR gehören etwa die Neuerungen in den .Net-Sprachen (siehe Kasten «Die Spracherweiterungen in .Net 2.0»), 64-Bit-Support, Edit-and-Continue-Debugging und Verbesserungen im Bereich Security. Mehr Informationen zu den Neuerungen der CLR und den Klassenbibliotheken finden Sie in Teil 1 und 2 unserer .Net-2.0-Serie in den InfoWeek-Ausgaben 06/05 und 07/05.
(ubi)