Vue d'ensemble de l'hébergement
Le .NET Framework version 2.0 fournit des applications qui hébergent le Common Language Runtime avec un contrôle sur 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é.
Notes
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é.
Gestionnaires d'hébergement
Dans le .NET Framework version 2.0, le Common Language Runtime fournit des gestionnaires d'hébergement pour contrôler de nombreuses fonctionnalités du runtime hébergé et permet à l'application hôte d'implémenter d'autres gestionnaires. Pour obtenir la description des interfaces COM que vous pouvez utiliser afin d'interagir avec les gestionnaires fournis par le runtime, et pour implémenter vos propres gestionnaires d'hébergement, consultez Interfaces d'hébergement pour le .NET Framework 2.0.
Le tableau suivant regroupe les interfaces selon le type de fonctionnalités qu'elles fournissent. L'interface la plus importante pour chaque gestionnaire figure en premier.
Gestionnaire | Fonction | Interfaces |
---|---|---|
Gestionnaire de 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 Common Language Runtime utilise l'interface IHostControl pour déterminer si un hôte implémente ce gestionnaire. |
|
Gestionnaire de stratégies |
Permet à l'hôte de spécifier le mode de traitement des échecs d'un programme, 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. |
|
Gestionnaire de 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. |
|
Gestionnaire de mémoire |
Autorise l'hôte à contrôler l'allocation de mémoire en fournissant des remplacements pour les fonctions du système d'exploitation que le Common Language Runtime utilise pour allouer de la mémoire. Le Common Language Runtime utilise l'interface IHostControl pour déterminer si un hôte implémente ce gestionnaire. |
|
Gestionnaire de 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 Common Language Runtime utilise l'interface IHostControl pour déterminer si un hôte implémente ce gestionnaire. |
|
Gestionnaire de 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. |
|
Gestionnaire d'événements du Common Language Runtime |
Permet à un hôte de s'enregistrer pour la notification des événements énumérés par EClrEvent. L'hôte utilise l'interface ICLRControl pour accéder à ce gestionnaire et implémente ses gestionnaires d'événements à l'aide de IActionOnCLREvent. |
|
Gestionnaire 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 Common Language Runtime utilise l'interface IHostControl pour déterminer si un hôte implémente ce gestionnaire. |
|
Gestionnaire de pool de threads |
Permet à l'hôte d'implémenter son propre pool de threads en vue d'une utilisation par le runtime. Le Common Language Runtime utilise l'interface IHostControl pour déterminer si un hôte implémente ce gestionnaire. |
|
Gestionnaire de 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 Common Language Runtime utilise l'interface IHostControl pour déterminer si un hôte implémente ce gestionnaire. |
|
Gestionnaire de terminaison d'E/S |
Permet à l'hôte d'effectuer sa propre implémentation d'entrée/sortie asynchrone. Le Common Language Runtime utilise l'interface IHostControl pour déterminer si un hôte implémente ce gestionnaire. |
Notes
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.
À titre d'information, les gestionnaires peuvent être classés en deux grandes catégories :
les gestionnaires que l'hôte implémente et que le runtime découvre via l'interface IHostControl ;
les gestionnaires que le Common Language Runtime fournit et que l'hôte découvre via l'interface ICLRControl.
Gestionnaires de domaine d'application
Pour les programmes qui hébergent le Common Language Runtime, 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
Référence
Concepts
Chargement du Common Language Runtime dans un processus
Autres ressources
Hébergement du Common Language Runtime
Domaines d'application
Interfaces d'hébergement pour le .NET Framework 2.0