Übersicht: Common Language Runtime (CLR)
.NET stellt eine als Common Language Runtime bezeichnete Laufzeitumgebung bereit, die den Code ausführt und Dienste zum Vereinfachen des Entwicklungsprozesses bereitstellt.
Compiler und Tools machen die Funktionen der Common Language Runtime verfügbar und ermöglichen Ihnen das Schreiben von Code, der die Vorteile dieser verwalteten Ausführungsumgebung nutzt. Code, den Sie mit einem Sprachcompiler für die Runtime entwickeln, wird als verwalteter Code bezeichnet. Der verwaltete Code profitiert von Features wie der sprachübergreifenden Integration, der sprachübergreifenden Ausnahmebehandlung, erhöhter Sicherheit, der Unterstützung bei der Versionserstellung und der Bereitstellung, einem vereinfachten Modell für die Interaktion von Komponenten sowie Debug- und Profilerstellungsdiensten.
Hinweis
Compiler und Tools können eine von der Common Language Runtime nutzbare Ausgabe erzeugen, da sowohl das Typsystem, das Format der Metadaten als auch die Laufzeitumgebung (das virtuelle Ausführungssystem) von einem öffentlichen Standard definiert werden, dem Standard für die Common Language Infrastructure von ECMA International. Weitere Informationen finden Sie unter ECMA C# und Common Language Infrastructure Standards.
Damit die Common Language Runtime Dienste für verwalteten Code bereitstellen kann, müssen Sprachcompiler Metadaten ausgeben, mit denen die Typen, Member und Verweise im Code beschrieben werden. Metadata werden gemeinsam mit dem Code gespeichert. Jede PE (Portable Executable)-Datei der Common Language Runtime, die geladen werden kann, enthält Metadaten. Die Laufzeit verwendet Metadaten zum Suchen und Laden von Klassen, Anordnen von Instanzen im Speicher, Auflösen von Methodenaufrufen, Generieren von systemeigenem Code, Erzwingen von Sicherheit und zum Festlegen von Begrenzungen im Laufzeitkontext.
Die Laufzeit behandelt automatisch das Objektlayout und verwaltet Verweise auf Objekte. Diese werden nach Verwendung freigegeben. Objekte, deren Lebensdauer auf diese Weise verwaltet wird, werden als verwaltete Daten bezeichnet. Durch die Garbage Collection werden Speicherverluste sowie einige weitere verbreitete Programmierfehler vermieden. Wenn verwalteter Code verwendet wird, können in einer .NET-Anwendung verwaltete Daten, nicht verwaltete Daten oder beides gleichzeitig verwendet werden. Da Sprachcompiler ihre eigenen Typen bereitstellen, z. B. primitive Typen, wissen Sie möglicherweise nicht, oder müssen nicht wissen, ob Ihre Daten verwaltet werden.
Die Common Language Runtime erleichtert das Entwerfen von Komponenten und Anwendungen, deren Objekte sprachübergreifend interagieren. In unterschiedlichen Sprachen geschriebene Objekte können miteinander kommunizieren. Ihr Verhalten kann in hohem Maße integriert werden. Sie können z. B. eine Klasse definieren und dann in einer anderen Sprache eine Klasse von der ursprünglichen Klasse ableiten oder eine Methode für diese aufrufen. Sie können außerdem eine Instanz einer Klasse an die in einer anderen Sprache geschriebene Methode einer Klasse übergeben. Diese sprachübergreifende Integration ist möglich, da Sprachcompiler und -tools, die auf die Laufzeit abzielen, ein gängiges Typsystem verwenden, das von der Laufzeit definiert wird. Sie befolgen die Regeln der Laufzeit zum Definieren neuer Typen und zum Erstellen, Verwenden, Beibehalten und Binden von Typen.
Sämtliche verwalteten Komponenten enthalten als Teil der jeweiligen Metadaten Informationen über die Komponenten und Ressourcen, für die sie erstellt wurden. Mit diesen Informationen stellt die Common Language Runtime sicher, dass die Komponente oder Anwendung über die angegebenen Versionen aller erforderlichen Elemente verfügt. Dadurch kommt es seltener zu einer Unterbrechung der Ausführung des Codes aufgrund einer Abhängigkeit, deren Voraussetzungen nicht erfüllt sind. Registrierungsinformationen und Zustandsdaten werden nicht mehr in der Registrierung gespeichert, in der sie möglicherweise schwierig zu erstellen und zu verwalten sind. Stattdessen werden Informationen zu den von Ihnen definierten Typen und deren Abhängigkeiten mit dem Code als Metadaten gespeichert. Dies vereinfacht die Komponentenreplikation und -entfernung.
Die Funktionen der Laufzeit werden durch Sprachcompiler und Tools auf eine Weise verfügbar gemacht, dass sie von Entwicklern einfach und intuitiv verwendet werden können. Einige Features der Laufzeit werden möglicherweise in unterschiedlichen Umgebungen unterschiedlich. Die Wahrnehmung der Laufzeit hängt von den verwendeten Sprachcompilern und Tools ab. Visual Basic-Entwickler werden z. B. bemerken, dass die Sprache Visual Basic mit der Common Language Runtime über mehr zusätzliche objektorientierte Features als ohne sie verfügt. In Folgenden sind einige Vorteile der Common Language Runtime aufgeführt:
Leistungsverbesserungen.
Die problemlose Verwendung in anderen Sprachen entwickelter Komponenten.
Erweiterbare Typen, die von einer Klassenbibliothek bereitgestellt werden.
Neue Sprachfunktionen wie Vererbung, Schnittstellen und Überladen für objektorientiertes Programmieren.
Unterstützung für explizites Freethreading zum Erstellen von Multithread- und skalierbaren Anwendungen.
Unterstützung für strukturierte Ausnahmebehandlung.
Unterstützung für benutzerdefinierte Attribute.
Garbage Collection.
Verwendung von Delegaten anstelle von Funktionszeigern zur Verbesserung der Typsicherheit. Weitere Informationen zu Delegaten finden Sie unter Allgemeines Typsystem.
CLR-Versionen
Releases von .NET Core und .NET 5 und höher verfügen über nur eine Produktversion, d. h. es gibt keine separate CLR-Version. Eine Liste von .NET Core-Versionen finden Sie unter Herunterladen von .NET Core.
Die Versionsnummer von .NET Framework entspricht jedoch nicht unbedingt der Versionsnummer der enthaltenen CLR. Eine Liste der Versionen von .NET Framework und der dazugehörigen CLR-Versionen finden Sie unter .NET Framework-Versionen und -Abhängigkeiten.
Verwandte Artikel
Titel | Beschreibung |
---|---|
Der verwaltete Ausführungsprozess | Enthält eine Beschreibung der Schritte, die erforderlich sind, um die Vorteile der Common Language Runtime nutzen zu können. |
Automatische Speicherverwaltung | Erläutert, wie Sie den Garbage Collector zum Belegen und Freigeben von Arbeitsspeicher verwenden können. |
Übersicht über .NET Framework | Beschreibt die wichtigsten Konzepte von .NET Framework, z. B. das allgemeine Typsystem, die sprachübergreifende Interoperabilität, die verwaltete Ausführung, Anwendungsdomänen und Assemblys |
Allgemeines Typsystem | Enthält eine Beschreibung der Deklaration, Verwendung und Verwaltung von Typen in der Laufzeit für die Unterstützung einer sprachübergreifenden Integration. |