Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
Kapitel 2 • Der Unterbau – das NGWS-Laufzeitsystem 35<br />
2.2.2 Metadaten<br />
Obwohl Metadaten primär zur Beschreibung und Referenzierung der durch das<br />
VOS-Typensystem definierten Typen verwendet werden, sind sie nicht auf diesen<br />
Zweck beschränkt. Wenn Sie ein Programm schreiben, werden die von Ihnen<br />
deklarierten Typen – unabhängig davon, ob es dabei um wertbehaftete Typen oder<br />
um Referenzen geht – dem NGWS-Laufzeitsystem über Typdeklarationen<br />
bekannt gemacht, die sich ihrerseits zusammen mit dem Zwischencode in der ausführbaren<br />
Datei befinden.<br />
Metadaten liefern die Informationen, die das NGWS-Laufzeitsystem für verschiedene<br />
Aufgaben benötigt: zum Auffinden und Laden von Klassen, zum Anlegen<br />
von Instanzen (Objekten) dieser Klassen im Hauptspeicher, zum Auflösen von<br />
Methodenaufrufen, zum Umsetzen von IL-Code in Maschinenbefehle, zur Sicherheitsprüfung<br />
und schließlich zum Errichten der kontextbezogenen Grenzen zur<br />
Laufzeit eines Programms (wie etwa Sichtbarkeit, Verfügbarkeit und Lebensdauer<br />
von Objekten).<br />
Wie Metadaten zu Stande kommen, ist für Sie als ProgrammiererIn im Wesentlichen<br />
uninteressant, weil das der C#-Compiler beim Erzeugen des IL-Codes (also<br />
nicht etwa der JIT-Compiler) übernimmt und sie zusammen mit dem IL-Code in<br />
der ausführbaren Datei speichert. Die Art der Speicherung ist selbstverständlich<br />
standardisiert – im Gegensatz zu C++-Compilern, bei denen jede Implementation<br />
ihren eigenen Regeln folgt, wenn es bei exportierten Funktionen um die Kombination<br />
von Signaturen mit Bezeichnern geht.<br />
Der wesentliche Vorteil der Kombination von Metadaten mit Code liegt darin,<br />
dass die Informationen über einen Typ zusammen mit dem Typ selbst gespeichert<br />
sind und sich nicht, wie bisher gewohnt, über mehrere Speicherorte (Typbibliotheken<br />
und die Registrierung) im System verteilen – wovon jeder COM-Programmierer<br />
ein Lied zu singen weiß. Außerdem können Sie im NGWS-Laufzeitsystem<br />
unterschiedliche Versionen einer Bibliothek in ein und demselben Kontext verwenden,<br />
weil diese Bibliotheken eben nicht zentral über die Registrierung referenziert<br />
werden, sondern über die Metadaten in den jeweiligen Dateien.<br />
2.2.3 Die Common Language Specification (CLS)<br />
Diese Spezifikation ist eigentlich kein eigenständiger Teil des virtuellen Objektsystems,<br />
sondern vielmehr eine Spezialisierung. Sie definiert eine Untermenge<br />
der VOS-Datentypen zusammen mit einer Reihe von Konventionen.<br />
Wozu das gut sein soll? Nun: Eine Klassenbibliothek, die sich auf diese Untermenge<br />
beschränkt und an sämtliche von der CLS aufgestellten Regeln hält, lässt<br />
sich von allen Clients verwenden, die ihrerseits der CLS folgen – unabhängig<br />
davon, mit welcher Sprache die einzelnen Klassen definiert wurden. Dabei geht