RemotingServices.Marshal Methode

Definitie

Converteert de opgegeven MarshalByRefObject gegevens naar een exemplaar van de ObjRef klasse, dat kan worden geserialiseerd voor verzending tussen toepassingsdomeinen en via een netwerk.

Overloads

Name Description
Marshal(MarshalByRefObject)

Neemt een MarshalByRefObject, registreert deze bij de externe infrastructuur en converteert deze naar een exemplaar van de ObjRef klasse.

Marshal(MarshalByRefObject, String)

Converteert de opgegeven MarshalByRefObject waarde naar een exemplaar van de ObjRef klasse met de opgegeven URI.

Marshal(MarshalByRefObject, String, Type)

Neemt een MarshalByRefObject en converteert deze naar een exemplaar van de ObjRef klasse met de opgegeven URI en de opgegeven Type.

Marshal(MarshalByRefObject)

Neemt een MarshalByRefObject, registreert deze bij de externe infrastructuur en converteert deze naar een exemplaar van de ObjRef klasse.

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

Parameters

Obj
MarshalByRefObject

Het object dat moet worden geconverteerd.

Retouren

Een exemplaar van de ObjRef klasse dat het object vertegenwoordigt dat is opgegeven in de Obj parameter.

Uitzonderingen

De Obj parameter is een objectproxy.

Ten minste één van de bellers hoger in de callstack is niet gemachtigd om externe typen en kanalen te configureren.

Opmerkingen

A ObjRef is een serialiseerbare weergave van een object dat wordt gebruikt om een objectverwijzing over een toepassingsdomeingrens over te dragen. Het maken van een ObjRef voor een object wordt marshaling genoemd. De ObjRef kan via een kanaal worden overgebracht naar een ander toepassingsdomein (mogelijk op een ander proces of op een andere computer). Eenmaal in het andere toepassingsdomein moet de ObjRef toepassing worden geparseerd om een proxy te maken voor het object, meestal verbonden met het echte object. Deze bewerking wordt unmarshaling genoemd.

Een ObjRef bevat informatie die de Type en klasse van het object beschrijft die marshaled wordt, een URI die het specifieke objectexemplaren uniek identificeert en communicatiegerelateerde informatie over het bereiken van de externe onderverdeling waar het object zich bevindt.

Tijdens marshaling wordt de context van de huidige thread gebruikt, niet de context die actief was toen het object werd gemaakt. Als een URI niet expliciet is ingesteld door de SetObjectUriForMarshal methode, wordt deze automatisch gegenereerd door de externe identiteitsinfrastructuur.

U kunt een URI niet koppelen aan een proxy om een van de twee redenen: de URI is gegenereerd aan de serverzijde voor het object dat het voorstelt, of het object is bekend, in welk geval de URI bekend is. Als de Obj parameter daarom een proxy is, wordt er een uitzondering gegenereerd. Voor aangepaste proxy's is deze beperking versoepeld omdat de transparante proxy wordt behandeld als het serverobject.

Zie ook

Van toepassing op

Marshal(MarshalByRefObject, String)

Converteert de opgegeven MarshalByRefObject waarde naar een exemplaar van de ObjRef klasse met de opgegeven 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

Parameters

Obj
MarshalByRefObject

Het object dat moet worden geconverteerd.

URI
String

De opgegeven URI waarmee de nieuwe ObjRefmoet worden geïnitialiseerd. Kan zijn null.

Retouren

Een exemplaar van de ObjRef klasse dat het object vertegenwoordigt dat is opgegeven in de Obj parameter.

Uitzonderingen

Obj is een objectproxy en de URI parameter is niet null.

Ten minste één van de bellers hoger in de callstack is niet gemachtigd om externe typen en kanalen te configureren.

Voorbeelden

In het volgende codevoorbeeld ziet u hoe u de huidige Marshal methode gebruikt om een opgegeven object te marshalen.

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

Opmerkingen

A ObjRef is een serialiseerbare weergave van een object dat wordt gebruikt om een objectverwijzing over een toepassingsdomeingrens over te dragen. Het maken van een ObjRef voor een object wordt marshaling genoemd. De ObjRef kan via een kanaal worden overgebracht naar een ander toepassingsdomein (mogelijk op een ander proces of op een andere computer). Eenmaal in het andere toepassingsdomein moet de ObjRef toepassing worden geparseerd om een proxy te maken voor het object, meestal verbonden met het echte object. Deze bewerking wordt unmarshaling genoemd.

Een ObjRef bevat informatie die de Type en klasse van het object beschrijft die marshaled wordt, een URI die het specifieke objectexemplaren uniek identificeert en communicatiegerelateerde informatie over het bereiken van de externe onderverdeling waar het object zich bevindt.

Tijdens marshaling wordt de context van de huidige thread gebruikt, niet de context die actief was toen het object werd gemaakt.

U kunt een URI niet koppelen aan een proxy om een van de twee redenen: de URI is gegenereerd aan de serverzijde voor het object dat het voorstelt, of het object is bekend, in welk geval de URI bekend is. Als de Obj parameter daarom een proxy is, wordt er een uitzondering gegenereerd. Voor aangepaste proxy's is deze beperking versoepeld omdat de transparante proxy wordt behandeld als het serverobject.

Zie ook

Van toepassing op

Marshal(MarshalByRefObject, String, Type)

Neemt een MarshalByRefObject en converteert deze naar een exemplaar van de ObjRef klasse met de opgegeven URI en de opgegeven 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

Parameters

Obj
MarshalByRefObject

Het object dat moet worden geconverteerd naar een ObjRef.

ObjURI
String

De URI waarmee het object dat in de Obj parameter is opgegeven, is marshaled met. Kan zijn null.

RequestedType
Type

Het TypeObj is marshaled als. Kan zijn null.

Retouren

Een exemplaar van de ObjRef klasse dat het object vertegenwoordigt dat is opgegeven in de Obj parameter.

Uitzonderingen

Obj is een proxy van een extern object en de ObjURI parameter is niet null.

Ten minste één van de bellers hoger in de callstack is niet gemachtigd om externe typen en kanalen te configureren.

Opmerkingen

A ObjRef is een serialiseerbare weergave van een object dat wordt gebruikt om een objectverwijzing over een toepassingsdomeingrens over te dragen. Het maken van een ObjRef voor een object wordt marshaling genoemd. De ObjRef kan via een kanaal worden overgebracht naar een ander toepassingsdomein (mogelijk op een ander proces of op een andere computer). Eenmaal in het andere toepassingsdomein moet de ObjRef toepassing worden geparseerd om een proxy te maken voor het object, meestal verbonden met het echte object. Deze bewerking wordt unmarshaling genoemd.

Een ObjRef bevat informatie die de Type en klasse van het object beschrijft die marshaled wordt, een URI die het specifieke objectexemplaren uniek identificeert en communicatiegerelateerde informatie over het bereiken van de externe onderverdeling waar het object zich bevindt.

De opgegeven Type wordt gebruikt door de externe infrastructuur om het bereik van de weergegeven typehiërarchie te beperken. Als object A bijvoorbeeld is afgeleid van object B, dat is afgeleid van object C en Marshal wordt aangeroepen, kan de client de proxy tussen C en B casten, maar niet naar A.

Tijdens marshaling wordt de context van de huidige thread gebruikt, niet de context die actief was toen het object werd gemaakt.

U kunt een URI niet koppelen aan een proxy om een van de twee redenen: de URI is gegenereerd aan de serverzijde voor het object dat het voorstelt, of het object is bekend, in welk geval de URI bekend is. Als de Obj parameter daarom een proxy is, wordt er een uitzondering gegenereerd. Voor aangepaste proxy's is deze beperking versoepeld omdat de transparante proxy wordt behandeld als het serverobject.

Zie ook

Van toepassing op