RemotingServices.Marshal Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
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
Objekt, který chcete převést.
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
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
.
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.