Was ist eine Common Language Infrastructure (CLI)?

Juli 17, 2024

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?

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:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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

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.
  • Entwicklungsprojekt 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.

Anastazija
Spasojeviฤ‡
Anastazija ist eine erfahrene Content-Autorin mit Wissen und Leidenschaft fรผr cloud Computer, Informationstechnologie und Online-Sicherheit. Bei phoenixNAP, konzentriert sie sich auf die Beantwortung brennender Fragen zur Gewรคhrleistung der Datenrobustheit und -sicherheit fรผr alle Teilnehmer der digitalen Landschaft.