Dominio de aplicación

Definición: ¿Qué significa dominio de aplicación?

Un dominio de aplicación es un límite de aislamiento lógico creado alrededor de las aplicaciones .NET para que las aplicaciones no accedan ni se afecten entre sí. Es un proceso liviano que tiene su propio conjunto de códigos, datos y configuraciones. Los dominios de aplicación son creados por los hosts en tiempo de ejecución, que son invocados por Common Language Runtime (CLR) para cargar las aplicaciones que deben ejecutarse.

Antes de .NET, el límite de aislamiento entre las aplicaciones eran los procesos en los que se cargaban. Cada proceso tiene su propia memoria virtual privada y no puede acceder directamente a la memoria de otro proceso. El dominio de la aplicación tiene características similares a las de un proceso.

Los dominios de aplicación tienen las siguientes características:

  1. Utilización óptima de los recursos del sistema mediante el uso de menos procesos para ejecutar múltiples aplicaciones.
  2. Fiabilidad mediante el uso del aislamiento de tareas en situaciones en las que los datos no se pueden compartir y para tareas inestables que deben descargarse sin afectar el proceso.
  3. Mayor eficiencia mediante la ejecución de procesos de larga duración que rara vez utilizan grandes extensiones con memoria óptima.
  4. Seguridad de la aplicación al restringir el acceso directo al código que se ejecuta en una aplicación desde el código o los recursos de otra aplicación.
  5. Control de seguridad especificando los detalles de configuración para cada dominio de aplicación.

Techinfo explica el dominio de la aplicación

El dominio de aplicación difiere en la forma en que CLR carga y ejecuta múltiples aplicaciones .NET en un solo proceso. No permite el acceso directo a la memoria de las aplicaciones cargadas. Está administrado por CLR de .NET Framework, mientras que un proceso lo administra el sistema operativo. El CLR proporciona aislamiento de fallas entre dominios de aplicaciones con menos sobrecarga que los procesos, debido a su característica inherente de seguridad de tipo verificable de código administrado. Además, varios subprocesos pueden residir en un dominio de aplicación, son libres de cruzar los límites del dominio de la aplicación.

Por ejemplo, ASP.NET es un host en tiempo de ejecución que crea múltiples dominios de aplicación para cada usuario que accede a un sitio web. También se pueden crear y configurar para aplicaciones que necesitan aislar código o cargar extensiones solo mientras las usa. Este hecho hace que los dominios de aplicaciones sean útiles en situaciones en las que se utilizan complementos y otro código que no es de confianza. También son útiles para minimizar el conjunto de trabajo de aplicaciones que utilizan archivos DLL grandes.

Para habilitar la comunicación entre objetos en diferentes dominios de aplicación, se utiliza uno de los siguientes tres tipos de objetos:

  1. Marshal-By-Value: copia completa del objeto pasado al dominio de la aplicación que realiza la llamada. Se utiliza cuando el estado del objeto se puede mover por motivos de rendimiento.
  2. Marshal-By-Reference-Reference (MBR): se pasa un proxy del objeto al cliente; se utiliza cuando el estado del objeto debe permanecer dentro del dominio de la aplicación.
  3. Vinculado al contexto: objeto MBR utilizado en todos los dominios o dentro del contexto de su propio dominio de aplicación.

Esta definición se escribió en el contexto de .NET