Exportar (0) Imprimir
Expandir todo
Este artículo proviene de un motor de traducción automática. Mueva el puntero sobre las frases del artículo para ver el texto original. Más información.
Traducción
Original

AppDomain (Clase)

Representa un dominio de aplicación, que es un entorno aislado donde se ejecutan las aplicaciones. Esta clase no puede heredarse.

Espacio de nombres:  System
Ensamblado:  mscorlib (en mscorlib.dll)

[ComVisibleAttribute(true)]
[ClassInterfaceAttribute(ClassInterfaceType.None)]
public sealed class AppDomain : MarshalByRefObject, 
	_AppDomain, IEvidenceFactory

El tipo AppDomain expone los siguientes miembros.

  NombreDescripción
Propiedad públicaActivationContextObtiene el contexto de activación para el dominio de aplicación actual.
Propiedad públicaApplicationIdentityObtiene la identidad de la aplicación en el dominio de aplicación.
Propiedad públicaApplicationTrustObtiene información que describe los permisos concedidos a una aplicación y si la aplicación tiene un nivel de confianza que le permita ejecutarse.
Propiedad públicaBaseDirectoryObtiene el directorio base que el interpretador de ensamblados utiliza para buscar ensamblados.
Propiedad públicaMiembro estáticoCompatible con XNA FrameworkCurrentDomainObtiene el actual dominio de aplicación del actual Thread.
Propiedad públicaDomainManagerObtiene el administrador de dominio que ha proporcionado el host al inicializar el dominio de aplicación.
Propiedad públicaDynamicDirectoryObtiene el directorio que el interpretador de ensamblados utiliza para buscar ensamblados creados de forma dinámica.
Propiedad públicaEvidenceObtiene el Evidence asociado al dominio de la aplicación.
Propiedad públicaCompatible con XNA FrameworkFriendlyNameObtiene el nombre descriptivo de este dominio de aplicación.
Propiedad públicaIdObtiene un entero que identifica únicamente el dominio de aplicación en el proceso.
Propiedad públicaIsFullyTrustedObtiene un valor que indica si los ensamblados que se cargan en el dominio de aplicación actual se ejecutan con plena confianza.
Propiedad públicaIsHomogenousObtiene un valor que indica si el dominio de aplicación actual tiene un conjunto de permisos concedido a todos los ensamblados que se cargan en el dominio de aplicación.
Propiedad públicaMiembro estáticoMonitoringIsEnabledObtiene o establece un valor que indica si la supervisión de la CPU y de la memoria del dominio de aplicación está habilitada para el proceso actual. Una vez que se habilita la supervisión para un proceso, no se puede deshabilitar.
Propiedad públicaMonitoringSurvivedMemorySizeObtiene el número de bytes que sobrevivieron a la última recolección y a la que se sabe que hace referencia el dominio de aplicación actual.
Propiedad públicaMiembro estáticoMonitoringSurvivedProcessMemorySizeObtiene los bytes totales que sobrevivieron a la última recolección para todos los dominios de aplicación del proceso.
Propiedad públicaMonitoringTotalAllocatedMemorySizeObtiene el tamaño total, en bytes, de todas las asignaciones de memoria realizadas por el dominio de aplicación desde que se creó, sin restar la memoria recopilada.
Propiedad públicaMonitoringTotalProcessorTimeObtiene el tiempo total de procesador usado por todos los subprocesos mientras se ejecutaban en el dominio de aplicación actual, desde que el proceso se inició.
Propiedad públicaPermissionSetObtiene el conjunto de permisos de un dominio de aplicación en un espacio aislado.
Propiedad públicaRelativeSearchPathObtiene la ruta de acceso del directorio base en que el interpretador de ensamblados debe buscar ensamblados privados.
Propiedad públicaSetupInformationObtiene la información de configuración del dominio de aplicación correspondiente a esta instancia.
Propiedad públicaShadowCopyFilesObtiene una indicación si el dominio de aplicación se configura para archivos de instantánea.
Arriba

  NombreDescripción
Método públicoAppendPrivatePath Obsoleta. Anexa el nombre de directorio especificado a la lista de rutas de acceso privadas.
Método públicoApplyPolicyDevuelve el nombre para mostrar del ensamblado después de aplicar la directiva.
Método públicoClearPrivatePath Obsoleta. Restablece la ruta de acceso que especifica la ubicación de ensamblados privados en la cadena vacía ("").
Método públicoClearShadowCopyPath Obsoleta. Restablece la lista de directorios que contienen copias sombra de ensamblados en la cadena vacía ("").
Método públicoCreateComInstanceFrom(String, String)Crea una nueva instancia de un tipo COM especificado. Los parámetros especifican el nombre de un archivo que contiene un ensamblado con el tipo y el nombre del tipo.
Método públicoCreateComInstanceFrom(String, String, Byte[], AssemblyHashAlgorithm)Crea una nueva instancia de un tipo COM especificado. Los parámetros especifican el nombre de un archivo que contiene un ensamblado con el tipo y el nombre del tipo.
Método públicoMiembro estáticoCompatible con XNA FrameworkCreateDomain(String)Crea un nuevo dominio de aplicación con el nombre especificado.
Método públicoMiembro estáticoCompatible con XNA FrameworkCreateDomain(String, Evidence)Crea un nuevo dominio de aplicación con el nombre especificado mediante la evidencia proporcionada.
Método públicoMiembro estáticoCreateDomain(String, Evidence, AppDomainSetup)Crea un nuevo dominio de aplicación con el nombre especificado, la evidencia indicada y la correspondiente información de configuración.
Método públicoMiembro estáticoCreateDomain(String, Evidence, AppDomainSetup, PermissionSet, StrongName[])Crea un nuevo dominio de aplicación utilizando el nombre, la evidencia, la información de configuración del dominio de aplicación, el conjunto predeterminado de permisos y la matriz de ensamblados de plena confianza que se hayan especificado.
Método públicoMiembro estáticoCreateDomain(String, Evidence, String, String, Boolean)Crea un nuevo dominio de aplicación con el nombre especificado utilizando la evidencia, la ruta de acceso base de la aplicación, la ruta de búsqueda relativa y un parámetro que especifica si debe cargarse una instantánea de un ensamblado en el dominio de aplicación.
Método públicoMiembro estáticoCreateDomain(String, Evidence, String, String, Boolean, AppDomainInitializer, String[])Crea un nuevo dominio de aplicación con el nombre especificado utilizando la evidencia, la ruta de acceso base de la aplicación, la ruta de búsqueda relativa y un parámetro que especifica si debe cargarse una instantánea de un ensamblado en el dominio de aplicación. Especifica un método de devolución de llamada que se invoca cuando se inicializa el dominio de aplicación, así como una matriz de argumentos de cadena para pasar al método de devolución de llamada.
Método públicoCreateInstance(String, String)Crea una nueva instancia del tipo especificado definido en el ensamblado especificado.
Método públicoCreateInstance(String, String, Object[])Crea una nueva instancia del tipo especificado definido en el ensamblado especificado. Un parámetro especifica una matriz de atributos de activación.
Método públicoCreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])Crea una nueva instancia del tipo especificado definido en el ensamblado especificado. Los parámetros especifican un enlazador, marcas de enlace, argumentos de constructor, información específica de la referencia cultural usada para interpretar argumentos y atributos de activación opcionales.
Método públicoCreateInstance(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) Obsoleta. Crea una nueva instancia del tipo especificado definido en el ensamblado especificado. Los parámetros establecen un enlazador, marcas de enlace, argumentos de constructor, información específica de la referencia cultural utilizada para interpretar argumentos, atributos de activación y autorización para crear el tipo.
Método públicoCreateInstanceAndUnwrap(String, String)Crea una nueva instancia del tipo especificado. Los parámetros especifican el ensamblado en el que se definen el tipo y el nombre del tipo.
Método públicoCreateInstanceAndUnwrap(String, String, Object[])Crea una nueva instancia del tipo especificado. Los parámetros especifican el ensamblado en el que se definen el tipo, el nombre del tipo y una matriz de atributos de activación.
Método públicoCreateInstanceAndUnwrap(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])Crea una nueva instancia del tipo especificado definido en el ensamblado indicado, especificando si se pasa por alto el modelo de mayúsculas y minúsculas del nombre de tipo, los atributos de enlace y el enlazador que se usan para seleccionar el tipo que se va a crear, los argumentos del constructor, la referencia cultural y los atributos de activación.
Método públicoCreateInstanceAndUnwrap(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) Obsoleta. Crea una nueva instancia del tipo especificado. Los parámetros especifican el nombre del tipo así como la forma en que se ha encontrado y se ha creado.
Método públicoCreateInstanceFrom(String, String)Crea una nueva instancia del tipo especificado definido en el archivo de ensamblado especificado.
Método públicoCreateInstanceFrom(String, String, Object[])Crea una nueva instancia del tipo especificado definido en el archivo de ensamblado especificado.
Método públicoCreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])Crea una nueva instancia del tipo especificado definido en el archivo de ensamblado especificado.
Método públicoCreateInstanceFrom(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) Obsoleta. Crea una nueva instancia del tipo especificado definido en el archivo de ensamblado especificado.
Método públicoCreateInstanceFromAndUnwrap(String, String)Crea una nueva instancia del tipo especificado definido en el archivo de ensamblado especificado.
Método públicoCreateInstanceFromAndUnwrap(String, String, Object[])Crea una nueva instancia del tipo especificado definido en el archivo de ensamblado especificado.
Método públicoCreateInstanceFromAndUnwrap(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[])Crea una nueva instancia del tipo especificado definido en el archivo de ensamblado indicado, especificando si se pasa por alto el modelo de mayúsculas y minúsculas del nombre de tipo, los atributos de enlace y el enlazador que se usan para seleccionar el tipo que se va a crear, los argumentos del constructor, la referencia cultural y los atributos de activación.
Método públicoCreateInstanceFromAndUnwrap(String, String, Boolean, BindingFlags, Binder, Object[], CultureInfo, Object[], Evidence) Obsoleta. Crea una nueva instancia del tipo especificado definido en el archivo de ensamblado especificado.
Método públicoCreateObjRefCrea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto. (Se hereda de MarshalByRefObject).
Método públicoDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess)Define un ensamblado dinámico con el nombre y modo de acceso especificados.
Método públicoDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>)Define un ensamblado dinámico con el nombre especificado, el modo de acceso y los atributos personalizados.
Método públicoDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence) Obsoleta. Define un ensamblado dinámico utilizando el nombre especificado, el modo de acceso y la evidencia.
Método públicoDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String)Define un ensamblado dinámico utilizando el nombre especificado, el modo de acceso y el directorio de almacenamiento.
Método públicoDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, IEnumerable<CustomAttributeBuilder>, SecurityContextSource)Define un ensamblado dinámico con el nombre, el modo de acceso y los atributos personalizados especificados, y usando el origen indicado para su contexto de seguridad.
Método públicoDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence) Obsoleta. Define un ensamblado dinámico utilizando el nombre especificado, el modo de acceso, el directorio de almacenamiento y la evidencia.
Método públicoDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, PermissionSet, PermissionSet, PermissionSet) Obsoleta. Define un ensamblado dinámico utilizando el nombre especificado, el modo de acceso y las solicitudes de permiso.
Método públicoDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Boolean, IEnumerable<CustomAttributeBuilder>)Define un ensamblado dinámico usando el nombre, el modo de acceso, el directorio de almacenamiento y la opción de sincronización especificados.
Método públicoDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, Evidence, PermissionSet, PermissionSet, PermissionSet) Obsoleta. Define un ensamblado dinámico utilizando el nombre especificado, el modo de acceso, la evidencia y las solicitudes de permiso.
Método públicoDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, PermissionSet, PermissionSet, PermissionSet) Obsoleta. Define un ensamblado dinámico utilizando el nombre especificado, el modo de acceso, el directorio de almacenamiento y las solicitudes de permiso.
Método públicoDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet) Obsoleta. Define un ensamblado dinámico utilizando el nombre especificado, el modo de acceso, el directorio de almacenamiento, la evidencia y las solicitudes de permiso.
Método públicoDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean) Obsoleta. Define un ensamblado dinámico utilizando el nombre especificado, el modo de acceso, el directorio de almacenamiento, la evidencia, las solicitudes de permiso y la opción de sincronización.
Método públicoDefineDynamicAssembly(AssemblyName, AssemblyBuilderAccess, String, Evidence, PermissionSet, PermissionSet, PermissionSet, Boolean, IEnumerable<CustomAttributeBuilder>) Obsoleta. Define un ensamblado dinámico con el nombre especificado, el modo de acceso, el directorio de almacenamiento, la evidencia, las solicitudes de permiso, la opción de sincronización y los atributos personalizados.
Método públicoDoCallBackEjecuta el código en otro dominio de aplicación identificado por el delegado especificado.
Método públicoCompatible con XNA FrameworkEquals(Object)Determina si el objeto especificado es igual al objeto actual. (Se hereda de Object).
Método públicoCompatible con XNA FrameworkExecuteAssembly(String)Ejecuta el ensamblado que contiene el archivo especificado.
Método públicoExecuteAssembly(String, Evidence) Obsoleta. Ejecuta el ensamblado que contiene el archivo especificado, utilizando la evidencia especificada.
Método públicoExecuteAssembly(String, String[])Ejecuta el ensamblado contenido en el archivo especificado, usando los argumentos especificados.
Método públicoCompatible con XNA FrameworkExecuteAssembly(String, Evidence, String[]) Obsoleta. Ejecuta el ensamblado que contiene el archivo especificado, utilizando la evidencia y los argumentos especificados.
Método públicoExecuteAssembly(String, String[], Byte[], AssemblyHashAlgorithm)Ejecuta el ensamblado contenido en el archivo especificado, usando los argumentos, el valor hash y el algoritmo hash especificados.
Método públicoExecuteAssembly(String, Evidence, String[], Byte[], AssemblyHashAlgorithm) Obsoleta. Ejecuta el ensamblado contenido en el archivo especificado, usando la evidencia, los argumentos, el valor hash y el algoritmo hash especificados.
Método públicoExecuteAssemblyByName(String)Ejecuta un ensamblado a partir de su nombre para mostrar.
Método públicoExecuteAssemblyByName(AssemblyName, String[])Ejecuta el ensamblado a partir de un objeto AssemblyName, usando los argumentos especificados.
Método públicoExecuteAssemblyByName(String, Evidence) Obsoleta. Ejecuta un ensamblado a partir de su nombre para mostrar, utilizando la evidencia especificada.
Método públicoExecuteAssemblyByName(String, String[])Ejecuta el ensamblado a partir de su nombre para mostrar, usando los argumentos especificados.
Método públicoExecuteAssemblyByName(AssemblyName, Evidence, String[]) Obsoleta. Ejecuta el ensamblado a partir de un objeto AssemblyName, utilizando la evidencia y los argumentos especificados.
Método públicoExecuteAssemblyByName(String, Evidence, String[]) Obsoleta. Ejecuta el ensamblado a partir de su nombre para mostrar, utilizando la evidencia y argumentos especificados.
Método públicoGetAssembliesObtiene los ensamblados que se han cargado en el contexto de ejecución de este dominio de aplicación.
Método públicoMiembro estáticoGetCurrentThreadId Obsoleta. Obtiene el identificador del subproceso actual.
Método públicoGetDataObtiene el valor almacenado en el dominio de aplicación actual para el nombre especificado.
Método públicoCompatible con XNA FrameworkGetHashCode Sirve como una función hash para un tipo en particular. (Se hereda de Object).
Método públicoGetLifetimeServiceRecupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia. (Se hereda de MarshalByRefObject).
Método públicoCompatible con XNA FrameworkGetTypeObtiene el tipo de la instancia actual.

