29.04.2014 Aufrufe

Leseprobe

Leseprobe

Leseprobe

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!