.Net – Vorhang auf für den zweiten Akt
Artikel erschienen in Swiss IT Magazine 2005/06
Im Sommer dieses Jahres steht der erste grosse Update der .Net-Technologie seit ihrer Einführung im Februar 2002 an. Hinter der neuen Plattform, die unter dem Codenamen «Whidbey» entwickelt wurde, verbirgt sich nicht nur die komplett renovierte Version 2.0 des .Net Frameworks, sondern auch das neue Visual Studio 2005, das in zahlreichen neuen Varianten, von der Einsteigerversion (Express Edition) bis zur High-end-Ausgabe für die Entwicklung im Team, auf den Markt kommen wird.
Das .Net Framework 2.0 wartet mit vielen Neuerungen in der Common Language Runtime (CLR) und Erweiterungen in den .Net-Sprachen (C#, VB.Net, C++, J#) auf. Erneuert wurden auch die .Net-Klassenbibliotheken, die nicht nur zahlreiche Detailverbesserungen erfahren haben, sondern in einigen Bereichen wie etwa ASP.Net, ADO.Net und WinForms stark erweitert wurden. Ebenfalls mit der «Whidbey»-Plattform verknüpft ist der SQL Server 2005 («Yukon»), der mit der Common Language Runtime (CLR) ausgerüstet sein wird und gleichzeitig mit Visual Studio 2005 in diesem Sommer auf den Markt kommt. Einen ausführlichen Bericht zu Microsofts nächstem Datenbankserver finden Sie in InfoWeek 02/04.
Dieser erste Teil unserer vierteiligen .Net-2.0-Serie steht ganz im Zeichen der Common Language Runtime (CLR), den Verbesserungen in den .Net-Programmiersprachen und WinForms 2.0. Aufgrund der grossen Zahl an Neuerungen widmen wir Teil 2 komplett ASP.Net 2.0 und ADO.Net 2.0. In Teil 3 und 4 werden wir dann Visual Studio 2005 und insbesondere das neue Team System genauer unter die Lupe nehmen.
Das Herzstück von .Net ist die Common Language Runtime (CLR), welche für die Ausführung von .Net-Programmen zuständig ist. Die CLR wurde an vielen Stellen in bezug auf Effizienz und Performance optimiert. Darüber hinaus wurden einige neue Features hinzugefügt, die das Schreiben von Code und das Debugging vereinfachen sollen. Zudem gibt es viele Detailverbesserungen in den Bereichen Security, Lokalisierung und Tracing. Nachfolgend ein Überblick über die wichtigsten Novitäten der CLR:
Generics: Anders als oft angenommen sind die viel diskutierten Generics keine Neuerung, die sich nur auf C# beschränkt, sondern stehen auch in den Sprachen Visual Basic, C++ und J# zur Verfügung. Generics erlauben das Schreiben von Code, der für mehrere Datentypen verwendet werden kann. So lassen sich beispielsweise Klassen und Methoden mit Parametern definieren, die unterschiedliche Datentypen akzeptieren können (z.B. Integer und String). Generics reduzieren nicht nur die Menge an zu schreibendem Code, sondern führen dort zu Performance-Vorteilen, wo Datentypen bislang mühsam umgewandelt werden mussten.
Partial Types: Partielle Typen erlauben es, die Implementierung von Klassen und Strukturen auf mehrere Dateien zu verteilen. Das bietet eine ganze Reihe von Vorteilen. So lassen sich riesige Codewüsten übersichtlich in mehrere Dateien aufteilen. Des weiteren können mehrere Entwickler einfacher an denselben Klassen arbeiten. Ausserdem können manuell geschriebene und generierte Codefragmente fein säuberlich voneinander getrennt werden.
64-Bit-Support: Neu bietet die CLR auch Unterstützung für 64-Bit-Prozessoren von Intel (IA64) und AMD (x64). Da ein Programm in der .Net-Umgebung nur in einen Zwischencode (Intermediate Language) kompiliert wird, der dann von der Common Language Runtime und nicht direkt vom Prozessor ausgeführt wird, müssen Entwickler ihren Code nicht umschreiben, um von den 64-Bit-Features profitieren zu können. Bestehender Code kann direkt auf ein 64-Bit-System übernommen und abgespielt werden; die eigentliche Übersetzung in den 64-Bit-Maschinencode erledigt der Just-in-Time-Compiler (JIT) der CLR.
Edit-and-Continue-Debugging: Die CLR wurde mit Support für Edit-and-Continue-Debugging ausgestattet. Ein Feature, das es bereits in Visual Basic 6.0 gab, das auf der .Net-Plattform bislang aber fehlte. Edit-and-Continue-Debugging ermöglicht, während der Fehlersuche Änderungen am Code vorzunehmen, ohne die laufende Debug-Sitzung verlassen oder den Code neu kompilieren zu müssen. Sowohl Visual Basic.Net als auch C# werden die Edit-and-Continue-Funktion unterstützen.
Neben den beiden bereits erwähnten Neuerungen wie Generics und Partial Types gibt es auch einige Verbesserungen, die ausschliesslich in C# zu finden sein werden. Dazu gehören etwa die Iteratoren. Bislang war die Implementation von Typen, die sich iterativ (mit einer foreach-Schlaufe) abarbeiten liessen, mit grossem 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 abgearbeitet werden muss.
Eine interessante Neuerung sind auch die Anonymen Methoden, die die Delegate-Syntax vereinfachen, die unter anderem beim Event Handling zum Einsatz kommt. Der Trick dabei: Statt der tatsächlichen Implementierung einer Delegate-Methode übergibt man einfach nur den Quellcode, der ausgeführt werden soll. Eine weitere Neuerung sind etwa die Nullable Types, die den Wert null annehmen können, um auszudrücken, dass ein Typ noch leer ist respektive noch nicht initialisiert wurde. Ausserdem gibt es jetzt wie in C++ statische Klassen, deren Methoden sich ohne Instanzierung der Klasse direkt aufrufen lassen.
Mit der Umstellung von Visual Basic 6.0 auf Visual Basic.Net hatte sich Microsoft von der Visual-Basic-Gemeinde viel Kritik eingehandelt. Für viele Visual-Basic-Entwickler waren der Lern- und Umstellungsaufwand einfach zu gross und die neuen .Net-Konzepte zu kompliziert. Mit einigen Anpassungen an der Sprache und neuen Programmierhilfen innerhalb der Visual-Studio-IDE (siehe Teil 3) will Microsoft Visual Basic wieder stärker auf Einsteigerfreundlichkeit und RAD (Rapid Application Development) trimmen und stärker von C# abgrenzen. Neben den bereits erwähnten Neuerungen wie Generics und Partial Types sind in Visual Basic 2005 auch einige exklusive Neuerungen zu finden, die das Coding beschleunigen und vereinfachen sollen. Dazu zählt zweifellos 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 (My.Application, My.User, My.Computer) oder im aktuellen Projekt (My.Forms, My.Resources, My.Settings oder My.WebServices) verborgen sind. Via My.Computer.Filesystem erhält man zum Beispiel direkten Zugang zu allen wichtigen Funktionen für den Umgang mit dem Dateisystem. Eine weitere Novität ist das Using Statement, das den Umgang mit Ressourcen (z.B. Data Connections), die gesperrt und nach Benutzung wieder freigegeben werden müssen, erheblich einfacher macht. Weitere Spracherweiterungen von Visual Basic 2005 sind etwa das Überladen von Operatoren, explizite Array-Grenzen und die Verwendung von XML zur Code-Dokumentation.
C++ wurde generell besser an die .Net-Umgebung angepasst. So kommt Visual C++ 2005 mit einer wesentlich stärkeren Unterstützung für die CLR und das .Net Framework, um Programme in reinem .Net Managed Code schreiben zu können. Microsoft sieht Visual C++ 2005 neben anderem auch als Migrationstool, mit dem bestehender C++-Code in die .Net- und Longhorn-Ära portiert werden kann. Auch künftig wird C++ die einzige Sprache in der Visual-Studio-Plattform sein, mit der sich Native-Code (auch 64-Bit) erzeugen lässt. Auch beim Generieren von Managed Code soll C++, dank einigen exklusiven Optimierungstechniken, die beste Performance bieten.
Viel Neues gibt’s auch im Bereich Windows Forms (kurz WinForms), Microsofts Technologie für die Entwicklung von klassischen Windows-Applikationen unter .Net. Im Zentrum der Neuerungen stehen vor allem bessere Performance und mehr Produktivität bei der Entwicklung. Ausserdem hat Microsoft WinForms einige neue Controls spendiert. Dazu zählen etwa ein Web-Browser-Control, Container für Office-Dokumente, ein besseres Control für gesplittete Ansichten und neue Bausteine (DataGridView und DataContainer) zum Anzeigen von Daten. Zudem gibt es bessere Controls für Menüs und Toolbars. Diese erlauben die Nachbildung des Look&Feel von Office 2003 in den eigenen Anwendungen.
Eine weitere gewichtige Neuerung von WinForms 2.0 ist ClickOnce. Hinter diesem Begriff verbirgt sich Microsofts No-Touch-Deployment-Strategie, mit der das Verteilen von Windows-Applikationen genauso einfach wie bei einer Web-Anwendung werden soll. Windows-Programme können so konfiguriert werden, dass sie sich direkt von einer Website per Klick auf einen Hyperlink starten lassen. Dabei kann der Entwickler angeben, ob die Applikation nur direkt vom Server gestartet werden kann oder ob sie für die Offline-Nutzung auf den Client heruntergeladen und dort installiert werden darf. Die Sicherheit wird dabei über die Code Access Security des .Net-Frameworks geregelt. Eine lokal installierte Anwendung kann angewiesen werden, automatisch nach Updates zu suchen. Wird eine neue Version publiziert, wird der Benutzer beim nächsten Start angefragt, ob er den neuen Release installieren will.