Como crear un dominio de aplicación
Para reducir las posibilidades de vulnerabilidad en la seguridad o el uso inadecuado de recursos de nuestras aplicaciones por el uso de Assembled externos, es importante manejar este tipo de contextos en otro dominio de aplicaciones diferente, proporcionando un entorno seguro para nuestras aplicaciones.
Un AppDomain es un contenedor lógico que permite que multiples Assembled se ejecuten dentro de un simple proceso pero más eficiente y ofrecen características como separación de espacio de memoria y acceso a recursos. Los AppDomain además de proporcionar un ambiente aislado para evitar vulnerabilidades de seguridad, también aumentan la confiabilidad y eficiencia.
-
Confiablidad: Cuando se ejecutan procesos de largos periodos de tiempo, los AppDomain evitan de que ante alguna inestabilidad del proceso, afecte el proceso principal.
-
Eficiencia: Cuando descargas un AppDomain, este inmediatamente libera los Assembled cargados, esta técnica disminuye los largos procesos de ejecución de las DLL.
Como crear un AppDomain:
Para crear un AppDomain se utiliza el método compartido CreateDomain() de la clase AppDomain, como se muestra en el siguiente fragmento de código.
C#
VB
Como cargar un Assembly en un AppDomain:
La clase AppDomain proporciona dos métodos compartidos para cargar un Assembly, el primero es el método ExecuteAssembly() que carga un Assembly desde una ruta específica como se muestre en el siguiente fragmento de código.
C#
VB
El segundo método, realiza una búsqueda del Assembly mediante el método compartido ExecuteAssemblyByName() de la clase AppDomain, para éste método solo se ingresa el nombre del Assembly; cabe notar que este forma funciona si el Assembly se encuentra dentro de las referencias del proyecto.
C#
VB
Como descargar un AppDomain:
La instancia de la clase AppDomain no proporciona un método para destruir el AppDomain, por lo tanto se debe usar el método compartido Unload() de la clase AppDomain, en la que se le pasa como parámetro el dominio de aplicación (AppDomain) que se desea destruir como se muestra en el siguiente fragmento de código.
C#
VB