Un dominio de aplicación es un mecanismo (similar a un proceso en un sistema operativo ) que se utiliza dentro de Common Language Infrastructure (CLI) para aislar las aplicaciones de software ejecutadas entre sí para que no se afecten entre sí. Cada dominio de aplicación tiene su propio espacio de direcciones virtuales que define los recursos para el dominio de la aplicación que utiliza ese espacio de direcciones .
No es posible crear varios dominios de aplicación en el mismo proceso en .NET Core y .NET 5+. [1]
Propiedades
Un dominio de aplicación CLI está contenido dentro de un proceso del sistema operativo. Un proceso puede contener muchos dominios de aplicación. Los dominios de aplicación tienen propiedades de aislamiento similares a las de los procesos del sistema operativo:
- Pueden existir varios subprocesos dentro de un solo dominio de aplicación.
- Una aplicación dentro de un dominio puede detenerse sin afectar el estado de otro dominio en el mismo proceso.
- Una falla o excepción en un dominio no afecta una aplicación en otro dominio ni bloquea todo el proceso que aloja los dominios.
- La información de configuración es parte del alcance de un dominio, no el alcance del proceso.
- A cada dominio se le pueden asignar diferentes niveles de acceso de seguridad.
- El código de un dominio no puede acceder directamente al código de otro.
En este sentido, una CLI es como un mini sistema operativo. Ejecuta un solo proceso que contiene varios subprocesos o dominios de aplicación.
La ventaja de los dominios de aplicación es que la ejecución de varios dominios de aplicación puede requerir menos recursos, como la memoria, que la ejecución de varios procesos del sistema operativo. La comunicación entre dominios aún requiere una clasificación, por lo que los gastos generales pueden estar más cerca de usar múltiples procesos que de comunicarse dentro de un solo dominio.
Comunicaciones entre dominios
La comunicación directa no se puede lograr entre dominios de aplicaciones. Sin embargo, los dominios de aplicación aún pueden comunicarse entre sí al pasar objetos a través de la clasificación por valor (objetos no vinculados), la clasificación por referencia a través de un proxy (objetos vinculados al dominio de la aplicación). Existe un tercer tipo de objeto llamado objeto ligado al contexto que puede calcularse por referencia entre dominios y también dentro del contexto de su propio dominio de aplicación. Debido a la seguridad de tipo verificable del código administrado , una CLI puede proporcionar aislamiento de fallas entre dominios a un costo mucho menor que el de un proceso de sistema operativo. La verificación de tipo estático utilizada para el aislamiento no requiere los mismos conmutadores de proceso o transiciones de anillo de hardware que requiere un proceso de sistema operativo.
Código administrado
Los dominios de aplicación son un concepto de código puramente administrado . Cualquier código nativo / no administrado incluido (por ejemplo, C ++) los desconoce en gran medida. Las variables estáticas parecen compartirse entre dominios, las devoluciones de llamada pueden ser problemáticas y es probable que cualquier error de corrupción de memoria en un dominio corrompa otros dominios.
Referencias
- ^ "Las tecnologías .NET Framework no están disponibles en .NET Core y .NET 5+" . Microsoft Docs . Consultado el 2 de febrero de 2021 .