Metadata a komponenty popisující samy sebe

V minulosti, když byla softwarová komponenta (s příponou EXE nebo DLL) napsána v jednom jazyce, tak nemohla jednoduše použít komponentu, která byla napsána v jiném jazyce. Model COM obstaral krok k řešení tohoto problému. Rozhraní .NET Framework usnadňuje součinnost komponent tím, že umožňuje kompilátorům poslat dodatečné deklarativní informace do všech modulů a sestavení. Tyto informace, nazývané metadata, pomáhají k bezproblémové interakci mezi komponentami.

Metadata jsou binární informace popisující vaši aplikaci, která jsou uložena buď v přenositelném spustitelném souboru (PE) modulu CLR (Common Language Runtime) nebo v paměti. Při kompilaci kódu do přenositelného spustitelného souboru jsou metadata vložena do jedné části souboru a kód je převeden do jazyka MSIL (Microsoft Intermediate Language) a následně vložen do jiné části souboru. Každý typ nebo člen, který je definován a odkazován v modulu nebo sestavení je popsán v rámci metadat. Při vykonávání kódu modul runtime načte metadata do paměti a odkazuje se na ně za účelem zjištění informací o třídách, členech, dědičnosti a podobně.

Metadata jazykově nezávislým způsobem popisují každý typ nebo člen, který je v kódu definován. Metadata uchovávají následující informace:

  • Popis sestavení.

    • Identitu (název, verzi, jazykovou verzi, veřejný klíč).

    • Exportované typy.

    • Jiná sestavení, na kterých toto sestavení závisí.

    • Bezpečnostní oprávnění potřebné ke spuštění.

  • Popis typů.

    • Název, viditelnost, základní třídu a implementovaná rozhraní.

    • Členy (metody, pole, vlastnosti, události, vnořené typy).

  • Atributy.

    • Další popisné elementy, které modifikují typy a členy.

Výhody metadat

Metadata jsou klíč k jednoduššímu programovacímu modelu a eliminují potřebu IDL (Interface Definition Language) souborů, hlavičkových souborů nebo externích metod odkazu komponenty. Metadata umožňují rozhraní .NET Framework automaticky popsat samy sebe způsobem nezávislým na jazyku a to zcela neviditelně, jak pro vývojáře, tak i uživatele. Kromě toho jsou metadata rozšiřitelná prostřednictvím použití atributů. Metadata poskytují následující hlavní výhody:

  • Samo-popisující soubory.

    Moduly a sestavení modulu CLR (Common Language Runtime) jsou samo-popisné. Metadata modulů obsahují vše potřebné k interakci s jiným modulem. Metadata automaticky poskytují funkčnost IDL v modelu COM, takže můžete použít jeden soubor pro definici a implementaci obou. Moduly runtime a sestavení dokonce nevyžadují registraci u operačního systému. Následkem popisů používaných modulem runtime, zkompilovaný soubor vždy odráží skutečný kód, což zvyšuje spolehlivost aplikace.

  • Vzájemnou funkční spolupráci jazyků a snadnější návrh založený na komponentách.

    Metadata vám poskytují všechny požadované informace o zkompilovaném kódu, abyste mohli dědit třídu z přenositelného spustitelného souboru, který je napsaný v jiném jazyce. Můžete bez obav o explicitní zařazování vytvořit instanci libovolné třídy napsané v libovolném spravovaném jazyce (libovolný jazyk, který se zaměřuje na modul CLR (Common Language Runtime)) nebo používat vlastní kód vzájemné funkční spolupráce.

  • Atributy.

    Rozhraní .NET Framework umožňuje ve vašich kompilovaných souborech deklarovat specifické druhy metadat nazývané atributy. Atributy lze nalézt v celém rozhraní .NET Framework a slouží k detailnější kontrole toho, jak se program chová v průběhu svého běhu. Navíc je možné do souborů rozhraní .NET Framework poslat vlastní metadata prostřednictvím uživatelsky definovaných vlastních atributů. Další informace naleznete v tématu Rozšíření metadat pomocí atributů.

Příbuzná témata

Title

Popis

Metadata a struktura přenositelného spustitelného souboru

Popisuje, jak jsou v přenositelných spustitelných souborech metadata uložena odděleně od jazyka MSIL (Microsoft Intermediate Language).

Používání metadat v době běhu

Demonstruje s příkladem kódu použití metadat v době běhu.

Rozšíření metadat pomocí atributů

Popisuje jak používat atributy, psát vlastní atributy a jak získat informace, které jsou v atributech uloženy.