Freigeben über


Übersicht über die Common Language Runtime

Compiler und Tools machen die Funktionen der Laufzeit verfügbar und ermöglichen das Schreiben von Code, mit dem die Vorteile dieser verwalteten Ausführungsumgebung genutzt werden können. Mit einem Sprachcompiler für die Common Language Runtime entwickelter Code wird "verwalteter Code" genannt. Dieser nutzt Features wie sprachübergreifende Integration, sprachübergreifende Ausnahmebehandlung, erhöhte Sicherheit, Unterstützung bei der Versionserstellung und Bereitstellung, ein vereinfachtes Modell für die Interaktion von Komponenten sowie Debug- und Profilerstellungsdienste.

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 Framework-Anwendung verwaltete Daten, nicht verwaltete Daten oder beides gleichzeitig verwendet werden. Da Sprachcompiler ihre eigenen Typen, z. B. primitive Typen, bereitstellen, wissen Sie möglicherweise nicht (oder müssen nicht wissen), ob die 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 wird durch die Verwendung eines von der Common Language Runtime definierten allgemeinen Typsystems durch Sprachcompiler und Tools für die Common Language Runtime ermöglicht. Hierbei werden die Regeln der Common Language Runtime für die Definition neuer Typen, das Erstellen, Verwenden und Beibehalten von Typen sowie für die Typenbindung befolgt.

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 über die definierten Typen sowie deren Abhängigkeiten gemeinsam mit dem Code als Metadaten gespeichert, wodurch die Replikation und das Entfernen von Komponenten wesentlich vereinfacht werden.

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. Dies hat zur Folge, dass einige Features der Laufzeit möglicherweise in unterschiedlichen Umgebungen unterschiedlich wahrgenommen werden. 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 Sprachfeatures wie Vererbung, Schnittstellen und Überladen für objektorientiertes Programmieren, Unterstützung für explizites Freethreading zum Erstellen skalierbarer Multithreadanwendungen, Unterstützung für strukturierte Ausnahmebehandlung und benutzerdefinierte Attribute.

Wenn Sie Microsoft® Visual C++® .NET verwenden, können Sie mithilfe von Visual C++ verwalteten Code schreiben. Dies bietet Ihnen die Vorzüge einer verwalteten Ausführungsumgebung sowie Zugriff auf leistungsfähige Funktionen und aussagekräftige Datentypen, mit denen Sie bereits vertraut sind. Weitere Features der Common Language Runtime sind:

  • Sprachübergreifende Integration, insbesondere sprachübergreifende Vererbung.

  • Garbage Collection zum Verwalten der Lebensdauer von Objekten, sodass Verweiszählungen nicht erforderlich sind.

  • Selbstbeschreibende Objekte, durch die die Verwendung von IDL (Interface Definition Language, Schnittstellendefinitionssprache) nicht mehr erforderlich ist.

  • Die Möglichkeit, den Code nach einmaliger Kompilierung auf jedem Prozessor und unter jedem Betriebssystem auszuführen, die die Laufzeit unterstützen.

Verwalteter Code kann auch in C# geschrieben werden. Dies bietet folgende Vorteile:

  • Vollständig objektorientierter Entwurf.

  • Sehr starke Typsicherheit.

  • Eine gute Kombination des einfachen Aufbaus von Visual Basic und der Leistungsfähigkeit von C++.

  • Garbage Collection.

  • Syntax und Schlüsselwörter ähnlich wie in C und C++.

  • Verwendung von Delegaten anstelle von Funktionszeigern zur Verbesserung der Typsicherheit. Funktionszeiger sind über das C#-Schlüsselwort unsafe und die Option /unsafe des C#-Compilers (Csc.exe) für nicht verwalteten Code und nicht verwaltete Daten verfügbar.

Siehe auch

Konzepte

Der verwaltete Ausführungsprozess

Weitere Ressourcen

Übersicht über .NET Framework