Esta documentación está archivada y no tiene mantenimiento.

MarshalByRefObject (Clase)

Permite obtener acceso a objetos a través de los límites de los dominios de las aplicaciones que admiten acceso remoto.

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

[SerializableAttribute] 
[ComVisibleAttribute(true)] 
public abstract class MarshalByRefObject
/** @attribute SerializableAttribute() */ 
/** @attribute ComVisibleAttribute(true) */ 
public abstract class MarshalByRefObject
SerializableAttribute 
ComVisibleAttribute(true) 
public abstract class MarshalByRefObject

Un dominio de aplicación es una partición en el proceso de un sistema operativo en el que residen una o más aplicaciones. Los objetos que están en el mismo dominio de aplicación se comunican directamente. Los objetos de diferentes dominios de aplicación se comunican bien transportando copias de objetos a través de los límites de los dominios de aplicación o utilizando un proxy para intercambiar mensajes.

MarshalByRefObject es la clase base de los objetos que se comunican a través de los límites de los dominios de aplicación que utilizan un proxy para intercambiar mensajes. Los objetos que no heredan de MarshalByRefObject tienen implícitamente valor de resolución. Cuando una aplicación remota hace referencia a un objeto con valor de resolución, se pasa una copia del objeto a través de los límites del dominio de la aplicación.

Es posible obtener acceso a los objetos MarshalByRefObject directamente dentro de los límites del dominio local de la aplicación. La primera vez que una aplicación en un dominio de aplicación remoto obtiene acceso a un MarshalByRefObject, se pasa un proxy a la aplicación remota. El cálculo de referencias de las siguientes llamadas que se realizan en el proxy, volverá a tener lugar en el objeto que reside en el dominio de la aplicación local.

Los tipos deben heredar de MarshalByRefObject, cuando el tipo se utiliza en los límites de los dominios de las aplicaciones, y no se debe copiar el estado del objeto porque los miembros del objeto no se utilicen fuera del dominio de la aplicación en el que se crearon.

El siguiente ejemplo muestra una clase derivada de MarshalByRefObject que se utilizará más tarde de forma remota.

using System;
using System.Runtime.Remoting;
using System.Security.Permissions;

public class SetObjectUriForMarshalTest  {

    class TestClass : MarshalByRefObject {
    }

    [SecurityPermission(SecurityAction.LinkDemand)]
    public static void Main()  {

        TestClass obj = new TestClass();    

        RemotingServices.SetObjectUriForMarshal(obj, "testUri");
        RemotingServices.Marshal(obj);

        Console.WriteLine(RemotingServices.GetObjectUri(obj));
    }
}

System.Object
  System.MarshalByRefObject
     Clases derivadas

Los miembros estáticos públicos (Shared en Visual Basic) 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.

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium, Windows Mobile para Pocket PC, Windows Mobile para Smartphone, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter Edition

.NET Framework no admite todas las versiones de cada plataforma. Para obtener una lista de las versiones admitidas, vea Requisitos del sistema.

.NET Framework

Compatible con: 2.0, 1.1, 1.0

.NET Compact Framework

Compatible con: 2.0, 1.0
Mostrar: