Partage via


RemotingServices.Marshal Méthode

Définition

Convertit le MarshalByRefObject donné en instance de la classe ObjRef, qui peut être sérialisée pour transmission entre domaines d'application et sur un réseau.

Surcharges

Marshal(MarshalByRefObject)

Accepte MarshalByRefObject, puis inscrit celui-ci avec l'infrastructure de communication à distance avant de le convertir en instance de la classe ObjRef.

Marshal(MarshalByRefObject, String)

Convertit le MarshalByRefObject donné en instance de la classe ObjRef avec l'URI spécifié.

Marshal(MarshalByRefObject, String, Type)

Accepte un MarshalByRefObject et convertit celui-ci en instance de la classe ObjRef avec l'URI spécifié, et le Type fourni.

Marshal(MarshalByRefObject)

Accepte MarshalByRefObject, puis inscrit celui-ci avec l'infrastructure de communication à distance avant de le convertir en instance de la classe 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

Paramètres

Obj
MarshalByRefObject

Objet à convertir.

Retours

Instance de la classe ObjRef représentant l'objet spécifié dans le paramètre Obj.

Exceptions

Le paramètre Obj est un objet proxy.

Au moins un des appelants à un niveau plus élevé dans la pile des appels n'a pas l'autorisation de configuration des types et des canaux de communication à distance.

Remarques

Un ObjRef est une représentation sérialisable d’un objet utilisé pour transférer une référence d’objet à travers une limite de domaine d’application. La création d’un ObjRef pour un objet est appelée marshaling. Le ObjRef peut être transféré via un canal vers un autre domaine d’application (éventuellement sur un autre processus ou ordinateur). Une fois dans l’autre domaine d’application, le ObjRef doit être analysé pour créer un proxy pour l’objet, généralement connecté à l’objet réel. Cette opération est appelée démarshalation.

Un ObjRef contient des informations qui décrivent la Type classe et de l’objet marshalé, un URI qui identifie de manière unique l’objet spécifique instance et des informations relatives à la communication sur la façon d’atteindre la sous-section de communication à distance où se trouve l’objet.

Pendant le marshaling, le contexte du thread actuel est utilisé, et non le contexte qui était actif lors de la création de l’objet. Si un URI n’a pas été défini explicitement par la SetObjectUriForMarshal méthode , il est généré automatiquement par l’infrastructure d’identité de communication à distance.

Vous ne pouvez pas associer un URI à un proxy pour l’une des deux raisons suivantes : soit l’URI a été généré côté serveur pour l’objet qu’il représente, soit l’objet est bien connu, auquel cas l’URI est connu. Pour cette raison, si le Obj paramètre est un proxy, une exception est levée. Pour les proxys personnalisés, cette restriction est assouplie, car le proxy transparent est traité comme l’objet serveur.

Voir aussi

S’applique à

Marshal(MarshalByRefObject, String)

Convertit le MarshalByRefObject donné en instance de la classe ObjRef avec l'URI spécifié.

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

Paramètres

Obj
MarshalByRefObject

Objet à convertir.

URI
String

URI spécifié avec lequel initialiser le nouveau ObjRef. Peut être null.

Retours

Instance de la classe ObjRef représentant l'objet spécifié dans le paramètre Obj.

Exceptions

Obj est un objet proxy et le paramètre URI n'est pas null.

Au moins un des appelants à un niveau plus élevé dans la pile des appels n'a pas l'autorisation de configuration des types et des canaux de communication à distance.

Exemples

L’exemple de code suivant montre comment utiliser la méthode actuelle Marshal pour marshaler un objet spécifié.

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

Remarques

Un ObjRef est une représentation sérialisable d’un objet utilisé pour transférer une référence d’objet à travers une limite de domaine d’application. La création d’un ObjRef pour un objet est appelée marshaling. Le ObjRef peut être transféré via un canal vers un autre domaine d’application (éventuellement sur un autre processus ou ordinateur). Une fois dans l’autre domaine d’application, le ObjRef doit être analysé pour créer un proxy pour l’objet, généralement connecté à l’objet réel. Cette opération est appelée démarshalation.

Un ObjRef contient des informations qui décrivent la Type classe et de l’objet marshalé, un URI qui identifie de manière unique l’objet spécifique instance et des informations relatives à la communication sur la façon d’atteindre la sous-section de communication à distance où se trouve l’objet.

Pendant le marshaling, le contexte du thread actuel est utilisé, et non le contexte qui était actif lors de la création de l’objet.

Vous ne pouvez pas associer un URI à un proxy pour l’une des deux raisons suivantes : soit l’URI a été généré côté serveur pour l’objet qu’il représente, soit l’objet est bien connu, auquel cas l’URI est connu. Pour cette raison, si le Obj paramètre est un proxy, une exception est levée. Pour les proxys personnalisés, cette restriction est assouplie, car le proxy transparent est traité comme l’objet serveur.

Voir aussi

S’applique à

Marshal(MarshalByRefObject, String, Type)

Accepte un MarshalByRefObject et convertit celui-ci en instance de la classe ObjRef avec l'URI spécifié, et le Type fourni.

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

Paramètres

Obj
MarshalByRefObject

Objet à convertir en ObjRef.

ObjURI
String

URI avec lequel l'objet spécifié dans le paramètre Obj est marshalé. Peut être null.

RequestedType
Type

TypeObj sous lequel il est marshalé. Peut être null.

Retours

Instance de la classe ObjRef représentant l'objet spécifié dans le paramètre Obj.

Exceptions

Obj est un proxy d'un objet distant, et le paramètre ObjUri n'est pas null.

Au moins un des appelants à un niveau plus élevé dans la pile des appels n'a pas l'autorisation de configuration des types et des canaux de communication à distance.

Remarques

Un ObjRef est une représentation sérialisable d’un objet utilisé pour transférer une référence d’objet à travers une limite de domaine d’application. La création d’un ObjRef pour un objet est appelée marshaling. Le ObjRef peut être transféré via un canal vers un autre domaine d’application (éventuellement sur un autre processus ou ordinateur). Une fois dans l’autre domaine d’application, le ObjRef doit être analysé pour créer un proxy pour l’objet, généralement connecté à l’objet réel. Cette opération est appelée démarshalation.

Un ObjRef contient des informations qui décrivent la Type classe et de l’objet marshalé, un URI qui identifie de manière unique l’objet spécifique instance et des informations relatives à la communication sur la façon d’atteindre la sous-section de communication à distance où se trouve l’objet.

Le spécifié Type est utilisé par l’infrastructure de communication à distance pour limiter l’étendue de la hiérarchie des types exposés. Par exemple, si l’objet A dérive de l’objet B, qui dérive de l’objet C, et Marshal est appelé, le client peut convertir le proxy entre C et B, mais pas en A.

Pendant le marshaling, le contexte du thread actuel est utilisé, et non le contexte qui était actif lors de la création de l’objet.

Vous ne pouvez pas associer un URI à un proxy pour l’une des deux raisons suivantes : soit l’URI a été généré côté serveur pour l’objet qu’il représente, soit l’objet est bien connu, auquel cas l’URI est connu. Pour cette raison, si le Obj paramètre est un proxy, une exception est levée. Pour les proxys personnalisés, cette restriction est assouplie, car le proxy transparent est traité comme l’objet serveur.

Voir aussi

S’applique à