Tabla de contenido:
Definición: ¿qué significa Application Domain?
Un dominio de aplicación es un límite de aislamiento lógico creado alrededor de aplicaciones .NET para que las aplicaciones no accedan ni se afecten entre sí. Es un proceso ligero que tiene su propio conjunto de códigos, datos y ajustes de configuración. Los dominios de aplicación son creados por los hosts de 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 tenía su propia memoria virtual privada y no puede acceder a la memoria de otro proceso directamente. El dominio de aplicación tiene características similares a las de un proceso.
Los dominios de aplicación tienen las siguientes características:
- Utilización óptima de los recursos del sistema utilizando menos procesos para ejecutar múltiples aplicaciones.
- Fiabilidad mediante el uso de 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.
- Mayor eficiencia al ejecutar procesos de larga duración que rara vez usan extensiones grandes con una memoria óptima.
- 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.
- Control de seguridad mediante la especificación de detalles de configuración para cada dominio de aplicación.
Techopedia explica Application Domain
El dominio de aplicación difiere en la forma en que el CLR carga y ejecuta múltiples aplicaciones .NET en un solo proceso. No permite el acceso directo a la memoria de las aplicaciones cargadas. Es administrado por el CLR de .NET Framework, mientras que el sistema operativo administra un proceso. El CLR proporciona aislamiento de fallas entre dominios de aplicación con menos sobrecarga que los procesos, debido a su característica inherente de seguridad de tipo verificable del código administrado. Además, múltiples hilos 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 de 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 se usan. Este hecho hace que los dominios de aplicaciones sean útiles en situaciones en las que se usan complementos y otro código no confiable. También son útiles para minimizar el conjunto de aplicaciones que utilizan archivos DLL de gran tamaño.
Para habilitar la comunicación entre objetos en diferentes dominios de aplicación, se utiliza uno de los siguientes tres tipos de objetos:
- Marshal-By-Value: copia completa del objeto pasado al dominio de la aplicación que realiza la llamada. Esto se usa cuando el estado del objeto se puede mover por razones de rendimiento.
- Marshal-By-Reference-Reference (MBR): se pasa un proxy del objeto al cliente; se usa cuando el estado del objeto tiene que permanecer dentro del dominio de la aplicación.
- Vinculado al contexto: objeto MBR utilizado en dominios o dentro del contexto de su propio dominio de aplicación.
