RemotingServices.Marshal Metodo

Definizione

Converte l'oggetto MarshalByRefObject in un'istanza della classe ObjRef, che può essere serializzata per la trasmissione tra domini applicazione e in rete.

Overload

Marshal(MarshalByRefObject)

Accetta un oggetto MarshalByRefObject, lo registra con l'infrastruttura remota e lo converte in un'istanza della classe ObjRef.

Marshal(MarshalByRefObject, String)

Converte l'oggetto MarshalByRefObject dato in un'istanza della classe ObjRef con l'URI specificato.

Marshal(MarshalByRefObject, String, Type)

Accetta un oggetto MarshalByRefObject e lo converte in un'istanza della classe ObjRef con l'URI specificato e il Type indicato.

Marshal(MarshalByRefObject)

Accetta un oggetto MarshalByRefObject, lo registra con l'infrastruttura remota e lo converte in un'istanza della 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

Parametri

Obj
MarshalByRefObject

Oggetto da convertire.

Restituisce

Istanza della classe ObjRef che rappresenta l'oggetto specificato nel parametro Obj.

Eccezioni

Il valore del parametro Obj è un oggetto proxy.

Almeno uno dei chiamanti in posizione più elevata nello stack di chiamate non dispone delle autorizzazioni alla configurazione di canali e tipi remoti.

Commenti

Un ObjRef oggetto è una rappresentazione serializzabile di un oggetto utilizzato per trasferire un riferimento a un oggetto attraverso un limite di dominio applicazione. La creazione di un ObjRef per un oggetto è nota come marshalling. Può ObjRef essere trasferito tramite un canale in un altro dominio applicazione (possibilmente in un altro processo o computer). Una volta nell'altro dominio applicazione, è necessario analizzare per ObjRef creare un proxy per l'oggetto, in genere connesso all'oggetto reale. Questa operazione è nota come unmarshaling.

Contiene ObjRef informazioni che descrivono la Type classe e dell'oggetto sottoposto a marshalling, un URI che identifica in modo univoco l'istanza dell'oggetto specifico e le informazioni correlate alla comunicazione su come raggiungere la suddivisione remota in cui si trova l'oggetto.

Durante il marshalling, viene usato il contesto del thread corrente, non il contesto attivo al momento della creazione dell'oggetto. Se un URI non è stato impostato in modo esplicito dal SetObjectUriForMarshal metodo , viene generato automaticamente dall'infrastruttura di gestione remota delle identità.

Non è possibile associare un URI a un proxy per uno dei due motivi seguenti: l'URI è stato generato sul lato server per l'oggetto rappresentato o l'oggetto è noto, nel qual caso l'URI è noto. Per questo motivo, se il Obj parametro è un proxy, verrà generata un'eccezione. Per i proxy personalizzati questa restrizione è flessibile perché il proxy trasparente viene considerato come oggetto server.

Vedi anche

Si applica a

Marshal(MarshalByRefObject, String)

Converte l'oggetto MarshalByRefObject dato in un'istanza della classe ObjRef con l'URI specificato.

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

Parametri

Obj
MarshalByRefObject

Oggetto da convertire.

URI
String

URI specificato con cui inizializzare il nuovo oggetto ObjRef. Può essere null.

Restituisce

Istanza della classe ObjRef che rappresenta l'oggetto specificato nel parametro Obj.

Eccezioni

Obj rappresenta un proxy dell'oggetto, mentre il valore del parametro URI non è null.

Almeno uno dei chiamanti in posizione più elevata nello stack di chiamate non dispone delle autorizzazioni alla configurazione di canali e tipi remoti.

Esempio

Nell'esempio di codice seguente viene illustrato come utilizzare il metodo corrente Marshal per effettuare il marshalling di un oggetto specificato.

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

Commenti

Un ObjRef oggetto è una rappresentazione serializzabile di un oggetto utilizzato per trasferire un riferimento a un oggetto attraverso un limite di dominio applicazione. La creazione di un ObjRef per un oggetto è nota come marshalling. Può ObjRef essere trasferito tramite un canale in un altro dominio applicazione (possibilmente in un altro processo o computer). Una volta nell'altro dominio applicazione, è necessario analizzare per ObjRef creare un proxy per l'oggetto, in genere connesso all'oggetto reale. Questa operazione è nota come unmarshaling.

Contiene ObjRef informazioni che descrivono la Type classe e dell'oggetto sottoposto a marshalling, un URI che identifica in modo univoco l'istanza dell'oggetto specifico e le informazioni correlate alla comunicazione su come raggiungere la suddivisione remota in cui si trova l'oggetto.

Durante il marshalling, viene usato il contesto del thread corrente, non il contesto attivo al momento della creazione dell'oggetto.

Non è possibile associare un URI a un proxy per uno dei due motivi seguenti: l'URI è stato generato sul lato server per l'oggetto rappresentato o l'oggetto è noto, nel qual caso l'URI è noto. Per questo motivo, se il Obj parametro è un proxy, verrà generata un'eccezione. Per i proxy personalizzati questa restrizione è flessibile perché il proxy trasparente viene considerato come oggetto server.

Vedi anche

Si applica a

Marshal(MarshalByRefObject, String, Type)

Accetta un oggetto MarshalByRefObject e lo converte in un'istanza della classe ObjRef con l'URI specificato e il Type indicato.

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

Parametri

Obj
MarshalByRefObject

Oggetto da convertire in un oggetto ObjRef.

ObjURI
String

URI con cui viene effettuato il marshalling dell'oggetto specificato nel parametro Obj. Può essere null.

RequestedType
Type

TypeObj in base a cui viene eseguito il marshaling. Può essere null.

Restituisce

Istanza della classe ObjRef che rappresenta l'oggetto specificato nel parametro Obj.

Eccezioni

Obj rappresenta un proxy di un oggetto remoto, mentre il valore del parametro ObjUri non è null.

Almeno uno dei chiamanti in posizione più elevata nello stack di chiamate non dispone delle autorizzazioni alla configurazione di canali e tipi remoti.

Commenti

Un ObjRef oggetto è una rappresentazione serializzabile di un oggetto utilizzato per trasferire un riferimento a un oggetto attraverso un limite di dominio applicazione. La creazione di un ObjRef per un oggetto è nota come marshalling. Può ObjRef essere trasferito tramite un canale in un altro dominio applicazione (possibilmente in un altro processo o computer). Una volta nell'altro dominio applicazione, è necessario analizzare per ObjRef creare un proxy per l'oggetto, in genere connesso all'oggetto reale. Questa operazione è nota come unmarshaling.

Contiene ObjRef informazioni che descrivono la Type classe e dell'oggetto sottoposto a marshalling, un URI che identifica in modo univoco l'istanza dell'oggetto specifico e le informazioni correlate alla comunicazione su come raggiungere la suddivisione remota in cui si trova l'oggetto.

L'oggetto specificato Type viene usato dall'infrastruttura remota per limitare l'ambito della gerarchia dei tipi esposti. Ad esempio, se l'oggetto A deriva dall'oggetto B, che deriva dall'oggetto C e Marshal viene chiamato, il client può eseguire il cast del proxy tra C e B ma non a A.

Durante il marshalling, viene usato il contesto del thread corrente, non il contesto attivo al momento della creazione dell'oggetto.

Non è possibile associare un URI a un proxy per uno dei due motivi seguenti: l'URI è stato generato sul lato server per l'oggetto rappresentato o l'oggetto è noto, nel qual caso l'URI è noto. Per questo motivo, se il Obj parametro è un proxy, verrà generata un'eccezione. Per i proxy personalizzati questa restrizione è flessibile perché il proxy trasparente viene considerato come oggetto server.

Vedi anche

Si applica a