Articulo de referencia

Dominio de aplicación

Un dominio de aplicación es un mecanismo (similar a un proceso en un sistema operativo ) utilizado dentro de la Infraestructura de Lenguaje Común (CLI) para aislar las aplicacio...

Un dominio de aplicación es un mecanismo (similar a un proceso en un sistema operativo ) utilizado dentro de la Infraestructura de Lenguaje Común (CLI) para aislar las aplicaciones de software ejecutadas entre sí, de modo que no se afecten entre sí. Cada dominio de aplicación tiene su propio espacio de direcciones virtuales que delimita los recursos para el dominio de aplicación que utilizan 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 de línea de comandos (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:

  • Dentro de un mismo dominio de aplicación pueden existir varios hilos de ejecución .
  • Una aplicación dentro de un dominio puede detenerse sin afectar el estado de otro dominio en el mismo proceso.
  • Un fallo o una excepción en un dominio no afecta a una aplicación en otro dominio ni provoca el bloqueo de todo el proceso que aloja los dominios.
  • La información de configuración forma parte del ámbito de un dominio, no del ámbito 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 interfaz de línea de comandos (CLI) es como un mini-sistema operativo. Ejecuta un único proceso que contiene varios subprocesos o dominios de aplicación.

La ventaja de los dominios de aplicación radica en que ejecutar varios dominios de aplicación puede requerir menos recursos, como memoria, que ejecutar varios procesos del sistema operativo. La comunicación entre dominios aún requiere serialización, por lo que la sobrecarga puede ser similar a la de usar varios procesos que a la de comunicarse dentro de un solo dominio.

Comunicaciones entre dominios

No es posible la comunicación directa entre dominios de aplicación. Sin embargo, estos dominios pueden comunicarse entre sí mediante el intercambio de objetos por valor (objetos no enlazados) o por referencia a través de un proxy (objetos enlazados al dominio de aplicación). Existe un tercer tipo de objeto, denominado objeto enlazado al contexto, que puede enviarse por referencia entre dominios y también dentro del contexto de su propio dominio de aplicación. Gracias a la seguridad de tipos verificable del código gestionado , una interfaz de línea de comandos (CLI) puede proporcionar aislamiento de fallos entre dominios a un coste mucho menor que un proceso del sistema operativo. La verificación estática de tipos utilizada para el aislamiento no requiere los mismos cambios de proceso ni transiciones de anillo de hardware que un proceso del sistema operativo.

Código administrado

Los dominios de aplicación son un concepto exclusivo del código administrado . El código nativo o no administrado incluido (por ejemplo, C++) prácticamente no los conoce. Las variables estáticas parecen compartirse entre dominios, las funciones de devolución de llamada pueden ser problemáticas y cualquier error de corrupción de memoria en un dominio probablemente afecte a otros.

Referencias

  1. "Tecnologías de .NET Framework no disponibles en .NET Core y .NET 5+" . Microsoft Docs . Archivado del original el 20 de abril de 2019. Consultado el 2 de febrero de 2021 .
  • Página de Microsoft Developer Network sobre dominios de aplicación
  • Devoluciones de llamada no administradas entre dominios de aplicación. Archivado el 9 de julio de 2014 en Wayback Machine.