RemotingServices.Marshal Metoda

Definicja

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

Obj
MarshalByRefObject

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

Obj
MarshalByRefObject

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

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

Obj
MarshalByRefObject

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.

RequestedType
Type

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

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