Sdílet prostřednictvím


RemotingServices.Marshal Metoda

Definice

Převede danou MarshalByRefObject na instanci třídy ObjRef, kterou lze serializovat pro přenos mezi doménami aplikace a přes síť.

Přetížení

Marshal(MarshalByRefObject)

Vezme MarshalByRefObject, zaregistruje ji v infrastruktuře vzdálené komunikace a převede ji na instanci třídy ObjRef.

Marshal(MarshalByRefObject, String)

Převede danou MarshalByRefObject na instanci třídy ObjRef se zadaným identifikátorem URI.

Marshal(MarshalByRefObject, String, Type)

Vezme MarshalByRefObject a převede ho na instanci třídy ObjRef se zadaným identifikátorem URI a poskytnuté Type.

Marshal(MarshalByRefObject)

Vezme MarshalByRefObject, zaregistruje ji v infrastruktuře vzdálené komunikace a převede ji na instanci třídy 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

Parametry

Obj
MarshalByRefObject

Objekt, který chcete převést.

Návraty

Instance třídy ObjRef, která představuje objekt zadaný v Obj parametru.

Výjimky

Parametr Obj je proxy objektu.

Alespoň jeden z volajících, kteří jsou ve volání vyšší, nemá oprávnění ke konfiguraci typů vzdálené komunikace a kanálů.

Poznámky

ObjRef je serializovatelná reprezentace objektu použitého k přenosu odkazu na objekt přes hranici domény aplikace. Vytvoření ObjRef objektu se označuje jako zařazování. ObjRef lze přenést prostřednictvím kanálu do jiné domény aplikace (pravděpodobně v jiném procesu nebo počítači). Jakmile je v jiné doméně aplikace, musí být ObjRef analyzován, aby se vytvořil proxy pro objekt, obecně připojený k skutečnému objektu. Tato operace se označuje jako unmarshaling.

ObjRef obsahuje informace popisující Type a třídu zařazovaného objektu, identifikátor URI, který jedinečně identifikuje konkrétní instanci objektu, a informace související s komunikací o tom, jak se dostat k poddivizi vzdálené komunikace, kde se objekt nachází.

Během zařazování se používá kontext z aktuálního vlákna, nikoli kontext, který byl při vytvoření objektu aktivní. Pokud SetObjectUriForMarshal metoda explicitně nenastavila identifikátor URI, automaticky se vygeneruje infrastrukturou identit vzdálené komunikace.

Identifikátor URI nelze přidružit k proxy serveru z jednoho ze dvou důvodů: buď byl identifikátor URI vygenerován na straně serveru pro objekt, který představuje, nebo je objekt dobře známý, v takovém případě je identifikátor URI známý. Z tohoto důvodu, pokud je parametr Obj proxy, vyvolá se výjimka. U vlastních proxy serverů je toto omezení uvolněné, protože transparentní proxy server se považuje za objekt serveru.

Viz také

Platí pro

Marshal(MarshalByRefObject, String)

Převede danou MarshalByRefObject na instanci třídy ObjRef se zadaným identifikátorem URI.

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

Parametry

Obj
MarshalByRefObject

Objekt, který chcete převést.

URI
String

Zadaný identifikátor URI, pomocí kterého se má inicializovat nový ObjRef. Může být null.

Návraty

Instance třídy ObjRef, která představuje objekt zadaný v Obj parametru.

Výjimky

Obj je proxy objektu a parametr URI není null.

Alespoň jeden z volajících, kteří jsou ve volání vyšší, nemá oprávnění ke konfiguraci typů vzdálené komunikace a kanálů.

Příklady

Následující příklad kódu ukazuje, jak použít aktuální Marshal metoda zařazování zadaného objektu.

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()

Poznámky

ObjRef je serializovatelná reprezentace objektu použitého k přenosu odkazu na objekt přes hranici domény aplikace. Vytvoření ObjRef objektu se označuje jako zařazování. ObjRef lze přenést prostřednictvím kanálu do jiné domény aplikace (pravděpodobně v jiném procesu nebo počítači). Jakmile je v jiné doméně aplikace, musí být ObjRef analyzován, aby se vytvořil proxy pro objekt, obecně připojený k skutečnému objektu. Tato operace se označuje jako unmarshaling.

ObjRef obsahuje informace popisující Type a třídu zařazovaného objektu, identifikátor URI, který jedinečně identifikuje konkrétní instanci objektu, a informace související s komunikací o tom, jak se dostat k poddivizi vzdálené komunikace, kde se objekt nachází.

Během zařazování se používá kontext z aktuálního vlákna, nikoli kontext, který byl při vytvoření objektu aktivní.

Identifikátor URI nelze přidružit k proxy serveru z jednoho ze dvou důvodů: buď byl identifikátor URI vygenerován na straně serveru pro objekt, který představuje, nebo je objekt dobře známý, v takovém případě je identifikátor URI známý. Z tohoto důvodu, pokud je parametr Obj proxy, vyvolá se výjimka. U vlastních proxy serverů je toto omezení uvolněné, protože transparentní proxy server se považuje za objekt serveru.

Viz také

Platí pro

Marshal(MarshalByRefObject, String, Type)

Vezme MarshalByRefObject a převede ho na instanci třídy ObjRef se zadaným identifikátorem URI a poskytnuté 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

Parametry

Obj
MarshalByRefObject

Objekt, který se má převést na ObjRef.

ObjURI
String

Identifikátor URI objektu zadaný v parametru Obj je zařazován s. Může být null.

RequestedType
Type

Type Obj je zařazován jako. Může být null.

Návraty

Instance třídy ObjRef, která představuje objekt zadaný v Obj parametru.

Výjimky

Obj je proxy vzdáleného objektu a parametr ObjUri není null.

Alespoň jeden z volajících, kteří jsou ve volání vyšší, nemá oprávnění ke konfiguraci typů vzdálené komunikace a kanálů.

Poznámky

ObjRef je serializovatelná reprezentace objektu použitého k přenosu odkazu na objekt přes hranici domény aplikace. Vytvoření ObjRef objektu se označuje jako zařazování. ObjRef lze přenést prostřednictvím kanálu do jiné domény aplikace (pravděpodobně v jiném procesu nebo počítači). Jakmile je v jiné doméně aplikace, musí být ObjRef analyzován, aby se vytvořil proxy pro objekt, obecně připojený k skutečnému objektu. Tato operace se označuje jako unmarshaling.

ObjRef obsahuje informace popisující Type a třídu zařazovaného objektu, identifikátor URI, který jedinečně identifikuje konkrétní instanci objektu, a informace související s komunikací o tom, jak se dostat k poddivizi vzdálené komunikace, kde se objekt nachází.

Zadaná Type je používána infrastrukturou vzdálené komunikace k omezení rozsahu vystavené hierarchie typů. Pokud je například objekt A odvozen z objektu B, který je odvozen z objektu C a Marshal je volána, pak klient může přetypovat proxy mezi C a B, ale nikoli na A.

Během zařazování se používá kontext z aktuálního vlákna, nikoli kontext, který byl při vytvoření objektu aktivní.

Identifikátor URI nelze přidružit k proxy serveru z jednoho ze dvou důvodů: buď byl identifikátor URI vygenerován na straně serveru pro objekt, který představuje, nebo je objekt dobře známý, v takovém případě je identifikátor URI známý. Z tohoto důvodu, pokud je parametr Obj proxy, vyvolá se výjimka. U vlastních proxy serverů je toto omezení uvolněné, protože transparentní proxy server se považuje za objekt serveru.

Viz také

Platí pro