RemotingServices.Marshal Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Konwertuje daną MarshalByRefObject wartość na wystąpienie ObjRef klasy, które można serializować na potrzeby transmisji między domenami aplikacji i za pośrednictwem sieci.
Przeciążenia
Marshal(MarshalByRefObject) |
Pobiera klasę MarshalByRefObject, rejestruje ją w infrastrukturze komunikacji wirtualnej i konwertuje ją na wystąpienie ObjRef klasy. |
Marshal(MarshalByRefObject, String) |
Konwertuje dane MarshalByRefObject na wystąpienie ObjRef klasy przy użyciu określonego identyfikatora URI. |
Marshal(MarshalByRefObject, String, Type) |
Pobiera element MarshalByRefObject i konwertuje go na wystąpienie ObjRef klasy z określonym identyfikatorem URI i podanym Typeidentyfikatorem . |
Marshal(MarshalByRefObject)
Pobiera klasę MarshalByRefObject, rejestruje ją w infrastrukturze komunikacji wirtualnej i konwertuje ją na wystąpienie ObjRef klasy.
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
Parametry
Do obiektu do skonwertowania.
Zwraca
Wystąpienie ObjRef klasy reprezentujące obiekt określony w parametrze Obj
.
Wyjątki
Parametr Obj
jest serwerem proxy obiektu.
Co najmniej jeden z wywołujących wyżej w stosie wywołań nie ma uprawnień do konfigurowania typów i kanałów komunikacji telefonicznej.
Uwagi
A ObjRef to serializowalna reprezentacja obiektu używanego do transferu odwołania do obiektu przez granicę domeny aplikacji. ObjRef Tworzenie obiektu dla obiektu jest nazywane marshalingiem. ObjRef Można go przenieść za pośrednictwem kanału do innej domeny aplikacji (prawdopodobnie w innym procesie lub komputerze). W innej domenie aplikacji należy przeanalizować element w ObjRef celu utworzenia serwera proxy dla obiektu, zazwyczaj połączonego z rzeczywistym obiektem. Ta operacja jest znana jako unmarshaling.
Obiekt ObjRef zawiera informacje opisujące klasę Type i obiektu, który jest marshalowany, identyfikator URI, który jednoznacznie identyfikuje określone wystąpienie obiektu, oraz informacje dotyczące sposobu uzyskiwania dostępu do podsieci komunikacji komunikacji, w której znajduje się obiekt.
Podczas marshalingu jest używany kontekst z bieżącego wątku, a nie kontekst, który był aktywny podczas tworzenia obiektu. Jeśli identyfikator URI nie został jawnie ustawiony przez metodę SetObjectUriForMarshal , jest on generowany automatycznie przez infrastrukturę tożsamości komunikacji wirtualnej.
Nie można skojarzyć identyfikatora URI z serwerem proxy z jednego z dwóch powodów: identyfikator URI został wygenerowany po stronie serwera dla obiektu, który reprezentuje, lub obiekt jest dobrze znany, w którym przypadku jest znany identyfikator URI. Z tego powodu, jeśli Obj
parametr jest serwerem proxy, zostanie zgłoszony wyjątek. W przypadku niestandardowych serwerów proxy to ograniczenie zostało złagodzone, ponieważ przezroczysty serwer proxy jest traktowany jako obiekt serwera.
Zobacz też
Dotyczy
Marshal(MarshalByRefObject, String)
Konwertuje dane MarshalByRefObject na wystąpienie ObjRef klasy przy użyciu określonego identyfikatora URI.
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
Parametry
Do obiektu do skonwertowania.
- URI
- String
Określony identyfikator URI, za pomocą którego ma być inicjowany nowy ObjRefelement . Może to być null
.
Zwraca
Wystąpienie ObjRef klasy reprezentujące obiekt określony w parametrze Obj
.
Wyjątki
Obj
jest serwerem proxy obiektów, a URI
parametr nie null
jest .
Co najmniej jeden z wywołujących wyżej w stosie wywołań nie ma uprawnień do konfigurowania typów i kanałów komunikacji telefonicznej.
Przykłady
W poniższym przykładzie kodu pokazano, jak używać bieżącej Marshal metody do marshalingu określonego obiektu.
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()
Uwagi
A ObjRef to serializowalna reprezentacja obiektu używanego do transferu odwołania do obiektu przez granicę domeny aplikacji. ObjRef Tworzenie obiektu dla obiektu jest nazywane marshalingiem. ObjRef Można go przenieść za pośrednictwem kanału do innej domeny aplikacji (prawdopodobnie w innym procesie lub komputerze). W innej domenie aplikacji należy przeanalizować element w ObjRef celu utworzenia serwera proxy dla obiektu, zazwyczaj połączonego z rzeczywistym obiektem. Ta operacja jest znana jako unmarshaling.
Obiekt ObjRef zawiera informacje opisujące klasę Type i obiektu, który jest marshalowany, identyfikator URI, który jednoznacznie identyfikuje określone wystąpienie obiektu, oraz informacje dotyczące sposobu uzyskiwania dostępu do podsieci komunikacji komunikacji, w której znajduje się obiekt.
Podczas marshalingu jest używany kontekst z bieżącego wątku, a nie kontekst, który był aktywny podczas tworzenia obiektu.
Nie można skojarzyć identyfikatora URI z serwerem proxy z jednego z dwóch powodów: identyfikator URI został wygenerowany po stronie serwera dla obiektu, który reprezentuje, lub obiekt jest dobrze znany, w którym przypadku jest znany identyfikator URI. Z tego powodu, jeśli Obj
parametr jest serwerem proxy, zostanie zgłoszony wyjątek. W przypadku niestandardowych serwerów proxy to ograniczenie zostało złagodzone, ponieważ przezroczysty serwer proxy jest traktowany jako obiekt serwera.
Zobacz też
Dotyczy
Marshal(MarshalByRefObject, String, Type)
Pobiera element MarshalByRefObject i konwertuje go na wystąpienie ObjRef klasy z określonym identyfikatorem URI i podanym Typeidentyfikatorem .
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
Parametry
Obiekt, który ma być konwertowany na obiekt ObjRef.
- ObjURI
- String
Identyfikator URI obiektu określony w parametrze Obj
jest marshaled z. Może to być null
.
Zwraca
Wystąpienie ObjRef klasy reprezentujące obiekt określony w parametrze Obj
.
Wyjątki
Obj
jest serwerem proxy obiektu zdalnego, a ObjUri
parametr nie null
jest .
Co najmniej jeden z wywołujących wyżej w stosie wywołań nie ma uprawnień do konfigurowania typów i kanałów komunikacji telefonicznej.
Uwagi
A ObjRef to serializowalna reprezentacja obiektu używanego do transferu odwołania do obiektu przez granicę domeny aplikacji. ObjRef Tworzenie obiektu dla obiektu jest nazywane marshalingiem. ObjRef Można go przenieść za pośrednictwem kanału do innej domeny aplikacji (prawdopodobnie w innym procesie lub komputerze). W innej domenie aplikacji należy przeanalizować element w ObjRef celu utworzenia serwera proxy dla obiektu, zazwyczaj połączonego z rzeczywistym obiektem. Ta operacja jest znana jako unmarshaling.
Obiekt ObjRef zawiera informacje opisujące klasę Type i obiektu, który jest marshalowany, identyfikator URI, który jednoznacznie identyfikuje określone wystąpienie obiektu, oraz informacje dotyczące sposobu uzyskiwania dostępu do podsieci komunikacji komunikacji, w której znajduje się obiekt.
Określona Type jest używana przez infrastrukturę komunikacji zdalniej, aby ograniczyć zakres uwidocznionej hierarchii typów. Jeśli na przykład obiekt A pochodzi z obiektu B, który pochodzi z obiektu C i Marshal jest wywoływany, klient może rzutować serwer proxy między C i B, ale nie do A.
Podczas marshalingu jest używany kontekst z bieżącego wątku, a nie kontekst, który był aktywny podczas tworzenia obiektu.
Nie można skojarzyć identyfikatora URI z serwerem proxy z jednego z dwóch powodów: identyfikator URI został wygenerowany po stronie serwera dla obiektu, który reprezentuje, lub obiekt jest dobrze znany, w którym przypadku jest znany identyfikator URI. Z tego powodu, jeśli Obj
parametr jest serwerem proxy, zostanie zgłoszony wyjątek. W przypadku niestandardowych serwerów proxy to ograniczenie zostało złagodzone, ponieważ przezroczysty serwer proxy jest traktowany jako obiekt serwera.