.NET Framework
Eintrag zuletzt aktualisiert am: 12.11.2023
Das .NET Framework ist die ursprüngliche Variante von Microsoft .NET, die Microsoft in den Jahren 2002 bis 2019 veröffentlicht hat. Das .NET Framework wurde seit 2016 schrittweise von
.NET Core abgelöst, wobei
.NET Core seit Ende 2020 mit Erscheinen der Version 5.0 offiziell nur noch ".NET" heißt.
Das .NET Framework (abgekürzt .NET) ist eine in direkter Konkurrenz zu
Java stehende betriebssystem- und hardwareneutrale Softwareentwicklungsplattform.
Versionsgeschichte des klassischen .NET Framework:
Erste Erwähnung durch Bill Gates: Juni 2000
Erste öffentliche Alpha-Version: Juli 2000 auf
Professional Developers Conference (
PDC)
Bedeutung
Das im Jahr 2002 eingeführte .NET Framework hat – im Gegensatz zu anderen, von Microsoft zum Hype erklärten Neuerungen – die Softwareentwicklung auf der Windows Plattform grundsätzlich verändert. Vergleichbare Veränderungen waren der Schritt von
DOS zu Windows und von 16-Bit-Windows zu 32-Bit-Windows.
Technische Merkmale des .NET Framework
Wesentliche Merkmale des .NET Framework sind:
Plattformunabhängigkeit durch Zwischensprache /
Intermediation mit
Just-in-Time-Compiler wie bei
Java (
Write Once Run Anywhere-Prinzip)
Sprachunabhängigkeit (mehr als 70erschiedene
Programmiersprachen) mit sprachübergreifenden Aufrufen und sprachübergreifender
Vererbung
Durchgängige
Objektorientierung: auch elementare Datentypen wie Zahlen und Zeichenketten sind Objekte
Unterstützung für wiederverwendbare
Softwarekomponenten
Verschiedene Anwendungstypen (Fat-Clients, Standard-Webanwendungen,
Rich Internet Applications,
Systemdienste, Webdienste, Pocket-Programmcode-Anwendungen, SmartPhone-Anwendungen)
Einheitliche Laufzeitumgebung mit Diensten wie Codeüberprüfung (Sicherheit, Array-Grenzen etc.),
Threading, Speicherbereinigung und
Ausnahmebehandlung
Umfangreiche Klassenbibliothek mit mehr als 12.000 Klassen, einheitlich für alle .NET-fähigen Pro-grammiersprachen
XML-basierte Konfiguration von Anwendungen (Abkehr von der Windows-
Registrierungsdatenbank)
Parallelbetrieb verschiedener .NET Framework-Versionen (eine .NET-Anwendung startet automatisch mit der Framework-Version, für die sie entwickelt wurde)
Bereitstellen von
Metadaten über den Programmcode (automatische
Metadatengenerierung und manu-elle
Metadaten)
Lose Schnittstellenverträge, die ermöglichen, dass man Klassenmitglieder ergänzt, ohne den Schnitt-stellenvertrag zu brechen (Der Vertrag wird erst gebrochen, wenn man Mitglieder oder Parameter ent-fernt bzw. Datentypen ändert.)
Xcopy-Deployment (Verteilung von Anwendungen durch einfaches Kopieren der Programmdateien sowie der zugehörigen Bibliotheken und
Ressourcendateien)
Interoperabilität zu älteren Plattformen (COM, Windows 32
API) sowie über
XML-Webservices zu anderen Plattformen
Schutz vor »gefährlichem« Programmcode durch Sandbox-Konzepte wie in
Java.
Links:
http://msdn.microsoft.com/net/
http://www.dotnetframework.de/
Varianten:
Eine Differenzierung in allgemeine Anwendungen (
Java SE) und Unternehmensanwendungen (
Java EE) gibt es nicht. .NET differenziert vielmehr zwischen Funktionen für den Client („
.NET Framework Client Profile“) und zusätzlichen Funktionen für Server („.NET Framework Extended“).
Kernbausteine des .NET Framework
Common Language Runtime (
CLR)
Laufzeitumgebung mit Gar-bage Collector,
Exception Handling, Multi-
Threading, Code-Sicherheit, u.a.
Microsoft Intermediate Language (
MSIL)
Zwischensprache
Common Type System (
CTS)
Sprachunabhängiges
Typkonzept
Common Language Specification (
CLS)
Regelwerk für Sprachinteroperabilität
C#,
Managed C++,
Visual Basic .NET, Jscript .NET, C#, u.a.
.NET-fähige Programmierhochsprachen
.NET Framework Class Library (
FCL)
Klassenbibliothek
Zu der Klassenbibliothek gehören auch die Benutzerschnittstellentechnologien wie
ASP.NET,
Windows Forms und
WPF, ebenso wie Datenzugriff (ADO.NET,
ADO.NET Entity Framework,
System.Xml) und Verteilungstechnologie wie
.NET Remoting und
WCF.
Geschichte
.NET kann als die dritte Evolutionsstufe der Programmierung mit Microsoft Windows bezeichnet werden. In Zeit vor 1993 wurden Windows-Anwendungen hauptsächlich mit C und C++ geschrieben. Das Wieder-verwendungsmodell basierte auf einfachen
C-DLL. Verteilung basierte auf
Remote Procedure Calls (
RPC). Für den Zugang zu Betriebssystemresourcen stand das Windows-16-
API, später das Windows-32-
API, jeweils als eine Sammlung von DLLs zur Verfügung. Skriptprogrammierung basierte auf der
DOS-Shell-Batchsprache.
1993 führte Microsoft das Component Object Model (COM) und später auch die Verteilung auf Basis des
Distributed Component Object Model (
DCOM). COM/
DCOM stellte ein sprachunabhängiges Software-komponnetenmodell dar. Es gab mit Visual Basic, Delphi,
VBScript,
JavaSctipt,
Perl u.a. Sprachen, die COM/
DCOM nutzten. Skriptprogrammierung wurde im Rahmen von "
Active Scripting" stark verallge-meinert und diente nun nicht mehr nur dem Scripting des Betriebssystems, sondern auch innerhalb von Anwendungen wie dem
Internet Explorer-
Webbrowser und dem Microsoft Exchange-Mailserver. Viele Teile des Windows-32-
API wurden in
COM-Komponenten gekapselt.
Trotz des gemeinsamen
Komponentenmodells musste jede
Programmiersprache unter Windows weiterhin eine eigene Laufzeitumgebung implementieren, insbesondere auch für den Zugriff auf lokale und entfernte Komponenten. Dies führte zu großen Unterschiedenen in der Programmierung. Auch waren
COM-Komponenten nicht plattformneutral. Sie lagen immer in Maschinencode vor, der für jede Prozessorarchi-tektur und jedes Betriebssystem separat zu kompilieren war. Zudem bot COM kein Sicherheitsmodell zum Schutz vor bösem Code. Eine weitere Schwäche vom COM war, dass
Softwarekomponenten in der Win-dows-
Registrierungsdatenbank verzeichnet werden mussten und es dort schnell zur sogenannten "DLL-Hölle" kam, wenn zwei Anwendungen jeweils eine verschiedene Version einer einzigen
COM-Komponente benötigten.
Das 2002 eingeführte .NET Framework eliminierte diese Nachteile. Es gibt zahlreiche Programmierspra-chen für .NET, die alle auf die .NET-Laufzeitumgebung zurückgreifen. Das Kompilat verwendet genau wie
Java eine Zwischensprache, sodass .NET plattformneutral ist. .NET bietet ein Sicherheitsmodell und erfordert nicht mehr, dass man
Softwarekomponenten in der Windows-
Registrierungsdatenbank zentral verzeichnet. Jede Anwendung kann vielmehr eine eigene, dezentrale Version einer Komponente besitzen, sodass die "DLL-Hölle" vermieden wird. Die Verteilung hauptsächlich basiert auf dem plattformunabhän-gigen Webservices.
Auch fast 10 Jahre nach der Einführung von .NET basieren heute aber noch sehr viele Anwendungen auf den beiden Vorgängermodell. Auch das Windows-Betriebssystem selbst basiert noch komplett auf C, C++ sowie COM/
DCOM. Nicht alle Funktionen des Windows-Betriebssystem stehen als .NET-
Softwarekomponente zur Verfügung und Microsoft führt auch in neuen Windows-Betriebssystemen immer neue C-basierte Programmierschnittstellen ein ohne dafür einen
Wrapper als
.NET-Komponente bereitzu-stellen.
Daher ist die Abwärtskompatibilität sehr wichtig. .NET kann auf sowohl COM/D
COM-Komponenten als auch
C-DLLs zugreifen. Auch umgekehrt kann man von den alten Welten auf
.NET-Komponenten zugrei-fen.