RemotingServices.Marshal Método

Definición

Convierte el MarshalByRefObject especificado en una instancia de la clase ObjRef, que puede serializarse para su transmisión entre dominios de aplicación y a través de una red.

Sobrecargas

Marshal(MarshalByRefObject)

Toma un MarshalByRefObject, lo registra con la infraestructura de comunicación remota y lo convierte en una instancia de la clase ObjRef.

Marshal(MarshalByRefObject, String)

Convierte el MarshalByRefObject especificado en una instancia de la clase ObjRef con la dirección URI especificada.

Marshal(MarshalByRefObject, String, Type)

Toma un MarshalByRefObject y lo convierte en una instancia de la clase ObjRef con la dirección URI especificada y el Type suministrado.

Marshal(MarshalByRefObject)

Toma un MarshalByRefObject, lo registra con la infraestructura de comunicación remota y lo convierte en una instancia de la clase ObjRef.

public:
 static System::Runtime::Remoting::ObjRef ^ Marshal(MarshalByRefObject ^ Obj);
public static System.Runtime.Remoting.ObjRef Marshal (MarshalByRefObject Obj);
static member Marshal : MarshalByRefObject -> System.Runtime.Remoting.ObjRef
Public Shared Function Marshal (Obj As MarshalByRefObject) As ObjRef

Parámetros

Obj
MarshalByRefObject

Objeto que se va a convertir.

Devoluciones

Instancia de la clase ObjRef que representa el objeto especificado en el parámetro Obj.

Excepciones

El parámetro Obj es un objeto proxy.

Al menos uno de los llamadores situados en la parte superior de la pila de llamadas no tiene permiso para configurar los tipos y canales de comunicación remota.

Comentarios

Un ObjRef es una representación serializable de un objeto utilizado para transferir una referencia de objeto a través de un límite de dominio de aplicación. La creación de un ObjRef objeto para un objeto se conoce como serialización. ObjRef se puede transferir a través de un canal a otro dominio de aplicación (posiblemente en otro proceso o equipo). Una vez en el otro dominio de aplicación, ObjRef se debe analizar para crear un proxy para el objeto, generalmente conectado al objeto real. Esta operación se conoce como desmarcha.

ObjRef Contiene información que describe la Type clase y del objeto que se serializa, un URI que identifica de forma única la instancia de objeto específica y la información relacionada con la comunicación sobre cómo llegar a la subdivisión de comunicación remota donde se encuentra el objeto.

Durante la serialización, se usa el contexto del subproceso actual, no el contexto que estaba activo cuando se creó el objeto. Si el SetObjectUriForMarshal método no estableció explícitamente un URI, se genera automáticamente mediante la infraestructura de identidad de comunicación remota.

No se puede asociar un URI a un proxy por uno de estos dos motivos: el URI se generó en el lado del servidor para el objeto que representa o el objeto es conocido, en cuyo caso se conoce el URI. Por este motivo, si el Obj parámetro es un proxy, se producirá una excepción. En el caso de los servidores proxy personalizados, esta restricción se relaja porque el proxy transparente se trata como el objeto de servidor.

Consulte también

Se aplica a

Marshal(MarshalByRefObject, String)

Convierte el MarshalByRefObject especificado en una instancia de la clase ObjRef con la dirección URI especificada.

public:
 static System::Runtime::Remoting::ObjRef ^ Marshal(MarshalByRefObject ^ Obj, System::String ^ URI);
public static System.Runtime.Remoting.ObjRef Marshal (MarshalByRefObject Obj, string URI);
static member Marshal : MarshalByRefObject * string -> System.Runtime.Remoting.ObjRef
Public Shared Function Marshal (Obj As MarshalByRefObject, URI As String) As ObjRef

Parámetros

Obj
MarshalByRefObject

Objeto que se va a convertir.

URI
String

Dirección URI especificada con la que se va a inicializar la nueva referencia ObjRef. Puede ser null.

Devoluciones

Instancia de la clase ObjRef que representa el objeto especificado en el parámetro Obj.

Excepciones

Obj es un objeto proxy y el parámetro URI no es null.

Al menos uno de los llamadores situados en la parte superior de la pila de llamadas no tiene permiso para configurar los tipos y canales de comunicación remota.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar el método actual Marshal para serializar un objeto especificado.

TcpChannel^ channel = gcnew TcpChannel( 9000 );
ChannelServices::RegisterChannel( channel );
SampleWellKnown ^ objectWellKnown = gcnew SampleWellKnown;

// After the channel is registered, the Object* needs to be registered
// with the remoting infrastructure.  So, Marshal is called.
ObjRef^ objrefWellKnown = RemotingServices::Marshal( objectWellKnown, "objectWellKnownUri" );
Console::WriteLine( "An instance of SampleWellKnown type is published at {0}.", objrefWellKnown->URI );
Console::WriteLine( "Press enter to unregister SampleWellKnown, so that it is no longer available on this channel." );
Console::ReadLine();
RemotingServices::Disconnect( objectWellKnown );
Console::WriteLine( "Press enter to end the server process." );
Console::ReadLine();
TcpChannel channel = new TcpChannel(9000);
ChannelServices.RegisterChannel(channel);

SampleWellKnown objectWellKnown = new SampleWellKnown();

