Partager via


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.

IHostAssemblyManager

IHostAssemblyStore

ICLRAssemblyReferenceList

ICLRAssemblyIdentityManager

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.

ICLRPolicyManager

IHostPolicyManager

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.

ICLRHostProtectionManager

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.

IHostMemoryManager

IHostMAlloc

ICLRMemoryNotificationCallback

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.

IHostGCManager

ICLRGCManager

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.

ICLRDebugManager

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.

ICLROnEventManager

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.

IHostTaskManager

ICLRTaskManager

IHostTask

ICLRTask

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.

IHostThreadPoolManager

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.

IHostSyncManager

ICLRSyncManager

IHostCrst

IHostManualEvent

IHostAutoEvent

IHostSemaphore

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.

IHostIoCompletionManager

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

AppDomainManager

Autres ressources

Hébergement du Common Language Runtime

Domaines d'application

Interfaces d'hébergement pour .NET Framework 2.0 et versions ultérieures