Vue d'ensemble de l'hébergement
Mise à jour : novembre 2007
Le .NET Framework version 2.0 propose des applications qui hébergent le Common Language Runtime (CLR) pour contrôler de nombreuses fonctionnalités du runtime. Vous pouvez remplacer certaines fonctionnalités, telles que l'allocation de mémoire et le chargement d'assembly, par des implémentations personnalisées. Vous pouvez contrôler le comportement d'autres fonctionnalités, recevoir des notifications d'événements dans le runtime et gérer des domaines d'application.
Initialisation et démarrage d'un runtime hébergé
Comme avec les versions précédentes du runtime, la fonction CorBindToRuntimeEx initialise le runtime. Vous pouvez choisir la version du runtime à charger, mais un processus ne peut héberger qu'une seule version. Si la version 2.0 est chargée, la fonction retourne l'interface ICLRRuntimeHost qui est utilisée pour démarrer le runtime et exécuter du code managé.
Remarque : |
---|
Dans les précédentes versions, l'interface ICorRuntimeHost est retournée. |
Le démarrage du runtime est traité dans Chargement du Common Language Runtime dans un processus et l'exécution du code managé est traitée dans Transition vers un code d'hébergement managé.
Hébergement d'interfaces de gestion
Dans le .NET Framework version 2.0, le CLR fournit des interfaces de gestion d'hébergement pour contrôler de nombreuses fonctionnalités du runtime hébergé, permet à l'application hôte d'implémenter d'autres interfaces de gestion fournies par le runtime et vous permet d'implémenter vos propres interfaces de gestion d'hébergement.
À titre d'information, les interface de gestion peuvent être classées en deux grandes catégories :
Interfaces de gestion que l'hôte implémente et que le runtime découvre via l'interface IHostControl.
Interfaces de gestion que le CLR fournit et que l'hôte découvre via l'interface ICLRControl.
Le tableau suivant regroupe les interfaces selon le type de fonctionnalités qu'elles fournissent. L'interface la plus importante au sein de chaque groupe figure en premier.
Group |
Fonction |
Interfaces |
---|---|---|
Gestion du chargement d'assembly |
Permet à l'hôte de personnaliser les emplacements à partir desquels les assemblys sont chargés, la façon dont les versions sont gérées et les formats dans lesquels les assemblys peuvent être chargés. Par exemple, les assemblys peuvent être chargés à partir d'une base de données plutôt qu'à partir de fichiers sur le disque dur. Le CLR utilise l'interface IHostControl pour déterminer si un hôte implémente ce groupe d'interfaces. |
|
Gestion de la stratégie |
Permet à l'hôte de spécifier le mode de traitement des échecs d'un programme et de prendre en charge les différentes exigences de fiabilité. L'hôte utilise l'interface ICLRControl pour accéder au gestionnaire du runtime et implémente des rappels IHostPolicyManager pour les notifications d'échec provenant du runtime. |
|
Gestion de la protection de l'hôte |
Permet à l'hôte d'appliquer son propre modèle de programmation en empêchant l'utilisation de types ou membres spécifiés. Par exemple, l'hôte peut interdire l'utilisation de primitives de synchronisation ou de thread. L'hôte utilise l'interface ICLRControl pour accéder au gestionnaire du runtime. |
|
Gestion de la mémoire |
Permet à l'hôte de contrôler l'allocation de mémoire en fournissant des remplacements pour les fonctions du système d'exploitation que le CLR utilise pour allouer de la mémoire. Le CLR utilise l'interface IHostControl pour déterminer si un hôte implémente ce groupe d'interfaces. |
|
Gestion du garbage collection |
Permet à l'hôte d'implémenter des méthodes pour recevoir la notification du début et de la fin d'un garbage collection. Permet à l'hôte d'initier des collections, de collecter des statistiques et de spécifier certaines caractéristiques de collection. L'hôte utilise l'interface ICLRControl pour accéder au gestionnaire du runtime. Le CLR utilise l'interface IHostControl pour déterminer si un hôte implémente ce groupe d'interfaces. |
|
Gestion du débogage |
Permet à l'hôte de déterminer si un débogueur est attaché, de fournir des informations de débogage supplémentaires et de personnaliser des tâches de débogage. L'hôte utilise l'interface ICLRControl pour accéder au gestionnaire du runtime. |
|
Gestion des événements du CLR |
Permet à un hôte de s'enregistrer pour la notification des événements énumérés par EClrEvent. L'hôte fait appel à l'interface ICLRControl pour accéder au gestionnaire du runtime et implémente ses gestionnaires d'événements en utilisant l'interface IActionOnCLREvent. |
|
Gestion des tâches |
Permet à l'hôte d'être notifié chaque fois qu'un thread effectue une transition entre le code managé et non managé. Permet à l'hôte de contrôler l'affinité de thread, lorsque des tâches sont démarrées et arrêtées ainsi que la manière dont elles sont planifiées. Le CLR utilise l'interface IHostControl pour déterminer si un hôte implémente ce groupe d'interfaces. |
|
Gestion du pool de threads |
Permet à l'hôte d'implémenter son propre pool de threads en vue d'une utilisation par le runtime. Le CLR utilise l'interface IHostControl pour déterminer si un hôte implémente ce groupe d'interfaces. |
|
Gestion de la synchronisation |
Permet à l'hôte d'implémenter ses propres primitives de synchronisation en vue d'une utilisation par le runtime. L'hôte peut fournir des événements, des sections critiques et des sémaphores. Le CLR utilise l'interface IHostControl pour déterminer si un hôte implémente ce groupe d'interfaces. |
|
Gestion de terminaison d'E/S |
Permet à l'hôte d'effectuer sa propre implémentation d'entrée/sortie asynchrone. Le CLR utilise l'interface IHostControl pour déterminer si un hôte implémente ce groupe d'interfaces. |
Remarque : |
---|
Les interfaces d'hébergement pour les précédentes versions du runtime sont documentées dans Interfaces d'hébergement pour les versions 1.0 et 1.1 du .NET Framework. |
Gestionnaires de domaine d'application
Pour les programmes qui hébergent le CLR, les domaines d'application offrent une plus grande fiabilité en séparant les assemblys les uns des autres. Les assemblys peuvent être déchargés du processus via le déchargement de domaines d'application.
Pour gérer plusieurs domaines d'application, le .NET Framework version 2.0 fournit la classe AppDomainManager comme classe de base de laquelle vous pouvez dériver vos propres gestionnaires de domaine d'application. Le gestionnaire de domaine d'application que vous concevez pour votre application hôte est essentiellement une extension de l'hôte, en code managé. Il est automatiquement chargé dans chaque domaine d'application créé dans votre processus.
Le gestionnaire de domaine d'application peut améliorer les performances en éliminant certaines transitions entre le code managé et non managé. Il peut recevoir une notification de création de nouveaux domaines d'application, ce qui vous donne la possibilité de les configurer. Il fournit également à un hôte non managé une méthode d'appel du code managé.
Voir aussi
Concepts
Chargement du Common Language Runtime dans un processus
Référence
Autres ressources
Hébergement du Common Language Runtime
Interfaces d'hébergement pour .NET Framework 2.0 et versions ultérieures