Partager via


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.

IHostAssemblyManager

IHostAssemblyStore

ICLRAssemblyReferenceList

ICLRAssemblyIdentityManager

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.

ICLRPolicyManager

IHostPolicyManager

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.

ICLRHostProtectionManager

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.

IHostMemoryManager

IHostMAlloc

ICLRMemoryNotificationCallback

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.

IHostGCManager

ICLRGCManager

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.

ICLRDebugManager

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.

ICLROnEventManager

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.

IHostTaskManager

ICLRTaskManager

IHostTask

ICLRTask

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.

IHostThreadPoolManager

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.

IHostSyncManager

ICLRSyncManager

IHostCrst

IHostManualEvent

IHostAutoEvent

IHostSemaphore

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.

IHostIoCompletionManager

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

AppDomainManager

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