RemotingServices.Marshal Metod

Definition

Konverterar angiven MarshalByRefObject till en instans av ObjRef klassen, som kan serialiseras för överföring mellan programdomäner och över ett nätverk.

Överlagringar

Name Description
Marshal(MarshalByRefObject)

Tar en MarshalByRefObject, registrerar den med fjärrkommunikationsinfrastrukturen och konverterar den till en instans av ObjRef klassen.

Marshal(MarshalByRefObject, String)

Konverterar angiven MarshalByRefObject till en instans av ObjRef klassen med angiven URI.

Marshal(MarshalByRefObject, String, Type)

Tar en MarshalByRefObject och konverterar den till en instans av ObjRef klassen med angiven URI och den angivna Type.

Marshal(MarshalByRefObject)

Tar en MarshalByRefObject, registrerar den med fjärrkommunikationsinfrastrukturen och konverterar den till en instans av ObjRef klassen.

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

Parametrar

Obj
MarshalByRefObject

Objektet som ska konverteras.

Returer

En instans av ObjRef klassen som representerar objektet som anges i parametern Obj .

Undantag

Parametern Obj är en objektproxy.

Minst en av anroparna högre i anropsstacken har inte behörighet att konfigurera fjärrkommunikationstyper och kanaler.

Kommentarer

A ObjRef är en serialiserbar representation av ett objekt som används för att överföra en objektreferens över en programdomängräns. Att skapa ett ObjRef för ett objekt kallas för marshaling. ObjRef Kan överföras via en kanal till en annan programdomän (eventuellt på en annan process eller dator). En gång i den andra programdomänen ObjRef måste parsas för att skapa en proxy för objektet, som vanligtvis är anslutet till det verkliga objektet. Den här åtgärden kallas för unmarshaling.

En ObjRef innehåller information som beskriver Type och -klassen för objektet som konverteras, en URI som unikt identifierar den specifika objektinstansen och kommunikationsrelaterad information om hur du når underindelningen för fjärrkommunikation där objektet finns.

Under marskalkering används kontexten från den aktuella tråden, inte kontexten som var aktiv när objektet skapades. Om en URI inte uttryckligen SetObjectUriForMarshal angavs av metoden genereras den automatiskt av fjärrkommunikationsidentitetsinfrastrukturen.

Du kan inte associera en URI med en proxy av någon av två orsaker: antingen genererades URI:n på serversidan för det objekt som den representerar, eller så är objektet välkänt, i vilket fall URI:n är känd. Om parametern Obj därför är en proxy genereras ett undantag. För anpassade proxyservrar är den här begränsningen avslappnad eftersom den transparenta proxyn behandlas som serverobjektet.

Se även

Gäller för

Marshal(MarshalByRefObject, String)

Konverterar angiven MarshalByRefObject till en instans av ObjRef klassen med angiven 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

Parametrar

Obj
MarshalByRefObject

Objektet som ska konverteras.

URI
String

Den angivna URI som du vill initiera den nya ObjRef. Kan vara null.

Returer

En instans av ObjRef klassen som representerar objektet som anges i parametern Obj .

Undantag

Obj är en objektproxy och parametern URI är inte null.

Minst en av anroparna högre i anropsstacken har inte behörighet att konfigurera fjärrkommunikationstyper och kanaler.

Exempel

Följande kodexempel visar hur du använder den aktuella Marshal metoden för att konvertera ett angivet objekt.

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

Kommentarer

A ObjRef är en serialiserbar representation av ett objekt som används för att överföra en objektreferens över en programdomängräns. Att skapa ett ObjRef för ett objekt kallas för marshaling. ObjRef Kan överföras via en kanal till en annan programdomän (eventuellt på en annan process eller dator). En gång i den andra programdomänen ObjRef måste parsas för att skapa en proxy för objektet, som vanligtvis är anslutet till det verkliga objektet. Den här åtgärden kallas för unmarshaling.

En ObjRef innehåller information som beskriver Type och -klassen för objektet som konverteras, en URI som unikt identifierar den specifika objektinstansen och kommunikationsrelaterad information om hur du når underindelningen för fjärrkommunikation där objektet finns.

Under marskalkering används kontexten från den aktuella tråden, inte kontexten som var aktiv när objektet skapades.

Du kan inte associera en URI med en proxy av någon av två orsaker: antingen genererades URI:n på serversidan för det objekt som den representerar, eller så är objektet välkänt, i vilket fall URI:n är känd. Om parametern Obj därför är en proxy genereras ett undantag. För anpassade proxyservrar är den här begränsningen avslappnad eftersom den transparenta proxyn behandlas som serverobjektet.

Se även

Gäller för

Marshal(MarshalByRefObject, String, Type)

Tar en MarshalByRefObject och konverterar den till en instans av ObjRef klassen med angiven URI och den angivna 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

Parametrar

Obj
MarshalByRefObject

Objektet som ska konverteras till en ObjRef.

ObjURI
String

Den URI som objektet som anges i parametern Obj konverteras med. Kan vara null.

RequestedType
Type

Är TypeObj marskalkad som. Kan vara null.

Returer

En instans av ObjRef klassen som representerar objektet som anges i parametern Obj .

Undantag

Obj är en proxy för ett fjärrobjekt och parametern ObjURI är inte null.

Minst en av anroparna högre i anropsstacken har inte behörighet att konfigurera fjärrkommunikationstyper och kanaler.

Kommentarer

A ObjRef är en serialiserbar representation av ett objekt som används för att överföra en objektreferens över en programdomängräns. Att skapa ett ObjRef för ett objekt kallas för marshaling. ObjRef Kan överföras via en kanal till en annan programdomän (eventuellt på en annan process eller dator). En gång i den andra programdomänen ObjRef måste parsas för att skapa en proxy för objektet, som vanligtvis är anslutet till det verkliga objektet. Den här åtgärden kallas för unmarshaling.

En ObjRef innehåller information som beskriver Type och -klassen för objektet som konverteras, en URI som unikt identifierar den specifika objektinstansen och kommunikationsrelaterad information om hur du når underindelningen för fjärrkommunikation där objektet finns.

Den angivna Type används av fjärrkommunikationsinfrastrukturen för att begränsa omfattningen för den exponerade typhierarkin. Om objekt A till exempel härleds från objekt B, som härleds från objekt C och Marshal anropas, kan klienten omvandla proxyn mellan C och B men inte till A.

Under marskalkering används kontexten från den aktuella tråden, inte kontexten som var aktiv när objektet skapades.

Du kan inte associera en URI med en proxy av någon av två orsaker: antingen genererades URI:n på serversidan för det objekt som den representerar, eller så är objektet välkänt, i vilket fall URI:n är känd. Om parametern Obj därför är en proxy genereras ett undantag. För anpassade proxyservrar är den här begränsningen avslappnad eftersom den transparenta proxyn behandlas som serverobjektet.

Se även

Gäller för