Información general de hospedaje

Las aplicaciones .NET Framework hospedan automáticamente el Common Language Runtime con el que se compilaron. Si compila el código administrado como un ensamblado .exe, mscoree.dll inicia automáticamente el motor en tiempo de ejecución cuando se ejecuta el .exe. Las aplicaciones no administradas también pueden beneficiarse del hospedaje de Common Language Runtime. El runtime proporciona un marco para ampliar aplicaciones como Internet Information Services (IIS) y SQL Server 2005.

Ya se invoque automáticamente, como con ensamblados .exe administrados, o se cargue mediante la API de hospedaje no administrada, una aplicación de .NET Framework requiere un fragmento de código llamado host en tiempo de ejecución. El host del motor en tiempo de ejecución carga el motor en tiempo de ejecución en un proceso, crea los dominios de aplicación dentro del proceso, y carga y ejecuta el código de usuario dentro de esos dominios de aplicación.

La versión 2.0 de .NET Framework permite a las aplicaciones que hospedan el CLR controlar numerosas características del runtime. 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.

.NET Framework versión 4 consolida muchas de las API de hospedaje de la versión 2.0. Además, .NET Framework 4 admite la activación de host en tiempo de ejecución en paralelo en proceso y proporciona otras mejoras.

Esta información general contiene las siguientes secciones:

  • Inicializar e iniciar un motor en tiempo de ejecución hospedado

  • Interfaces de administración de hospedaje de la versión 2.0 de .NET Framework

  • Interfaces de administración de hospedaje de la versión 4 de .NET Framework

  • Administradores de dominios de aplicación

  • Temas relacionados

  • Referencia

Inicializar e iniciar un runtime hospedado

La API de hospedaje de .NET Framework 4 proporciona la función CLRCreateInstance, que puede devolver la interfaz ICLRMetaHost. A continuación, puede llamar al método GetRuntime en esta interfaz para obtener una interfaz ICLRRuntimeInfo concreta, dada una versión de CLR determinada. Este procedimiento reemplaza el método CorBindToRuntimeEx usado por la API de hospedaje de .NET Framework 2.0.

La API de hospedaje de la versión 2.0 de .NET Framework proporciona la función CorBindToRuntimeEx para inicializar el runtime. Puede elegir qué versión del motor en tiempo de ejecución cargar, pero un proceso sólo puede hospedar una versión. Si se carga la versión 2.0, 3.0 ó 3.5, la función devuelve la interfaz ICLRRuntimeHost, que se usa para iniciar el runtime y ejecutar código administrado.

La API de hospedaje de la versión 1 de .NET Framework proporciona 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.

Volver al principio

Interfaces de administración de hospedaje de .NET Framework 2.0

En .NET Framework 2.0, CLR proporciona interfaces de administración de hospedaje para controlar muchas de las características del runtime hospedado, permite a la aplicación host implementar otras interfaces de administración proporcionadas por el runtime 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

NotaNota

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

Volver al principio

Interfaces de administración de hospedaje de .NET Framework 4

.NET Framework 4 consolida la API de hospedaje de la versión 2.0 dentro de las interfaces siguientes:

  • ICLRMetaHost proporciona métodos que devuelven una versión concreta del CLR, enumeran todos los CLR instalados, enumeran todos los runtime en proceso, devuelven la interfaz de activación y detectan la versión de CLR usada para compilar un ensamblado.

  • ICLRMetaHostPolicy suministra el método GetRequestedRuntime que proporciona una interfaz de CLR basándose en un criterio de directiva, un ensamblado administrado, una versión y un archivo de configuración.

  • ICLRRuntimeInfo proporciona métodos que devuelven información sobre un runtime concreto, incluyendo la versión, el directorio y el estado de carga.

  • ICLRStrongName agrupa todas las funciones estáticas globales para nombres seguros de CRL versión 2.0 exportadas por MSCorEE.dll (excepto StrongNameErrorInfo) en una única interfaz. Todos los métodos ICLRStrongName devuelven resultados HRESULT COM estándar.

Estas interfaces encapsulan y reemplazan las interfaces de hospedaje de .NET Framework 2.0.

Volver al principio

Administradores de dominios de aplicación

Para los programas que hospedan Common Language Runtime, 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, .NET Framework proporciona la clase AppDomainManager como una clase base de la que puede derivar sus propios administradores de dominios de aplicación. 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 una notificación de la creación de nuevos dominios de aplicación, lo que brinda la oportunidad de configurarlos. El administrador de dominios de aplicación también proporciona una forma para que un host no administrado llame a código administrado.

Volver al principio

Temas relacionados

Título

Descripción

Cargar Common Language Runtime en un proceso

Describe cómo cargar el runtime en un proceso, inicializarlo y establecer valores para especificar su comportamiento.

Descargar dominios y cerrar un proceso

Describe cómo descargar dominios de aplicación y cerrar un proceso.

Establecer principales y directiva de seguridad basada en funciones

Describe cómo establecer una directiva de seguridad basada en funciones.

Establecer directivas de seguridad para dominios de aplicación

Describe cómo establecer una directiva de seguridad para dominios de aplicación.

Cargar y ejecutar código de usuario

Describe cómo cargar y ejecutar código de usuario.

Crear y configurar dominios de aplicación

Describe cómo crear y configurar dominios de aplicación en los que se ejecutará código de usuario.

Determinar los límites del dominio de la aplicación

Describe cómo determinar dónde se establecen los límites de un nuevo dominio de aplicación.

Transición al código administrado del host

Describe cómo realizar la transición desde código no administrado para ejecutar código de hospedaje administrado y código de usuario.

Archivos de configuración de activación

Describe cómo se activa una versión del runtime distinta de la que se especificó en el archivo de configuración de la aplicación.

Hosts del motor en tiempo de ejecución

Describe los hosts incluidos en .NET Framework.

Dominios de aplicación

Describe las construcciones que los hosts utilizan para aislar el código que se ejecuta dentro de un proceso.

Ejecución simultánea

Describe cómo ejecutar varias versiones de una aplicación, un componente o el runtime.

Interfaces de hospedaje de .NET Framework 4

Describe las interfaces no administradas para hospedar el runtime en la versión 4 de .NET Framework.

Interfaces de hospedaje de .NET Framework 2.0

Describe las interfaces no administradas para hospedar el runtime en la versión 2.0 de .NET Framework.

Volver al principio

Referencia

System.AppDomainManager

Volver al principio