Udostępnij za pośrednictwem


RemotingServices.Marshal Metoda

Definicja

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

Obj
MarshalByRefObject

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

Obj
MarshalByRefObject

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 nulljest .

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

Obj
MarshalByRefObject

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.

RequestedType
Type

Element TypeObj jest marshaled jako. 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 nulljest .

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.

Zobacz też

Dotyczy