Metadatenübersicht
Aktualisiert: November 2007
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, da sie IDL (Interface Definition Language)-Dateien, Headerdateien oder andere externe Methoden zum Verweisen auf Komponenten überflüssig machen. Mit Metadaten werden .NET-Sprachen automatisch auf sprachneutrale Weise beschrieben, 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.