RemotingServices.Unmarshal Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Wandelt einen angegebenen ObjRef In ein Proxyobjekt um.
Überlädt
| Name | Beschreibung |
|---|---|
| Unmarshal(ObjRef) |
Übernimmt ein ObjRef Proxyobjekt und erstellt daraus ein Proxyobjekt. |
| Unmarshal(ObjRef, Boolean) |
Verwendet ein ObjRef Proxyobjekt und erstellt es aus dem Objekt, wobei es auf den Typ auf dem Server optimiert wird. |
Unmarshal(ObjRef)
Übernimmt ein ObjRef Proxyobjekt und erstellt daraus ein Proxyobjekt.
public:
static System::Object ^ Unmarshal(System::Runtime::Remoting::ObjRef ^ objectRef);
public static object Unmarshal(System.Runtime.Remoting.ObjRef objectRef);
[System.Security.SecurityCritical]
public static object Unmarshal(System.Runtime.Remoting.ObjRef objectRef);
static member Unmarshal : System.Runtime.Remoting.ObjRef -> obj
[<System.Security.SecurityCritical>]
static member Unmarshal : System.Runtime.Remoting.ObjRef -> obj
Public Shared Function Unmarshal (objectRef As ObjRef) As Object
Parameter
Gibt zurück
Ein Proxy für das Objekt, das das angegebene ObjRef Objekt darstellt.
- Attribute
Ausnahmen
Die ObjRef im objectRef Parameter angegebene Instanz ist nicht wohlgeformt.
Mindestens einer der Anrufer im Callstack verfügt nicht über die Berechtigung zum Konfigurieren von Remotingtypen und Kanälen.
Beispiele
Im folgenden Codebeispiel wird veranschaulicht, wie ein Objekt entmarsiert wird.
ChannelServices::RegisterChannel( gcnew HttpChannel );
SampleService ^ objectSample = (SampleService^)( Activator::GetObject( SampleService::typeid,
"http://localhost:9000/MySampleService/SampleService.soap" ) );
// The GetManuallyMarshaledObject() method uses RemotingServices::Marshal()
// to create an ObjRef object for a SampleTwo object.
ObjRef^ objRefSampleTwo = objectSample->GetManuallyMarshaledObject();
SampleTwo ^ objectSampleTwo = (SampleTwo^)( RemotingServices::Unmarshal( objRefSampleTwo ) );
objectSampleTwo->PrintMessage( "ObjRef successfuly unmarshaled." );
ChannelServices.RegisterChannel(new HttpChannel());
SampleService objectSample = (SampleService)Activator.GetObject(typeof(SampleService),
"http://localhost:9000/MySampleService/SampleService.soap");
// The GetManuallyMarshaledObject() method uses RemotingServices.Marshal()
// to create an ObjRef object for a SampleTwo object.
ObjRef objRefSampleTwo = objectSample.GetManuallyMarshaledObject();
SampleTwo objectSampleTwo = (SampleTwo)RemotingServices.Unmarshal(objRefSampleTwo);
objectSampleTwo.PrintMessage("ObjRef successfuly unmarshaled.");
ChannelServices.RegisterChannel(New HttpChannel())
Dim objectSample As SampleService = CType(Activator.GetObject(GetType(SampleService), _
"http://localhost:9000/MySampleService/SampleService.soap"), SampleService)
' The GetManuallyMarshaledObject() method uses RemotingServices.Marshal()
' to create an ObjRef object for a SampleTwo object.
Dim objRefSampleTwo As ObjRef = objectSample.GetManuallyMarshaledObject()
Dim objectSampleTwo As SampleTwo = CType(RemotingServices.Unmarshal(objRefSampleTwo), SampleTwo)
objectSampleTwo.PrintMessage("I successfully unmarshaled your ObjRef. Thanks.")
Hinweise
Ein ObjRef ist eine serialisierbare Darstellung eines Objekts, das zum Übertragen eines Objektverweises über eine Anwendungsdomänengrenze hinweg verwendet wird. Das Erstellen eines ObjRef Objekts für ein Objekt wird als Marshalling bezeichnet. Die ObjRef können über einen Kanal in eine andere Anwendungsdomäne (möglicherweise auf einem anderen Prozess oder Computer) übertragen werden. Sobald sie sich in der anderen Anwendungsdomäne befinden, muss die ObjRef analysiert werden, um einen Proxy für das Objekt zu erstellen, der im Allgemeinen mit dem realen Objekt verbunden ist. Dieser Vorgang wird als Unmarshaling bezeichnet. Während des Entmarshalings wird die ObjRef Methode analysiert, um die Methodeninformationen des Remoteobjekts zu extrahieren, und sowohl der transparente Proxy als RealProxy auch die Objekte werden erstellt. Der Inhalt der analysierten Daten wird dem transparenten ObjRef Proxy hinzugefügt, bevor der transparente Proxy bei der Common Language Runtime registriert wird.
Eine ObjRef enthält Informationen, die die Type und Klasse des Objekts beschreiben, das gemarstet wird, einen URI, der die spezifische Objektinstanz eindeutig identifiziert, und Kommunikationsinformationen darüber, wie sie die Remotingunterteilung erreichen, in der sich das Objekt befindet.
Weitere Informationen
Gilt für:
Unmarshal(ObjRef, Boolean)
Verwendet ein ObjRef Proxyobjekt und erstellt es aus dem Objekt, wobei es auf den Typ auf dem Server optimiert wird.
public:
static System::Object ^ Unmarshal(System::Runtime::Remoting::ObjRef ^ objectRef, bool fRefine);
public static object Unmarshal(System.Runtime.Remoting.ObjRef objectRef, bool fRefine);
[System.Security.SecurityCritical]
public static object Unmarshal(System.Runtime.Remoting.ObjRef objectRef, bool fRefine);
static member Unmarshal : System.Runtime.Remoting.ObjRef * bool -> obj
[<System.Security.SecurityCritical>]
static member Unmarshal : System.Runtime.Remoting.ObjRef * bool -> obj
Public Shared Function Unmarshal (objectRef As ObjRef, fRefine As Boolean) As Object
Parameter
- fRefine
- Boolean
trueden Proxy auf den Servertyp zu verfeinern; andernfalls . false
Gibt zurück
Ein Proxy für das Objekt, das das angegebene ObjRef Objekt darstellt.
- Attribute
Ausnahmen
Die ObjRef im objectRef Parameter angegebene Instanz ist nicht wohlgeformt.
Mindestens einer der Anrufer im Callstack verfügt nicht über die Berechtigung zum Konfigurieren von Remotingtypen und Kanälen.
Hinweise
Ein ObjRef ist eine serialisierbare Darstellung eines Objekts, das zum Übertragen eines Objektverweises über eine Anwendungsdomänengrenze hinweg verwendet wird. Das Erstellen eines ObjRef Objekts für ein Objekt wird als Marshalling bezeichnet. Die ObjRef können über einen Kanal in eine andere Anwendungsdomäne (möglicherweise auf einem anderen Prozess oder Computer) übertragen werden. Sobald sie sich in der anderen Anwendungsdomäne befinden, muss die ObjRef analysiert werden, um einen Proxy für das Objekt zu erstellen, der im Allgemeinen mit dem realen Objekt verbunden ist. Dieser Vorgang wird als Unmarshaling bezeichnet. Während des Entmarshalings wird die ObjRef Methode analysiert, um die Methodeninformationen des Remoteobjekts zu extrahieren, und sowohl der transparente Proxy als RealProxy auch die Objekte werden erstellt. Der Inhalt der analysierten Daten wird dem transparenten ObjRef Proxy hinzugefügt, bevor der transparente Proxy bei der Common Language Runtime registriert wird.
Eine ObjRef enthält Informationen, die die Type und Klasse des Objekts beschreiben, das gemarstet wird, einen URI, der die spezifische Objektinstanz eindeutig identifiziert, und Kommunikationsinformationen darüber, wie sie die Remotingunterteilung erreichen, in der sich das Objekt befindet.
Beim ersten Erstellen ist der Proxy vom Typ MarshalByRefObject. Während Sie es in verschiedene Typen umwandeln, verfolgt die Remotinginfrastruktur den am häufigsten verwendeten Typ, um unnötiges Laden des Typs zu vermeiden.