RemotingServices.Marshal Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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
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
Objektet som ska konverteras.
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
Objektet som ska konverteras till en ObjRef.
- ObjURI
- String
Den URI som objektet som anges i parametern Obj konverteras med. 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.