RemotingServices.Marshal Método

Definição

Converte o dado MarshalByRefObject numa instância da ObjRef classe, que pode ser serializada para transmissão entre domínios de aplicação e através de uma rede.

Sobrecargas

Name Description
Marshal(MarshalByRefObject)

Pega num MarshalByRefObject, regista-o na infraestrutura remota e converte-o numa instância da ObjRef classe.

Marshal(MarshalByRefObject, String)

Converte o dado MarshalByRefObject numa instância da ObjRef classe com o URI especificado.

Marshal(MarshalByRefObject, String, Type)

Pega num MarshalByRefObject e converte-o numa instância da ObjRef classe com o URI especificado, e o .Type

Marshal(MarshalByRefObject)

Pega num MarshalByRefObject, regista-o na infraestrutura remota e converte-o numa instância da ObjRef classe.

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

O objetivo a converter.

Devoluções

Uma instância da ObjRef classe que representa o objeto especificado no Obj parâmetro.

Exceções

O Obj parâmetro é um proxy de objeto.

Pelo menos um dos chamadores mais acima na pilha de chamadas não tem permissão para configurar tipos e canais de remoto.

Observações

A ObjRef é uma representação serializável de um objeto usada para transferir uma referência de objeto através de um limite de domínio de aplicação. Criar um ObjRef para um objeto é conhecido como marshaling. Podem ObjRef ser transferidos através de um canal para outro domínio de aplicação (possivelmente noutro processo ou computador). Uma vez no outro domínio de aplicação, o ObjRef deve ser analisado para criar um proxy para o objeto, geralmente ligado ao objeto real. Esta operação é conhecida como unmarshaling.

A contém informação que descreve a ObjRef classe e do objeto a ser marshaleado, um URI que identifica de forma única a instância específica do objeto, e informações relacionadas com Type comunicação sobre como chegar à subdivisão remota onde o objeto está localizado.

Durante o marshaling, é utilizado o contexto do thread atual, não o contexto que estava ativo quando o objeto foi criado. Se um URI não foi explicitamente definido pelo SetObjectUriForMarshal método, é automaticamente gerado pela infraestrutura de identidade remota.

Não se pode associar um URI a um proxy por uma de duas razões: ou o URI foi gerado do lado do servidor para o objeto que representa, ou o objeto é bem conhecido, caso em que o URI é conhecido. Por esta razão, se o Obj parâmetro for um proxy, será lançada uma exceção. Para proxies personalizados, esta restrição é relaxada porque o proxy transparente é tratado como o objeto servidor.

Ver também

Aplica-se a

Marshal(MarshalByRefObject, String)

Converte o dado MarshalByRefObject numa instância da ObjRef classe com o URI especificado.

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

O objetivo a converter.

URI
String

O URI especificado com o qual inicializar o novo ObjRef. Pode ser null.

Devoluções

Uma instância da ObjRef classe que representa o objeto especificado no Obj parâmetro.

Exceções

Obj é um proxy de objeto, e o URI parâmetro não nullé .

Pelo menos um dos chamadores mais acima na pilha de chamadas não tem permissão para configurar tipos e canais de remoto.

Exemplos

O exemplo de código seguinte demonstra como usar o método atual Marshal para marshal um 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()

Observações

A ObjRef é uma representação serializável de um objeto usada para transferir uma referência de objeto através de um limite de domínio de aplicação. Criar um ObjRef para um objeto é conhecido como marshaling. Podem ObjRef ser transferidos através de um canal para outro domínio de aplicação (possivelmente noutro processo ou computador). Uma vez no outro domínio de aplicação, o ObjRef deve ser analisado para criar um proxy para o objeto, geralmente ligado ao objeto real. Esta operação é conhecida como unmarshaling.

A contém informação que descreve a ObjRef classe e do objeto a ser marshaleado, um URI que identifica de forma única a instância específica do objeto, e informações relacionadas com Type comunicação sobre como chegar à subdivisão remota onde o objeto está localizado.

Durante o marshaling, é utilizado o contexto do thread atual, não o contexto que estava ativo quando o objeto foi criado.

Não se pode associar um URI a um proxy por uma de duas razões: ou o URI foi gerado do lado do servidor para o objeto que representa, ou o objeto é bem conhecido, caso em que o URI é conhecido. Por esta razão, se o Obj parâmetro for um proxy, será lançada uma exceção. Para proxies personalizados, esta restrição é relaxada porque o proxy transparente é tratado como o objeto servidor.

Ver também

Aplica-se a

Marshal(MarshalByRefObject, String, Type)

Pega num MarshalByRefObject e converte-o numa instância da ObjRef classe com o URI especificado, e o .Type

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

O objeto a converter num ObjRef.

ObjURI
String

O URI com que o objeto especificado no Obj parâmetro é marshalado. Pode ser null.

RequestedType
Type

É TypeObj organizado como. Pode ser null.

Devoluções

Uma instância da ObjRef classe que representa o objeto especificado no Obj parâmetro.

Exceções

Obj é um proxy de um objeto remoto, e o ObjURI parâmetro não nullé .

Pelo menos um dos chamadores mais acima na pilha de chamadas não tem permissão para configurar tipos e canais de remoto.

Observações

A ObjRef é uma representação serializável de um objeto usada para transferir uma referência de objeto através de um limite de domínio de aplicação. Criar um ObjRef para um objeto é conhecido como marshaling. Podem ObjRef ser transferidos através de um canal para outro domínio de aplicação (possivelmente noutro processo ou computador). Uma vez no outro domínio de aplicação, o ObjRef deve ser analisado para criar um proxy para o objeto, geralmente ligado ao objeto real. Esta operação é conhecida como unmarshaling.

A contém informação que descreve a ObjRef classe e do objeto a ser marshaleado, um URI que identifica de forma única a instância específica do objeto, e informações relacionadas com Type comunicação sobre como chegar à subdivisão remota onde o objeto está localizado.

O especificado Type é usado pela infraestrutura remota para limitar o âmbito da hierarquia de tipos exposta. Por exemplo, se o objeto A derivar do objeto B, que deriva do objeto C, e Marshal for chamado, então o cliente pode lançar o proxy entre C e B mas não para A.

Durante o marshaling, é utilizado o contexto do thread atual, não o contexto que estava ativo quando o objeto foi criado.

Não se pode associar um URI a um proxy por uma de duas razões: ou o URI foi gerado do lado do servidor para o objeto que representa, ou o objeto é bem conhecido, caso em que o URI é conhecido. Por esta razão, se o Obj parâmetro for um proxy, será lançada uma exceção. Para proxies personalizados, esta restrição é relaxada porque o proxy transparente é tratado como o objeto servidor.

Ver também

Aplica-se a