// After the channel is registered, the object needs to be registered
// with the remoting infrastructure.  So, Marshal is called.
ObjRef objrefWellKnown = RemotingServices.Marshal(objectWellKnown, "objectWellKnownUri");
Console.WriteLine("An instance of SampleWellKnown type is published at {0}.", objrefWellKnown.URI);

Console.WriteLine("Press enter to unregister SampleWellKnown, so that it is no longer available on this channel.");
Console.ReadLine();
RemotingServices.Disconnect(objectWellKnown);

Console.WriteLine("Press enter to end the server process.");
Console.ReadLine();
Dim channel As New TcpChannel(9000)
ChannelServices.RegisterChannel(channel)

Dim objectWellKnown As New SampleWellKnown()
' After the channel is registered, the object needs to be registered
' with the remoting infrastructure.  So, Marshal is called.
Dim objrefWellKnown As ObjRef = RemotingServices.Marshal(objectWellKnown, "objectWellKnownUri")
Console.WriteLine("An instance of SampleWellKnown type is published at {0}.", objrefWellKnown.URI)

Console.WriteLine("Press enter to unregister SampleWellKnown, so that it is no longer available on this channel.")
Console.ReadLine()
RemotingServices.Disconnect(objectWellKnown)
Console.WriteLine("Press enter to end the server process.")
Console.ReadLine()

Comentarios

Un ObjRef es una representación serializable de un objeto utilizado para transferir una referencia de objeto a través de un límite de dominio de aplicación. La creación de un ObjRef objeto para un objeto se conoce como serialización. ObjRef se puede transferir a través de un canal a otro dominio de aplicación (posiblemente en otro proceso o equipo). Una vez en el otro dominio de aplicación, ObjRef se debe analizar para crear un proxy para el objeto, generalmente conectado al objeto real. Esta operación se conoce como desmarcha.

ObjRef Contiene información que describe la Type clase y del objeto que se serializa, un URI que identifica de forma única la instancia de objeto específica y la información relacionada con la comunicación sobre cómo llegar a la subdivisión de comunicación remota donde se encuentra el objeto.

Durante la serialización, se usa el contexto del subproceso actual, no el contexto que estaba activo cuando se creó el objeto.

No se puede asociar un URI a un proxy por uno de estos dos motivos: el URI se generó en el lado del servidor para el objeto que representa o el objeto es conocido, en cuyo caso se conoce el URI. Por este motivo, si el Obj parámetro es un proxy, se producirá una excepción. En el caso de los servidores proxy personalizados, esta restricción se relaja porque el proxy transparente se trata como el objeto de servidor.

Consulte también

Se aplica a

Marshal(MarshalByRefObject, String, Type)

Toma un MarshalByRefObject y lo convierte en una instancia de la clase ObjRef con la dirección URI especificada y el Type suministrado.

public:
 static System::Runtime::Remoting::ObjRef ^ Marshal(MarshalByRefObject ^ Obj, System::String ^ ObjURI, Type ^ RequestedType);
public static System.Runtime.Remoting.ObjRef Marshal (MarshalByRefObject Obj, string ObjURI, Type RequestedType);
static member Marshal : MarshalByRefObject * string * Type -> System.Runtime.Remoting.ObjRef
Public Shared Function Marshal (Obj As MarshalByRefObject, ObjURI As String, RequestedType As Type) As ObjRef

Parámetros

Obj
MarshalByRefObject

Objeto que se va a convertir en ObjRef.

ObjURI
String

Dirección URI con la que se calculan las referencias del objeto especificado en el parámetro Obj. Puede ser null.

RequestedType
Type

TypeObj que se va a serializar. Puede ser null.

Devoluciones

Instancia de la clase ObjRef que representa el objeto especificado en el parámetro Obj.

Excepciones

Obj es un proxy de un objeto remoto y el parámetro ObjUri no es null.

Al menos uno de los llamadores situados en la parte superior de la pila de llamadas no tiene permiso para configurar los tipos y canales de comunicación remota.

Comentarios

Un ObjRef es una representación serializable de un objeto utilizado para transferir una referencia de objeto a través de un límite de dominio de aplicación. La creación de un ObjRef objeto para un objeto se conoce como serialización. ObjRef se puede transferir a través de un canal a otro dominio de aplicación (posiblemente en otro proceso o equipo). Una vez en el otro dominio de aplicación, ObjRef se debe analizar para crear un proxy para el objeto, generalmente conectado al objeto real. Esta operación se conoce como desmarcha.

ObjRef Contiene información que describe la Type clase y del objeto que se serializa, un URI que identifica de forma única la instancia de objeto específica y la información relacionada con la comunicación sobre cómo llegar a la subdivisión de comunicación remota donde se encuentra el objeto.

La infraestructura de comunicación remota usa el especificado Type para limitar el ámbito de la jerarquía de tipos expuesta. Por ejemplo, si el objeto A deriva del objeto B, que deriva del objeto C y Marshal se llama a , el cliente puede convertir el proxy entre C y B, pero no a A.

Durante la serialización, se usa el contexto del subproceso actual, no el contexto que estaba activo cuando se creó el objeto.

No se puede asociar un URI a un proxy por uno de estos dos motivos: el URI se generó en el lado del servidor para el objeto que representa o el objeto es conocido, en cuyo caso se conoce el URI. Por este motivo, si el Obj parámetro es un proxy, se producirá una excepción. En el caso de los servidores proxy personalizados, esta restricción se relaja porque el proxy transparente se trata como el objeto de servidor.

Consulte también

Se aplica a