En XNA Framework 3.0, este miembro se hereda de Object.GetType().
Método públicoInitializeLifetimeServiceConcede al AppDomain una duración infinita ya que impide que se genere una concesión. (Invalida a MarshalByRefObject.InitializeLifetimeService()).
Método públicoIsCompatibilitySwitchSetObtiene un valor booleano que acepta valores NULL que indica si se ha establecido algún modificador de compatibilidad y, en ese caso, si se ha establecido el modificador de compatibilidad especificado.
Método públicoIsDefaultAppDomainDevuelve un valor que indica si el dominio de aplicación es el dominio de aplicación predeterminado para el proceso.
Método públicoIsFinalizingForUnload Indica si se está descargando este dominio de aplicación y si Common Language Runtime está finalizando los objetos que contiene.
Método públicoLoad(AssemblyName)Carga un Assembly a partir de su AssemblyName.
Método públicoLoad(Byte[])Carga el Assembly con una imagen basada en el formato COFF (Common Object File Format) que contiene un Assembly emitido.
Método públicoLoad(String)Carga un Assembly a partir de su nombre de presentación.
Método públicoLoad(AssemblyName, Evidence) Obsoleta. Carga un Assembly a partir de su AssemblyName.
Método públicoLoad(Byte[], Byte[])Carga el Assembly con una imagen basada en el formato COFF (Common Object File Format) que contiene un Assembly emitido. También se cargan los bytes sin formato que representan los símbolos del Assembly.
Método públicoLoad(String, Evidence) Obsoleta. Carga un Assembly a partir de su nombre de presentación.
Método públicoLoad(Byte[], Byte[], Evidence) Obsoleta. Carga el Assembly con una imagen basada en el formato COFF (Common Object File Format) que contiene un Assembly emitido. También se cargan los bytes sin formato que representan los símbolos del Assembly.
Método públicoReflectionOnlyGetAssembliesDevuelve los ensamblados que se han cargado en el contexto de sólo reflexión del dominio de aplicación.
Método públicoSetAppDomainPolicy Obsoleta. Establece el nivel de directiva de seguridad para este dominio de aplicación.
Método públicoSetCachePath Obsoleta. Establece la ruta de acceso al directorio especificado como la ubicación donde se almacenan las copias sombra de los ensamblados.
Método públicoSetData(String, Object)Asigna el valor especificado a la propiedad especificada del dominio de aplicación.
Método públicoSetData(String, Object, IPermission)Asigna el valor especificado a la propiedad de dominio de aplicación indicada, con un permiso especificado que se exige al llamador cuando se recupera la propiedad.
Método públicoSetDynamicBase Obsoleta. Establece la ruta de acceso al directorio especificado como directorio base de los subdirectorios donde se almacenan los archivos generados de forma dinámica y se obtiene acceso a ellos.
Método públicoSetPrincipalPolicyEspecifica la forma en que los objetos principales y de identidad deben asociarse a un subproceso si éste intenta enlazarse a un principal mientas se ejecuta en este dominio de aplicación.
Método públicoSetShadowCopyFiles Obsoleta. Activa las copias sombra.
Método públicoSetShadowCopyPath Obsoleta. Establece la ruta de acceso al directorio especificado como la ubicación de las copias sombra de los ensamblados.
Método públicoSetThreadPrincipalEstablece el objeto principal predeterminado que se va a asociar a los subprocesos si éstos intentan enlazarse a un principal mientras se ejecutan en este dominio de aplicación.
Método públicoCompatible con XNA FrameworkToStringObtiene una representación en forma de cadena que incluye el nombre descriptivo del dominio de aplicación y cualquier directiva del contexto. (Invalida a Object.ToString()).
Método públicoMiembro estáticoCompatible con XNA FrameworkUnloadDescarga el dominio de aplicación especificado.
Arriba

  NombreDescripción
Evento públicoAssemblyLoadSe produce cuando se carga un ensamblado.
Evento públicoAssemblyResolveSe produce cuando la resolución de un ensamblado produce errores.
Evento públicoDomainUnloadSe produce cuando un AppDomain está a punto de descargarse.
Evento públicoFirstChanceExceptionOcurre cuando se produce una excepción en código administrado, antes de que el runtime busque un controlador de excepciones en la pila de llamadas del dominio de aplicación.
Evento públicoProcessExitSe produce al salir del proceso primario del dominio de aplicación predeterminado.
Evento públicoReflectionOnlyAssemblyResolveAparece cuando se produce un error en la resolución de un ensamblado en el contexto de sólo reflexión.
Evento públicoResourceResolveAparece cuando se produce un error en la resolución de un recurso porque éste no es un recurso vinculado válido o incrustado en el ensamblado.
Evento públicoTypeResolveSe produce cuando la resolución de un tipo produce errores.
Evento públicoCompatible con XNA FrameworkUnhandledExceptionSe produce cuando no se detecta una excepción.
Arriba

  NombreDescripción
Implementación explícita de interfacesMétodo privado_AppDomain.GetIDsOfNamesAsigna un conjunto de nombres a un conjunto correspondiente de identificadores de envío.
Implementación explícita de interfacesMétodo privado_AppDomain.GetTypeInfoRecupera la información de tipo de un objeto, que se puede utilizar después para obtener la información de tipo de una interfaz.
Implementación explícita de interfacesMétodo privado_AppDomain.GetTypeInfoCount

Recupera el número de interfaces de tipo de información que suministra un objeto (0 ó 1)

Implementación explícita de interfacesMétodo privado_AppDomain.InvokeProporciona acceso a las propiedades y los métodos expuestos por un objeto.
Arriba

Los dominios de aplicación, representados por los objetos AppDomain, ayudan a proporcionar aislamiento, descarga y límites de seguridad para ejecutar el código administrado.

  • Utilice los dominios de aplicación para aislar tareas que podrían derrumbar un proceso. Si el estado del objeto AppDomain que está ejecutando una tarea se vuelve inestable, el objeto AppDomain se puede descargar sin afectar al proceso. Es importante cuando un proceso debe ejecutarse durante largos períodos sin reiniciar. También puede utilizar los dominios de aplicación para aislar tareas que no deberían compartir datos.

  • Si se carga un ensamblado en el dominio de aplicación predeterminado, no se podrá descargar de la memoria mientras el proceso se esté ejecutando. Sin embargo, si se abre un segundo dominio de aplicación para cargar y ejecutar el ensamblado, éste se descarga cuando se descarga ese dominio de aplicación. Utilice esta técnica para minimizar el espacio de trabajo de los procesos de ejecución larga que en ocasiones utilizan grandes archivos DLL.

Varios dominios de aplicación pueden ejecutarse en un único proceso; sin embargo, no existe una correlación uno a uno entre los dominios de aplicación y los subprocesos. Varios subprocesos pueden pertenecer a un solo dominio de aplicación y, aunque un subproceso determinado no esté confinado en un único dominio de aplicación, en un momento dado, un subproceso se ejecuta en un solo dominio de aplicación.

