RemotingServices.Marshal Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Convertit l’élément donné MarshalByRefObject en une instance de la classe, qui peut être sérialisée pour la ObjRef transmission entre les domaines d’application et sur un réseau.
Surcharges
| Nom | Description |
|---|---|
| Marshal(MarshalByRefObject) |
Prend un MarshalByRefObject, l’inscrit auprès de l’infrastructure de communication à distance et le convertit en instance de la ObjRef classe. |
| Marshal(MarshalByRefObject, String) |
Convertit l’élément donné MarshalByRefObject en une instance de la ObjRef classe avec l’URI spécifié. |
| Marshal(MarshalByRefObject, String, Type) |
Prend une MarshalByRefObject instance de la classe et la convertit en instance de la ObjRef classe avec l’URI spécifié et le fichier fourni Type. |
Marshal(MarshalByRefObject)
Prend un MarshalByRefObject, l’inscrit auprès de l’infrastructure de communication à distance et le convertit en instance de la ObjRef classe.
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
Objet à convertir.
Retours
Instance de la ObjRef classe qui représente l’objet spécifié dans le Obj paramètre.
Exceptions
Le Obj paramètre est un proxy d’objet.
Au moins un des appelants plus haut dans la pile d’appels n’est pas autorisé à configurer les types et canaux de communication à distance.
Remarques
Il ObjRef s’agit d’une représentation sérialisable d’un objet utilisé pour transférer une référence d’objet sur une limite de domaine d’application. La création d’un ObjRef objet est appelée marshaling. Il 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, il 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.
Contient ObjRef des informations qui décrivent la classe et la classe de l’objet en cours de marshalé, un URI qui identifie de manière unique l’instance d’objet spécifique et des informations relatives aux communications relatives à la Type façon d’atteindre la sous-division de communication à distance où se trouve l’objet.
Pendant le marshaling, le contexte du thread actuel est utilisé, et non le contexte 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 : l’URI a été généré côté serveur pour l’objet qu’il représente, ou 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 l’élément donné MarshalByRefObject en une instance de la ObjRef classe 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
Objet à convertir.
Retours
Instance de la ObjRef classe qui représente l’objet spécifié dans le Obj paramètre.
Exceptions
Obj est un proxy d’objet et le URI paramètre n’est pas null.
Au moins un des appelants plus haut dans la pile d’appels n’est pas autorisé à configurer les types et 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
Il ObjRef s’agit d’une représentation sérialisable d’un objet utilisé pour transférer une référence d’objet sur une limite de domaine d’application. La création d’un ObjRef objet est appelée marshaling. Il 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, il 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.
Contient ObjRef des informations qui décrivent la classe et la classe de l’objet en cours de marshalé, un URI qui identifie de manière unique l’instance d’objet spécifique et des informations relatives aux communications relatives à la Type façon d’atteindre la sous-division de communication à distance où se trouve l’objet.
Pendant le marshaling, le contexte du thread actuel est utilisé, et non le contexte 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 : l’URI a été généré côté serveur pour l’objet qu’il représente, ou 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)
Prend une MarshalByRefObject instance de la classe et la convertit en instance de la ObjRef classe avec l’URI spécifié et le fichier fourni 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
Paramètres
Objet à convertir en ObjRef.
- ObjURI
- String
L’URI avec lequel l’objet spécifié dans le Obj paramètre est marshalé. Peut être null.
Retours
Instance de la ObjRef classe qui représente l’objet spécifié dans le Obj paramètre.
Exceptions
Obj est un proxy d’un objet distant, et le ObjURI paramètre n’est pas null.
Au moins un des appelants plus haut dans la pile d’appels n’est pas autorisé à configurer les types et canaux de communication à distance.
Remarques
Il ObjRef s’agit d’une représentation sérialisable d’un objet utilisé pour transférer une référence d’objet sur une limite de domaine d’application. La création d’un ObjRef objet est appelée marshaling. Il 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, il 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.
Contient ObjRef des informations qui décrivent la classe et la classe de l’objet en cours de marshalé, un URI qui identifie de manière unique l’instance d’objet spécifique et des informations relatives aux communications relatives à la Type façon d’atteindre la sous-division de communication à distance où se trouve l’objet.
L’infrastructure de communication à distance est Type utilisée pour limiter l’étendue de la hiérarchie de type exposé. 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 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 : l’URI a été généré côté serveur pour l’objet qu’il représente, ou 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.