Información general de alojamiento

Actualización: noviembre 2007

La versión 2.0 de .NET Framework permite a las aplicaciones que hospedan Common Language Runtime (CLR) controlar numerosas características del motor en tiempo de ejecución. Puede reemplazar algunas características, como asignación de memoria y carga de ensamblados, con implementaciones personalizadas. Puede controlar el comportamiento de otras características, recibir notificaciones de eventos en tiempo de ejecución y administrar dominios de aplicación.

Inicializar e iniciar un motor en tiempo de ejecución alojado

Al igual que en versiones anteriores del motor en tiempo de ejecución, la función CorBindToRuntimeEx inicializa el motor en tiempo de ejecución. Puede elegir qué versión del motor en tiempo de ejecución cargar, pero un proceso sólo puede alojar una versión. Si se carga la versión 2.0, la función devuelve la interfaz ICLRRuntimeHost, que se utiliza para iniciar el motor en tiempo de ejecución y ejecutar el código administrado.

Nota:

En versiones anteriores, se devolvía la interfaz ICorRuntimeHost.

El inicio del motor en tiempo de ejecución se detalla en Cargar Common Language Runtime en un proceso, y la ejecución del código administrado en Transición al código administrado del host.

Hospedar interfaces de administración

En .NET Framework 2.0, CLR proporciona interfaces de administración de hospedaje para controlar muchas de las características del motor en tiempo de ejecución hospedado, permite a la aplicación host implementar otras interfaces de administración proporcionadas por el motor en tiempo de ejecución, y permite al usuario implementar sus propias interfaces de administración de hospedaje.

En lo que respecta a la detección, las interfaces de administración se dividen en dos categorías amplias:

  • Interfaces de administración que el host implementa y que el motor en tiempo de ejecución detecta mediante la interfaz IHostControl.

  • Interfaces de administración que CLR proporciona y que el host detecta mediante la interfaz ICLRControl.

La tabla siguiente agrupa las interfaces por el tipo de funcionalidad que proporcionan. En primer lugar aparece la interfaz más importante de cada grupo.

Grupo

Función

Interfaces

Administración de la carga de ensamblados

Permite al host personalizar las ubicaciones desde las que se cargan ensamblados, la manera en que se administran las versiones y los formatos de ensamblados que se pueden cargar. Por ejemplo, los ensamblados se pueden cargar desde una base de datos en lugar de desde archivos del disco duro.

CLR utiliza la interfaz IHostControl para detectar si un host implementa este grupo de interfaces.

IHostAssemblyManager

IHostAssemblyStore

ICLRAssemblyReferenceList

ICLRAssemblyIdentityManager

Administración de directivas

Permite al host especificar la manera en que se tratan los errores del programa para admitir distintos requisitos de confiabilidad.

El host utiliza la interfaz ICLRControl para obtener acceso al administrador del motor en tiempo de ejecución e implementa las devoluciones de llamada de IHostPolicyManager para las notificaciones de error desde el motor en tiempo de ejecución.

ICLRPolicyManager

IHostPolicyManager

Administración de la protección del host

Permite al host exigir su propio modelo de programación, evitando para ello el uso de tipos o miembros especificados. Por ejemplo, el host puede denegar el uso de tipos primitivos de subprocesamiento o de sincronización.

El host utiliza la interfaz ICLRControl para obtener acceso al administrador del motor en tiempo de ejecución.

ICLRHostProtectionManager

Administración de la memoria

Permite al host controlar la asignación de memoria proporcionando reemplazos para las funciones del sistema operativo que CLR utiliza para asignar la memoria.

CLR utiliza la interfaz IHostControl para detectar si un host implementa este grupo de interfaces.

IHostMemoryManager

IHostMAlloc

ICLRMemoryNotificationCallback

Administración de la recolección de elementos no utilizados

Permite al host implementar métodos para recibir notificación del principio y fin de la recolección de elementos no utilizados. Permite al host iniciar recolecciones, recopilar estadísticas y especificar algunas características de recolección.

El host utiliza la interfaz ICLRControl para obtener acceso al administrador del motor en tiempo de ejecución. CLR utiliza la interfaz IHostControl para detectar si un host implementa este grupo de interfaces.

IHostGCManager

ICLRGCManager

Administración de la depuración

Permite al host detectar si hay un depurador asociado, proporcionar información de depuración adicional, y personalizar las tareas de depuración.

El host utiliza la interfaz ICLRControl para obtener acceso al administrador del motor en tiempo de ejecución.

ICLRDebugManager

Administración de eventos de CLR

Permite a un host registrarse para notificaciones de los eventos enumerados por EClrEvent.

El host utiliza la interfaz ICLRControl para obtener acceso al administrador del motor en tiempo de ejecución, e implementa sus controladores de eventos mediante la interfaz IActionOnCLREvent.

ICLROnEventManager

IActionOnCLREvent

Administración de tareas

Permite enviar una notificación al host siempre que un subproceso realice una transición entre el código administrado y no administrado. Permite al host controlar la afinidad del subproceso, cuándo se inician y detienen las tareas, y cómo se programan.

CLR utiliza la interfaz IHostControl para detectar si un host implementa este grupo de interfaces.

IHostTaskManager

ICLRTaskManager

IHostTask

ICLRTask

Administración de grupos de subprocesos

Permite al host implementar su propio grupo de subprocesos para el motor en tiempo de ejecución que se va a utilizar.

CLR utiliza la interfaz IHostControl para detectar si un host implementa este grupo de interfaces.

IHostThreadPoolManager

Administración de sincronización

Permite al host implementar sus propios tipos primitivos de sincronización para el motor en tiempo de ejecución que se va a utilizar. El host puede proporcionar eventos, secciones críticas y semáforos.

CLR utiliza la interfaz IHostControl para detectar si un host implementa este grupo de interfaces.

IHostSyncManager

ICLRSyncManager

IHostCrst

IHostManualEvent

IHostAutoEvent

IHostSemaphore

Administrador de finalización de E/S

Permite al host implementar una implementación propia de entradas/salidas asincrónicas.

CLR utiliza la interfaz IHostControl para detectar si un host implementa este grupo de interfaces.

IHostIoCompletionManager

Nota:

Las interfaces de alojamiento para versiones anteriores del motor en tiempo de ejecución aparecen documentadas en Interfaces de alojamiento para .NET Framework 1.0 y 1.1.

Administradores de dominios de aplicación

Para los programas que hospedan CLR, los dominios de aplicación proporcionan mayor confiabilidad aislando entre sí los ensamblados. Los ensamblados se pueden descargar del proceso mediante la descarga de los dominios de aplicación.

Para administrar varios dominios de aplicación, la versión 2.0 de .NET Framework proporciona la clase AppDomainManager como una clase base de la que puede hacer derivar administradores de dominios de aplicación propios. El administrador de dominios de aplicación que diseña para la aplicación host es básicamente una extensión del host, en código administrado. Se carga automáticamente en cada dominio de aplicación que se crea en su proceso.

El administrador de dominios de aplicación puede mejorar el rendimiento eliminando algunas transiciones entre el código administrado y no administrado. Puede recibir notificación de la creación de nuevos dominios de aplicación, lo que brinda la oportunidad de configurarlos. También proporciona a un host no administrado una manera de llamar al código administrado.

Vea también

Conceptos

Cargar Common Language Runtime en un proceso

Referencia

AppDomainManager

Otros recursos

Alojar Common Language Runtime

Dominios de aplicación

Interfaces de hospedaje para .NET Framework 2.0 y posterior