Los dominios de aplicación se crean utilizando el método CreateDomain. Las instancias de AppDomain se utilizan para cargar y ejecutar ensamblados (Assembly). Cuando un AppDomain deja de utilizarse, puede descargarse.

La clase AppDomain implementa un conjunto de eventos que permiten a las aplicaciones responder cuando se cargue un ensamblado, se descargue un dominio de aplicación o se produce una excepción no controlada.

Para obtener más información acerca del uso de los dominios de aplicación, vea Dominios de aplicación.

Esta clase implementa las interfaces MarshalByRefObject, _AppDomain y IEvidenceFactory.

No se debe crear nunca un contenedor utilizable en modo remoto para un objeto AppDomain. Si se hace, se puede publicar una referencia remota a ese objeto AppDomain y dejar expuestos métodos como CreateInstance para el acceso remoto, destruyendo así la seguridad de acceso del código de dicho objeto AppDomain. Al conectarse al objeto AppDomain remoto, los clientes malintencionados podrían obtener acceso a cualquier recurso al que tenga acceso el propio objeto AppDomain. No cree contenedores utilizables de manera remota para ningún tipo que extienda MarshalByRefObject y que implemente métodos que puedan utilizar los clientes maliciosos para eludir el sistema de seguridad.

Nota de precauciónPrecaución

El valor predeterminado de la propiedad AppDomainSetup.DisallowCodeDownload es false. Esta configuración no es segura para los servicios. Para evitar que los servicios descarguen código de confianza parcial, establezca esta propiedad en true.

