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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
|
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. |
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