Quellcode der CLS kompatibel ist, hält definitionsgemäss die Vorschriften des CTS ein und entspricht somit dem CLI Standard. Haben Sie diesen Satz sofort verstanden? Wenn nicht, dann sollten Sie weiterlesen. Dieser Artikel wird Ihnen zeigen was sich hinter den im Titel genannten Abkürzungen verbirgt und Ihnen ein besseres Verständnis dafür vermitteln was das .NET Frameworks im inneren zusammenhält.
CLI (Common Language Infrastructure)
Die CLI beschreibt einen Standard für die plattformunabhängige und sprachunabhängige Entwicklung und Ausführung von Anwendungen. .NET ist eine Implementierung diese Standards
CTS (Common Type System)
Wie beschrieben ist die CLI sprachunabhängig. Das CTS beschreibt daher eine gemeinsame Schnittmenge an Datentypen wodurch ein sprachübergreifender Aufruf von Komponenten ermöglicht werden soll. Alle .NET Sprachen müssen sich an die CTS Vorschriften halten damit der entwickelte Code kompatibel ist.
CLS (Common Language Specification)
Die CLS ist eine Verschärfung der CTS. Sie definiert die Sprachmerkmale die jede Sprache unterstützen muss damit alle .NET Sprachen interoperabel sind. In C# kann Quellcode mittels des folgenden Attributs als CLS kompatibel markiert werden [assembly: CLSCompliant(true)]. Ist dieses Attribut aktiviert, wird der Quellcode auf CLS Kompatibilität geprüft und es werden Compiler Warnungen bei Inkompatibilitäten ausgegeben.
CIL (Common Intermediate Language)
Die CIL ist Teil der CLI und definiert die Zwischensprache in die alle CLI Programme übersetzt werden. Durch diese vereinheitlichte Zwischensprache wird die Plattformunabhängigkeit erreicht.
VES (Virtual Execution System)
Das VES wiederum beschreibt den Standard wie CIL Code in eine Maschinensprache übersetzt werden soll.
CLR (Common Runtime Language)
Die CLR ist die Laufzeitumgebung von .NET. Sie ist der Interpreter für den CIL Zwischencode und damit eine konkrete Implementierung des VES Standards.
JIT (Just-In-Time Compiler)
Der JIT-Compiler ist der Teil der CLR der die Übersetzung in die Maschinensprache vornimmt. Er übersetzt nicht die komplette Anwendung, sondern nur die zur Laufzeit benötigten Teile. Der JIT-Compiler nimmt dabei Optimierungen abhängig von der verwendeten Plattform vor.
NGEN (Native Image Generator)
Mittels NGEN kann CIL Code ebenfalls in die Maschinensprache transferiert werden. Im Gegensatz zum JIT Compiler wird dabei aber die komplette Anwendung übersetzt.
CAS (Code Access Security)
Bei CAS handelt es sich um das Sicherheitsmodell in .NET. CAS ist Teil der CLR und überwacht die Ausführung einer Anwendung im Hinblick auf sicherheitsrelevante Aspekte.
GC (Garbage Collection)
Die Garbage Collection ist Teil der CLR. Die GC führt automatische Speicherbereinigungen durch und gibt nicht mehr benötigten Speicher frei.
BCL (Base Class Library)
Die BCL ist die Basisklassenbibliothek von .NET
FCL (Framework Class Library)
Die FCL ist die gesamte Klassenbibliothek von .NET. Sie enthält somit die BCL und ergänzt diese um viele weitere Klassen.