Metadaten und selbstbeschreibende Komponenten

Früher konnte eine in einer bestimmten Sprache geschriebene Softwarekomponente (.exe oder .dll) nicht einfach eine andere Softwarekomponente verwenden, die in einer anderen Sprache geschrieben war. COM ist die Lösung dieses Problems angegangen. Mit .NET Framework wird die Interoperation von Komponenten erleichtert, indem zusätzliche deklarative Informationen von Compilern an alle Module und Assemblys weitergegeben werden. Diese Informationen, so genannte Metadaten, ermöglichen eine nahtlose Interaktion der Komponenten.

Metadaten sind binäre Informationen, die ein Programm beschreiben, das entweder im Speicher oder in einer PE (Portable Executable)-Datei von Common Language Runtime gespeichert ist. Wenn Sie Code in eine PE-Datei kompilieren, werden in einen Bereich der Datei Metadaten eingefügt, während der Code in MSIL (Microsoft Intermediate Language) konvertiert und in einen anderen Bereich der Datei eingefügt wird. Jeder Typ und jeder Member, auf den in einem Modul oder in einer Assembly verwiesen wird, wird mit Metadaten beschrieben. Beim Ausführen von Code lädt Common Language Runtime Metadaten in den Speicher und verweist darauf, um Informationen zu Codeklassen, Membern, Vererbung usw. zu finden.

Metadaten beschreiben auf sprachneutrale Weise alle im Code definierten Typen und Member. In Metadaten werden folgende Informationen gespeichert:

  • Beschreibung der Assembly

    • Identität (Name, Version, Kultur, öffentlicher Schlüssel).

    • Typen, die exportiert werden.

    • Andere Assemblys, von denen diese Assembly abhängt.

    • Sicherheitsberechtigungen, die zur Ausführung benötigt werden.

  • Typenbeschreibung

    • Name, Sichtbarkeit, Basisklasse und implementierte Schnittstellen.

    • Member (Methoden, Felder, Eigenschaften, Ereignisse, geschachtelte Typen).

  • Attribute

    • Zusätzliche beschreibende Elemente, die Änderungen an Typen und Membern vornehmen.

Vorteile von Metadaten

Metadaten ermöglichen ein einfacheres Programmierungsmodell und machen IDL (Interface Definition Language)-Dateien, Headerdateien oder andere externe Methoden zum Verweisen auf Komponenten überflüssig. Mit Metadaten können .NET Framework-Sprachen automatisch auf sprachneutrale Weise beschrieben werden, unabhängig vom Entwickler und Benutzer. Metadaten sind zudem mithilfe von Attributen erweiterbar. Sie bieten die folgenden wesentlichen Vorteile:

  • Selbstbeschreibende Dateien

    Common Language Runtime-Module und Assemblys sind selbstbeschreibend. Die Metadaten eines Moduls enthalten alle zur Interaktion mit einem anderen Modul benötigten Informationen. Metadaten stellen automatisch die gleichen Funktionalitäten zur Verfügung, die IDL in COM bereitstellt. Auf diese Weise können Sie eine Datei sowohl für Definition als auch für Implementierung verwenden. Laufzeitmodule und Assemblys erfordern nicht einmal eine Registrierung beim Betriebssystem. Die von Common Language Runtime verwendeten Beschreibungen geben daher den tatsächlichen Code in der kompilierten Datei wieder. Dies erhöht die Zuverlässigkeit von Anwendungen.

  • Sprachübergreifende Interoperabilität und einfacheres, komponentenbasiertes Design

    Metadaten stellen alle Informationen über kompilierten Code zur Verfügung, die für das Erben einer Klasse aus einer PE-Datei, die in einer anderen Sprache geschrieben wurde, benötigt werden. Sie können eine Instanz einer beliebigen Klasse erstellen, die in einer beliebigen verwalteten Sprache geschrieben wurde (jede Sprache, die Common Language Runtime anspricht), ohne auf explizites Marshallen oder die Verwendung von benutzerdefiniertem Interoperabilitätscode zurückgreifen zu müssen.

  • Attribute.

    Mit .NET Framework können Sie bestimmte Arten von Metadaten, so genannte Attribute, in der kompilierten Datei deklarieren. Attribute befinden sich überall in .NET Framework und dienen zur detaillierteren Steuerung des Programms zur Laufzeit. Außerdem können Sie mithilfe von benutzerdefinierten Attributen Ihre eigenen benutzerdefinierten Metadaten in .NET Framework-Dateien ausgeben. Weitere Informationen finden Sie unter Erweitern von Metadaten mithilfe von Attributen.

Verwandte Themen

Titel

Beschreibung

Metadaten und die PE-Dateistruktur

Beschreibt, wie Metadaten getrennt von Microsoft Intermediate Language (MSIL) in einer PE-Datei gespeichert werden.

Verwenden von Metadaten zur Laufzeit

Veranschaulicht die Verwendung der Metadaten zur Laufzeit anhand eines Codebeispiels.

Erweitern von Metadaten mithilfe von Attributen

Beschreibt, wie Attribute angewendet, benutzerdefinierte Attribute geschrieben und in Attributen gespeicherte Informationen abgerufen werden.