Common Language Infrastructure (CLI) ist ein standardisiertes Framework, das von Microsoft für den Aufbau und Betrieb von Anwendungen geschrieben in verschiedenen Programmiersprachen. Es bietet eine sprachneutrale Plattform, die Code-Interoperabilität ermöglicht, sodass verschiedene Sprachen nahtlos zusammenarbeiten können.
Was ist eine gemeinsame Sprachinfrastruktur?
Common Language Infrastructure (CLI) ist eine standardisierte Architektur von Microsoft, die die Entwicklung und Ausführung von Softwareanwendungen unterstützt, die in mehreren höheren Programmiersprachen geschrieben sind. CLI bietet eine Umgebung, in der Code aus verschiedenen Sprachen zusammenarbeiten kann und dabei einen einheitlichen Satz von Diensten und Bibliotheken nutzt.
Dieses Framework umfasst die Definition von Datentypen, Codeausführung und andere Laufzeit Verhaltensweisen, die sicherstellen, dass Programme auf verschiedenen Hardware und Softwareplattformen ohne Änderungen. Durch die Abstraktion der zugrunde liegenden Plattform ermöglicht CLI Entwicklern, Code in ihrer bevorzugten Sprache zu schreiben und dabei Kompatibilität und Leistung beizubehalten. Das System umfasst außerdem ein robustes Sicherheitsmodell, Garbage Collection, Ausnahmebehandlung und Unterstützung für dynamische Typen.
Gemeinsame Sprachinfrastrukturkomponenten
Die Common Language Infrastructure besteht aus mehreren Kernkomponenten, die zusammen die Entwicklung und Ausführung von Anwendungen in einer mehrsprachigen Umgebung erleichtern. Jede Komponente spielt eine entscheidende Rolle bei der Gewährleistung der Sprachinteroperabilität, der Laufzeitverwaltung und der Ausführungskonsistenz. Dazu gehören:
- Gemeinsames Typsystem (CTS). CTS definiert, wie Datentypen in der Laufzeitumgebung deklariert, verwendet und verwaltet werden. Es stellt sicher, dass in verschiedenen Programmiersprachen verwendete Typen zusammenarbeiten können, indem ein gemeinsamer Rahmen für die Datentypdarstellung geschaffen wird. Dies ermöglicht eine nahtlose Integration und Kommunikation zwischen in verschiedenen Sprachen geschriebenem Code.
- Gemeinsame Sprachspezifikation (CLS). CLS bietet eine Reihe von Regeln und Richtlinien, die Sprachen befolgen müssen, um sicherzustellen, dass sie mit anderen CLS-kompatiblen Sprachen interagieren können. Diese Spezifikation definiert eine Teilmenge von CTS, die alle auf die CLI ausgerichteten Sprachen unterstützen müssen, um die Interoperabilität zu fördern und Sprachbarrieren abzubauen.
- Virtuelles Ausführungssystem (VES). VES, im .NET-Framework auch als Common Language Runtime (CLR) bekannt, ist für die Ausführung von CLI-kompatiblen Programmen verantwortlich. Es bietet Dienste wie Speicherverwaltung, Sicherheitsdurchsetzung, Ausnahmebehandlung und Just-in-Time-Kompilierung (JIT) von Intermediate Language (IL)-Code in nativen Maschinencode.
- Metadaten. Metadaten beschreibt die Struktur des Codes und die darin enthaltenen Typen, einschließlich Klassen, Schnittstellen, Methoden und Feldern. Es stellt wichtige Informationen bereit, die die Laufzeitumgebung zur Typprüfung, Sicherheit und Marshalling verwendet, und ermöglicht so ein hohes Maß an Introspektion und Selbstbeschreibung im Code.
- Zwischensprache (IL). IL, auch bekannt als Common Intermediate Language (CIL) oder Microsoft Intermediate Language (MSIL), ist die CPU-unabhängiger Satz von Anweisungen, in den CLI-Sprachen kompiliert werden. Der VES führt IL aus, indem er es mithilfe der JIT-Kompilierung oder der Ahead-of-Time-Kompilierung (AOT) in nativen Code konvertiert, was Plattformunabhängigkeit und Optimierung ermöglicht.
Wie funktioniert eine gemeinsame Sprachinfrastruktur?
Common Language Infrastructure (CLI) fungiert als umfassendes Framework, das die Entwicklung und Ausführung von Anwendungen ermöglicht, die in mehreren Programmiersprachen geschrieben sind, und so Interoperabilität und effiziente Ausführung gewährleistet. Hier ist ein Überblick über die Funktionsweise von CLI:
- Kompilierung des Quellcodes. Wenn Sie Code in einer CLI-unterstützten Sprache schreiben, Quellcode wird vom jeweiligen Sprachcompiler in eine Zwischensprache (IL) kompiliert, die CPU-unabhängig ist. Dieser IL-Code ist ein Low-Level-Befehlssatz, den alle CLI-kompatiblen Sprachen verwenden, um Konsistenz und Interoperabilität sicherzustellen.
- Generierung von Metadaten. Neben IL generiert der Compiler Metadaten, die die Typen, Mitglieder und Referenzen im Code beschreiben. Metadaten enthalten Informationen über Klassen, Methoden, Felder und andere Datenstrukturen und erleichtern die Typprüfung, die Durchsetzung der Sicherheit und andere Laufzeitdienste.
- Baugruppenerstellung. Der IL-Code und die Metadaten werden in einer Assembly zusammengefasst, die entweder eine ausführbare Datei (.exe) oder eine Bibliothek (.dll) sein kann. Assemblys sind die Bausteine von CLI-Anwendungen und können in verschiedenen Anwendungen gemeinsam genutzt und wiederverwendet werden.
- Ausführung durch virtuelles Ausführungssystem (VES). Wenn eine Assembly ausgeführt wird, übernimmt das virtuelle Ausführungssystem (VES), in .NET auch als Common Language Runtime (CLR) bezeichnet. Das VES lädt die Assembly, liest die Metadaten und beginnt mit der Ausführung, indem es IL-Code mithilfe der Just-in-Time-Kompilierung (JIT) in nativen Maschinencode konvertiert. Alternativ kann die Ahead-of-Time-Kompilierung (AOT) verwendet werden, um IL vor der Ausführung in nativen Code zu konvertieren und so die Leistung zu verbessern.
- Speicherverwaltung. VES übernimmt die Speicherverwaltung durch automatische Speicherbereinigung. Dieser Prozess identifiziert und gibt nicht mehr verwendeten Speicher frei und verhindert so Lecks und Optimierung der Ressourcennutzung.
- Durchsetzung der Sicherheit. CLI enthält ein robustes Sicherheitsmodell, das Codezugriffssicherheit (CAS) und Typensicherheit durchsetzt und sicherstellt, dass Code innerhalb definierter Berechtigungen und Grenzen ausgeführt wird. Dadurch werden unbefugte Zugriffe und die Ausführung schädlichen Codes verhindert.
- Ausnahmebehandlung. Das VES bietet einen konsistenten Ausnahmebehandlungsmechanismus für alle CLI-kompatiblen Sprachen, sodass Entwickler robuste und fehlertolerante Anwendungen schreiben können. Ausnahmen werden einheitlich verwaltet, wodurch sichergestellt wird, dass Fehler erkannt und entsprechend behandelt werden.
- Interoperabilität. Das Common Type System (CTS) und die Common Language Specification (CLS) stellen sicher, dass verschiedene Sprachen nahtlos zusammenarbeiten können. CTS definiert einen gemeinsamen Satz von Datentypen und Operationen, während CLS die Funktionen angibt, die Sprachen unterstützen müssen, um Interoperabilität sicherzustellen. Dies ermöglicht die Integration von Komponenten und Bibliotheken, die in verschiedenen Sprachen geschrieben sind, in eine einzige Anwendung.
Vorteile einer gemeinsamen Sprachinfrastruktur
Die Common Language Infrastructure (CLI) bietet zahlreiche Vorteile, die die Softwareentwicklung und -ausführung in verschiedenen Programmiersprachen verbessern. Diese Vorteile tragen zu mehr Effizienz, Interoperabilität und Wartbarkeit im Entwicklungsprozess bei:
- Interoperabilität. CLI ermöglicht die nahtlose Zusammenarbeit verschiedener Programmiersprachen. So können Entwickler für jede spezifische Aufgabe innerhalb einer einzelnen Anwendung die beste Sprache verwenden, was die Zusammenarbeit und die Wiederverwendung von Code erleichtert.
- Plattformunabhängigkeit. Mit CLI geschriebene Programme können ohne Änderungen auf verschiedenen Hardware- und Softwareplattformen ausgeführt werden. Diese plattformübergreifende Kompatibilität stellt sicher, dass Anwendungen ein breiteres Publikum erreichen und sich problemlos an unterschiedliche Umgebungen anpassen können.
- Einheitliches Typsystem. Das Common Type System (CTS) in CLI bietet ein einheitliches Framework zum Definieren und Verwenden von Datentypen. Diese Standardisierung reduziert typbezogene Fehler und vereinfacht die Datenmanipulation über Sprachen hinweg.
- Security. CLI enthält ein robustes Sicherheitsmodell, das Anwendungen vor verschiedenen Bedrohungen schützt. Es erzwingt Codezugriffssicherheit und -überprüfung und stellt sicher, dass nur sicherer und autorisierter Code ausgeführt wird.
- Verwaltete Ausführung. Das virtuelle Ausführungssystem (VES) verwaltet die Ausführung von Programmen und stellt Dienste wie Garbage Collection, Ausnahmebehandlung und Ressourcenverwaltung bereit. Diese verwaltete Umgebung reduziert das Risiko von Speicherlecks und verbessert die Anwendungsstabilität.
- Leistungsoptimierung. CLI enthält Funktionen zur Leistungsoptimierung, wie z. B. Just-in-Time-Kompilierung (JIT). Dadurch wird Zwischensprachencode in nativen Maschinencode übersetzt. Laufzeit, wodurch Ausführungsgeschwindigkeit und Effizienz verbessert werden.
- Entwicklung flexFähigkeit. Durch die Unterstützung mehrerer Programmiersprachen bietet CLI Entwicklern die flexMöglichkeit, die besten Tools und Sprachen für ihre Projekte auszuwählen. Dies fördert Innovation und ermöglicht es Teams, vorhandenes Fachwissen und vorhandene Ressourcen effektiv zu nutzen.