Die .NET-Versionszählung und die Logik

Der Dotnet-Doktor  –  0 Kommentare

In einigen Kundengesprächen in den letzten Wochen ist mir aufgefallen, wie schwer es für viele .NET-Entwickler ist, Microsofts Versionszählung für .NET und die Zusammensetzungen der kommenden .NET Framework-Versionen zu verstehen.

Früher war alles besser...

Zu Zeiten von .NET 1.0, 1.1 und 2.0 war noch (fast) alles ganz klar: jede .NET-Version hatte ihre eigene Version der Laufzeitumgebung (Common Language Runtime – CLR), ihre eigene Version der Klassenbibliothek (Framework Class Library – FCL) und die eigenen Versionen für die Programmiersprachen Visual Basic .NET, C#, JScript .NET und C++ für .NET (alias Managed C++ bzw. C++/CLI) sowie der Oberflächenbibliotheken ASP.NET und Windows Forms. Nur bei der Sprache C# gab es schon immer einige Ungereimtheiten, denn zu der ersten Version von C# wurde der Sprachcompiler mit der Version 7.0 ausgeliefert. In der nur geringfügig aktualisierten Version 1.1 war es dann 7.1, bei 2.0 war es 8.0. Deshalb sprechen heute einige Entwickler von C# 2.0, andere von C# 8.0 und noch eine weitere Gruppe verwendet C# 2005 – das ist der offizielle Produktname.

Mit .NET 3.0 wird es komplizierter...

Seitdem WinFX zur Version 3.0 von .NET erkoren wurde, ist aber alles viel komplizierter geworden: .NET 3.0 enthält keine neue CLR, keine neue FCL und keine neuen Sprachversionen. Alle diese Bausteine bleiben auf dem Versionsstand (und dem Versionszähler!) 2.0 stehen. Es kommt nur eine einige Bibliothek hinzu, die mit dem Versionszähler 3.0 startet.

Das .NET Framework 3.0 besteht also aus der CLR 2.0, der FCL 2.0, ASP.NET 2.0, Windows Forms 2.0, C# 2.0 (alias C# 2005) und Visual Basic 8.0 (alias Visual Basic 2005) – blauer Bereich in dem Schaubild – und den gelben Ergänzungen

Der Aufbau von .NET im Schaubild
Der Aufbau von .NET im Schaubild (Anklicken, zum Vergrößern!)

Diese Mischung der Versionsnummern hat den Vorteil, dass für .NET 2.0-entwickelte Anwendungen auch reibungslos auf .NET 3.0 funktionieren sollten. .NET 3.0 ist nichts anderes als eine echte Erweiterung für .NET 2.0. Wenn man das .NET Framework 3.0 auf einem Rechner installiert, auf dem schon das .NET Framework 2.0 vorhanden ist, werden nur ein paar zusätzlich Assemblies (DLLs) und Konfigurationsdateien kopiert.

Komplizierter wird die Situation dadurch, dass fast zeitgleich zu .NET 2.0 auch zwei Erweiterungen für .NET 2.0 erscheinen werden, die aber nicht Teil von .NET 3.0 sein sollen:

Ursprünglich war die PowerShell mal ein Teil von WinFX, aus dem dann .NET 3.0 wurde. Und die AJAX-Erweiterungen waren Teil von .NET 3.5. Nun sind beide Bausteine Add-Ons für .NET 2.0

Mit .NET 3.5 wird einiges wieder zusammengeführt...

Die auf .NET 3.0 folgende Version (Codename "Orcas") soll nach aktueller Planung .NET 3.5 heißen und Ende 2007 erscheinen. .NET 3.5 wird im Gegensatz zu .NET 3.0 sehr wohl eine neue Version der CLR, der FCL und der Sprachen enthalten, denn neue Features wie das Objekt-Relational-Mapping (ADO.NET Entity Framework) und Embedded SQL (alias: Language Integrated Query - LINQ) erfordern Änderungen auf allen Ebenen. .NET 3.5 wird dann auch eine erweiterte Version von Microsoft ASP.NET AJAX enthalten. Microsoft hatte angekündigt, eine Grundversion von ASP.NET AJAX schon Ende 2006 auszuliefern und den vollen Funktionsumfang des ehemaligen ATLAS-Projekts dann mit "Orcas" bereitzustellen. Bisher gibt es aber keine Hinweise auf die Reintegration der PowerShell in den Kern von .NET.

Visual Studio hinkt hinterher...

Auch die Entwicklungsumgebung Visual Studio läuft nicht mehr synchron mit .NET:

  • .NET 1.0 entwickelte man mit Visual Studio .NET 2002
  • .NET 1.1 entwickelte man mit Visual Studio .NET 2003
  • In .NET 2.0 nutzt man Visual Studio 2005 (ohne .NET!)
  • Für .NET 3.0 gibt es weiterhin nur Visual Studio 2005. Die Add-Ons für WPF, WCF und WF sind erst in einem frühen Beta-Stadium. Das Entwickeln mit den neuen Bibliotheken wird also zunächst nicht so viel Spaß machen.
  • Erst mit .NET 3.5 wird es dann wieder eine neue Visual Studio-Version geben (wahrscheinlich Visual Studio 2007).

Was soll man davon halten...

Ich habe in den letzten Wochen festgestellt, dass es neben mir noch viele andere .NET-Softwareenwickler gibt, die bei der Versionszählung die Logik vermissen. Es wäre doch sinnvoller gewesen, die Hauptversionsnummer von .NET synchron mit der CLR zu halten und für Erweiterungen, die nur die Klassenbibliotheken betreffen, eine Unternummer zu wählen: also .NET 2.5 statt 3.0 und 3.0 für das, was 3.5 werden soll! Auch die Sonderstellung der AJAX-Erweiterungen ist unglücklich.

Zu erklären ist vieles sicherlich mit historischen Entwicklungen (die ASP.NET-AJAX-Erweiterungen erscheinen viel früher als ursprünglich geplant) und vielleicht auch mit dem Wunsch von Microsoft, hinsichtlich der Versionszählung mit Java aufzuholen. Wenn man an diese These glaubt, dann wird Microsoft die "Orcas"-Version sicherlich 4.0 und nicht 3.5 nennen.

Und um noch etwas Sarkasmus in die Sache zu bringen: Das Gute an den Versionsungereimtheiten ist, dass die .NET-Anwender auch weiterhin Berater wie mich brauchen werden, um den Durchblick zu bekommen :-). Aber ehrlich gesagt wäre es mir manchmal lieber, ich könnte Projektzeiten sinnvoller nutzen, als den Kunden die Versionszählung und Zusammensetzung des .NET Frameworks zu erklären…