TopicLocation
Cómo: Cargar ensamblados en un dominio de aplicaciónFundamentos de programación en .NET Framework
Cómo: Configurar un dominio de aplicaciónFundamentos de programación en .NET Framework
Cómo: Crear un dominio de aplicaciónFundamentos de programación en .NET Framework
Cómo: Descargar un dominio de aplicaciónFundamentos de programación en .NET Framework
Cómo: Configurar un dominio de aplicaciónFundamentos de programación en .NET Framework
Cómo: Cargar ensamblados en un dominio de aplicaciónFundamentos de programación en .NET Framework
Cómo: Crear un dominio de aplicaciónFundamentos de programación en .NET Framework
Cómo: Descargar un dominio de aplicaciónFundamentos de programación en .NET Framework

En este ejemplo se muestra cómo crear un nuevo objeto AppDomain, cómo crear instancias de un tipo en ese nuevo AppDomain y cómo comunicarse con el objeto de ese tipo. Además, en este ejemplo se muestra cómo descargar el objeto AppDomain que provoca que el objeto se recolecte como elemento no utilizado.


using System;
using System.Reflection;
using System.Threading;

class Module1
{
    public static void Main()
    {
        // Get and display the friendly name of the default AppDomain.
        string callingDomainName = Thread.GetDomain().FriendlyName;
        Console.WriteLine(callingDomainName);

        // Get and display the full name of the EXE assembly.
        string exeAssembly = Assembly.GetEntryAssembly().FullName;
        Console.WriteLine(exeAssembly);

        // Construct and initialize settings for a second AppDomain.
        AppDomainSetup ads = new AppDomainSetup();
        ads.ApplicationBase = 
            System.Environment.CurrentDirectory;
        ads.DisallowBindingRedirects = false;
        ads.DisallowCodeDownload = true;
        ads.ConfigurationFile = 
            AppDomain.CurrentDomain.SetupInformation.ConfigurationFile;

        // Create the second AppDomain.
        AppDomain ad2 = AppDomain.CreateDomain("AD #2", null, ads);

        // Create an instance of MarshalbyRefType in the second AppDomain. 
        // A proxy to the object is returned.
        MarshalByRefType mbrt = 
            (MarshalByRefType) ad2.CreateInstanceAndUnwrap(
                exeAssembly, 
                typeof(MarshalByRefType).FullName
            );

        // Call a method on the object via the proxy, passing the 
        // default AppDomain's friendly name in as a parameter.
        mbrt.SomeMethod(callingDomainName);

        // Unload the second AppDomain. This deletes its object and 
        // invalidates the proxy object.
        AppDomain.Unload(ad2);
        try
        {
            // Call the method again. Note that this time it fails 
            // because the second AppDomain was unloaded.
            mbrt.SomeMethod(callingDomainName);
            Console.WriteLine("Sucessful call.");
        }
        catch(AppDomainUnloadedException)
        {
            Console.WriteLine("Failed call; this is expected.");
        }
    }
}

// Because this class is derived from MarshalByRefObject, a proxy 
// to a MarshalByRefType object can be returned across an AppDomain 
// boundary.
public class MarshalByRefType : MarshalByRefObject
{
    //  Call this method via a proxy.
    public void SomeMethod(string callingDomainName)
    {
        // Get this AppDomain's settings and display some of them.
        AppDomainSetup ads = AppDomain.CurrentDomain.SetupInformation;
        Console.WriteLine("AppName={0}, AppBase={1}, ConfigFile={2}", 
            ads.ApplicationName, 
            ads.ApplicationBase, 
            ads.ConfigurationFile
        );

        // Display the name of the calling AppDomain and the name 
        // of the second domain.
        // NOTE: The application's thread has transitioned between 
        // AppDomains.
        Console.WriteLine("Calling from '{0}' to '{1}'.", 
            callingDomainName, 
            Thread.GetDomain().FriendlyName
        );
    }
}

/* This code produces output similar to the following: 

AppDomainX.exe
AppDomainX, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
AppName=, AppBase=C:\AppDomain\bin, ConfigFile=C:\AppDomain\bin\AppDomainX.exe.config
Calling from 'AppDomainX.exe' to 'AD #2'.
Failed call; this is expected.
 */


.NET Framework

Compatible con: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1

.NET para aplicaciones de Windows Phone

Compatible con: Windows Phone 8, Silverlight 8.1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (no se admite el rol Server Core), Windows Server 2008 R2 (se admite el rol Server Core con SP1 o versiones posteriores; no se admite Itanium)

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft