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 usato per trasferire un riferimento a un oggetto attraverso un limite di dominio dell'applicazione. La creazione di un ObjRef oggetto è nota come marshalling. L'oggetto ObjRef può essere trasferito tramite un canale in un altro dominio applicazione (eventualmente in un altro processo o computer). Una volta nell'altro dominio dell'applicazione, è ObjRef necessario analizzare per 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 in fase di marshalling, un URI che identifica in modo univoco l'istanza di oggetto specifica e le informazioni correlate alla comunicazione su come raggiungere la suddivisione remota in cui si trova l'oggetto.

Durante il marshalling, il contesto del thread corrente viene usato, non il contesto attivo quando è stato creato l'oggetto. Se un URI non è stato impostato in modo esplicito dal metodo, viene generato automaticamente dall'infrastruttura SetObjectUriForMarshal di identità remota.

Non è possibile associare un URI a un proxy per uno dei due motivi: 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 parametro è un proxy, verrà generata un'eccezione Obj . Per i proxy personalizzati questa restrizione viene rilassata 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 usare il metodo corrente Marshal per eseguire 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 usato per trasferire un riferimento a un oggetto attraverso un limite di dominio dell'applicazione. La creazione di un ObjRef oggetto è nota come marshalling. L'oggetto ObjRef può essere trasferito tramite un canale in un altro dominio applicazione (eventualmente in un altro processo o computer). Una volta nell'altro dominio dell'applicazione, è ObjRef necessario analizzare per 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 in fase di marshalling, un URI che identifica in modo univoco l'istanza di oggetto specifica e le informazioni correlate alla comunicazione su come raggiungere la suddivisione remota in cui si trova l'oggetto.

Durante il marshalling, il contesto del thread corrente viene usato, non il contesto attivo quando è stato creato l'oggetto.

Non è possibile associare un URI a un proxy per uno dei due motivi: 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 parametro è un proxy, verrà generata un'eccezione Obj . Per i proxy personalizzati questa restrizione viene rilassata 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 usato per trasferire un riferimento a un oggetto attraverso un limite di dominio dell'applicazione. La creazione di un ObjRef oggetto è nota come marshalling. L'oggetto ObjRef può essere trasferito tramite un canale in un altro dominio applicazione (eventualmente in un altro processo o computer). Una volta nell'altro dominio dell'applicazione, è ObjRef necessario analizzare per 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 in fase di marshalling, un URI che identifica in modo univoco l'istanza di oggetto specifica 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 di comunicazione 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 in A.

Durante il marshalling, il contesto del thread corrente viene usato, non il contesto attivo quando è stato creato l'oggetto.

Non è possibile associare un URI a un proxy per uno dei due motivi: 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 parametro è un proxy, verrà generata un'eccezione Obj . Per i proxy personalizzati questa restrizione viene rilassata perché il proxy trasparente viene considerato come oggetto server.

Vedi anche

Si applica a