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 dane MarshalByRefObject na wystąpienie ObjRef klasy, które można serializować na potrzeby transmisji między domenami aplikacji a siecią.
Przeciążenia
Marshal(MarshalByRefObject) |
Pobiera element MarshalByRefObject, rejestruje go w infrastrukturze komunikacji wirtualnej i konwertuje ją na wystąpienie ObjRef klasy. |
Marshal(MarshalByRefObject, String) |
Konwertuje daną MarshalByRefObject wartość 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 identyfikatorem Type. |
Marshal(MarshalByRefObject)
Pobiera element MarshalByRefObject, rejestruje go 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ącej 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 komunikacji telefonicznej i kanałów.
Uwagi
A ObjRef jest serializowalnym reprezentacją obiektu używanego do transferu odwołania do obiektu przez granicę domeny aplikacji. Tworzenie obiektu ObjRef dla obiektu jest nazywane marshalingiem. Można ObjRef go przenieść za pośrednictwem kanału do innej domeny aplikacji (prawdopodobnie w innym procesie lub komputerze). Raz w innej domenie aplikacji należy przeanalizować, ObjRef aby utworzyć serwer proxy dla obiektu, zazwyczaj połączony z rzeczywistym obiektem. Ta operacja jest znana jako unmarshaling.
Element ObjRef zawiera informacje opisujące klasę Type i obiektu marshalowanego, identyfikator URI, który jednoznacznie identyfikuje określone wystąpienie obiektu oraz informacje dotyczące sposobu dotarcia do podsieci komunikacji, w której znajduje się obiekt.
Podczas marshalingu używany jest 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 SetObjectUriForMarshal metodę, 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 tym przypadku identyfikator URI jest znany. Z tego powodu, jeśli Obj
parametr jest serwerem proxy, zostanie zgłoszony wyjątek. W przypadku niestandardowych serwerów proxy to ograniczenie jest złagodzone, ponieważ przezroczysty serwer proxy jest traktowany jako obiekt serwera.
Zobacz też
Dotyczy
Marshal(MarshalByRefObject, String)
Konwertuje daną MarshalByRefObject wartość 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 należy zainicjować nowy ObjRefidentyfikator . Może to być null
.
Zwraca
Wystąpienie ObjRef klasy reprezentującej obiekt określony w parametrze Obj
.
Wyjątki
Obj
jest serwerem proxy obiektu, 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 komunikacji telefonicznej i kanałów.
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 jest serializowalnym reprezentacją obiektu używanego do transferu odwołania do obiektu przez granicę domeny aplikacji. Tworzenie obiektu ObjRef dla obiektu jest nazywane marshalingiem. Można ObjRef go przenieść za pośrednictwem kanału do innej domeny aplikacji (prawdopodobnie w innym procesie lub komputerze). Raz w innej domenie aplikacji należy przeanalizować, ObjRef aby utworzyć serwer proxy dla obiektu, zazwyczaj połączony z rzeczywistym obiektem. Ta operacja jest znana jako unmarshaling.
Element ObjRef zawiera informacje opisujące klasę Type i obiektu marshalowanego, identyfikator URI, który jednoznacznie identyfikuje określone wystąpienie obiektu oraz informacje dotyczące sposobu dotarcia do podsieci komunikacji, w której znajduje się obiekt.
Podczas marshalingu używany jest 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 tym przypadku identyfikator URI jest znany. Z tego powodu, jeśli Obj
parametr jest serwerem proxy, zostanie zgłoszony wyjątek. W przypadku niestandardowych serwerów proxy to ograniczenie jest 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 identyfikatorem 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
Parametry
Obiekt, który ma być konwertowany na obiekt ObjRef.
- ObjURI
- String
Identyfikator URI obiektu określonego w parametrze Obj
jest marshaled z. Może to być null
.
Zwraca
Wystąpienie ObjRef klasy reprezentującej 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 komunikacji telefonicznej i kanałów.
Uwagi
A ObjRef jest serializowalnym reprezentacją obiektu używanego do transferu odwołania do obiektu przez granicę domeny aplikacji. Tworzenie obiektu ObjRef dla obiektu jest nazywane marshalingiem. Można ObjRef go przenieść za pośrednictwem kanału do innej domeny aplikacji (prawdopodobnie w innym procesie lub komputerze). Raz w innej domenie aplikacji należy przeanalizować, ObjRef aby utworzyć serwer proxy dla obiektu, zazwyczaj połączony z rzeczywistym obiektem. Ta operacja jest znana jako unmarshaling.
Element ObjRef zawiera informacje opisujące klasę Type i obiektu marshalowanego, identyfikator URI, który jednoznacznie identyfikuje określone wystąpienie obiektu oraz informacje dotyczące sposobu dotarcia do podsieci komunikacji, w której znajduje się obiekt.
Określona Type jest używana przez infrastrukturę komunikacji sieciowej, 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 używany jest 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 tym przypadku identyfikator URI jest znany. Z tego powodu, jeśli Obj
parametr jest serwerem proxy, zostanie zgłoszony wyjątek. W przypadku niestandardowych serwerów proxy to ograniczenie jest złagodzone, ponieważ przezroczysty serwer proxy jest traktowany jako obiekt serwera.
Zobacz też
Dotyczy
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla