Métadonnées et composants autodescriptifs

Par le passé, un composant logiciel (.exe or .dll) écrit dans un langage ne pouvait pas utiliser aisément un composant logiciel écrit dans un autre langage. COM a fourni une étape vers la résolution de ce problème. Le .NET Framework facilite encore plus l'interopérabilité des composants en autorisant les compilateurs à émettre des informations déclaratives supplémentaires dans tous les modules et assemblys. Ces informations, appelées métadonnées, aident les composants à interagir de façon transparente.

Les métadonnées sont des informations binaires décrivant votre programme ; elles sont stockées dans un fichier exécutable portable (fichier PE) du Common Language Runtime ou en mémoire. Lorsque vous compilez votre code dans un fichier PE, les métadonnées sont insérées dans une partie du fichier, tandis que votre code est converti en langage MSIL (Microsoft Intermediate Language) et inséré dans une autre partie du fichier. Les types et membre définis et référencés dans un module ou un assembly sont décrits au sein des métadonnées. Quand le code est exécuté, le runtime charge les métadonnées en mémoire et y fait référence pour découvrir les informations concernant les classes de votre code, les membres, l'héritage, etc.

Les métadonnées décrivent tous les types et membres définis dans votre code sous une forme indépendante du langage. Les métadonnées stockent les informations suivantes :

  • Description de l'assembly.

    • Identité (nom, version, culture, clé publique).

    • Les types exportés.

    • Les autres assemblys dont dépend cet assembly.

    • Les autorisations de sécurité nécessaires à l'exécution.

  • Description des types.

    • Nom, visibilité, classe de base et interfaces implémentées.

    • Membres (méthodes, champs, propriétés, événements, types imbriqués).

  • Attributs.

    • Éléments descriptifs supplémentaires qui modifient les types et les membres.

Avantages des métadonnées

Les métadonnées sont la clé d'un modèle de programmation plus simple et suppriment la nécessité de fichiers IDL (Interface Definition Language), de fichiers d'en-tête ou de toute méthode externe de référence aux composants. Les métadonnées permettent aux langages du .NET Framework de se décrire eux-mêmes automatiquement d'une manière indépendante du langage, transparente aussi bien au développeur qu'à l'utilisateur. En outre, les métadonnées sont extensibles via l'utilisation d'attributs. Les métadonnées offrent les principaux avantages suivants :

  • Fichiers autodescriptifs.

    Les modules et assemblys du Common Language Runtime sont autodescriptifs. Les métadonnées d'un module contiennent tous les éléments nécessaires pour interagir avec un autre module. Les métadonnées offrent automatiquement la fonctionnalité IDL du modèle COM, ce qui vous permet d'utiliser un seul fichier pour la définition et l'implémentation. Les modules et assemblys du runtime ne nécessitent même pas l'inscription dans le système d'exploitation. En conséquence, les descriptions utilisées par le runtime reflètent toujours le code réel de votre fichier compilé, ce qui accroît la fiabilité de l'application.

  • Interopérabilité des langages et design à base de composants plus simple.

    Les métadonnées fournissent toutes les informations requises concernant le code compilé pour que vous puissiez hériter une classe à partir d'un fichier PE écrit dans un autre langage. Vous pouvez créer une instance de toute classe écrite dans un langage managé (tout langage ciblant le Common Language Runtime) sans vous préoccuper de marshaling explicite ou d'utiliser un code d'interopérabilité personnalisé.

  • Attributs.

    Le .NET Framework vous permet de déclarer des types particuliers de métadonnées, appelés attributs, dans votre fichier compilé. Les attributs peuvent être recherchés via le .NET Framework et sont utilisés pour contrôler de façon plus détaillée comment votre programme se comporte au moment de l'exécution. En outre, vous pouvez émettre vos propres métadonnées personnalisées dans les fichiers .NET Framework via les attributs personnalisés définis par l'utilisateur. Pour plus d'informations, consultez Extension des métadonnées à l'aide des attributs.

Rubriques connexes

Titre

Description

Métadonnées et structure des fichiers PE

Décrit comment les métadonnées sont stockées séparément du MSIL (Microsoft Intermediate Language) dans un fichier PE.

Utilisation de métadonnées au moment de l'exécution

Montre l'utilisation des métadonnées au moment de l'exécution avec un exemple de code.

Extension des métadonnées à l'aide des attributs

Décrit comment appliquer les attributs, écrire des attributs personnalisés et récupérer les informations stockées dans les attributs.