RemotingServices.Marshal Метод

Определение

Преобразует заданный MarshalByRefObject в экземпляр ObjRef класса, который можно сериализовать для передачи между доменами приложений и через сеть.

Перегрузки

Имя Описание
Marshal(MarshalByRefObject)

MarshalByRefObjectПринимает объект, регистрирует его в инфраструктуре удаленного ObjRef взаимодействия и преобразует его в экземпляр класса.

Marshal(MarshalByRefObject, String)

Преобразует заданный MarshalByRefObject в экземпляр ObjRef класса с указанным универсальным кодом ресурса (URI).

Marshal(MarshalByRefObject, String, Type)

MarshalByRefObject Принимает и преобразует его в экземпляр ObjRef класса с указанным универсальным кодом ресурса (URI) и предоставленнымType.

Marshal(MarshalByRefObject)

MarshalByRefObjectПринимает объект, регистрирует его в инфраструктуре удаленного ObjRef взаимодействия и преобразует его в экземпляр класса.

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

Параметры

Obj
MarshalByRefObject

Объект для преобразования.

Возвращаемое значение

Экземпляр ObjRef класса, представляющего объект, указанный в параметре Obj .

Исключения

Параметр Obj является прокси-сервером объекта.

По крайней мере один из вызывающих абонентов в calltack не имеет разрешения на настройку типов и каналов удаленного взаимодействия.

Комментарии

A ObjRef — это сериализуемое представление объекта, используемого для передачи ссылки на объект через границу домена приложения. ObjRef Создание объекта называется маршалингом. Его ObjRef можно передать через канал в другой домен приложения (возможно, на другом процессе или компьютере). После того как в другом домене ObjRef приложения необходимо проанализировать, чтобы создать прокси-сервер для объекта, обычно подключенного к реальному объекту. Эта операция называется немаршлингом.

Содержит ObjRef сведения, описывающие Type и класс маршалинг объекта, универсальный код ресурса (URI), однозначно определяющий конкретный экземпляр объекта, а также сведения о том, как достичь подразделения удаленного взаимодействия, где находится объект.

Во время маршалинга используется контекст из текущего потока, а не контекст, активный при создании объекта. Если URI не был явно задан SetObjectUriForMarshal методом, он автоматически создается инфраструктурой удостоверений удаленного взаимодействия.

URI нельзя связать с прокси-сервером по одной из двух причин: URI был создан на стороне сервера для объекта, который он представляет, или объект хорошо известен, в этом случае URI известен. По этой причине, если Obj параметр является прокси-сервером, создается исключение. Для пользовательских прокси-серверов это ограничение смягчается, так как прозрачный прокси-сервер рассматривается как объект сервера.

См. также раздел

Применяется к

Marshal(MarshalByRefObject, String)

Преобразует заданный MarshalByRefObject в экземпляр ObjRef класса с указанным универсальным кодом ресурса (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

Параметры

Obj
MarshalByRefObject

Объект для преобразования.

URI
String

Указанный универсальный код ресурса (URI), с помощью которого инициализировать новый ObjRefкод ресурса (URI). Может иметь значение null.

Возвращаемое значение

Экземпляр ObjRef класса, представляющего объект, указанный в параметре Obj .

Исключения

Obj является прокси-сервером объекта, а URI параметр не nullявляется.

По крайней мере один из вызывающих абонентов в calltack не имеет разрешения на настройку типов и каналов удаленного взаимодействия.

Примеры

В следующем примере кода показано, как использовать текущий Marshal метод для маршалирования указанного объекта.

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()

Комментарии

A ObjRef — это сериализуемое представление объекта, используемого для передачи ссылки на объект через границу домена приложения. ObjRef Создание объекта называется маршалингом. Его ObjRef можно передать через канал в другой домен приложения (возможно, на другом процессе или компьютере). После того как в другом домене ObjRef приложения необходимо проанализировать, чтобы создать прокси-сервер для объекта, обычно подключенного к реальному объекту. Эта операция называется немаршлингом.

Содержит ObjRef сведения, описывающие Type и класс маршалинг объекта, универсальный код ресурса (URI), однозначно определяющий конкретный экземпляр объекта, а также сведения о том, как достичь подразделения удаленного взаимодействия, где находится объект.

Во время маршалинга используется контекст из текущего потока, а не контекст, активный при создании объекта.

URI нельзя связать с прокси-сервером по одной из двух причин: URI был создан на стороне сервера для объекта, который он представляет, или объект хорошо известен, в этом случае URI известен. По этой причине, если Obj параметр является прокси-сервером, создается исключение. Для пользовательских прокси-серверов это ограничение смягчается, так как прозрачный прокси-сервер рассматривается как объект сервера.

См. также раздел

Применяется к

Marshal(MarshalByRefObject, String, Type)

MarshalByRefObject Принимает и преобразует его в экземпляр ObjRef класса с указанным универсальным кодом ресурса (URI) и предоставленным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

Параметры

Obj
MarshalByRefObject

Объект, преобразуемый в объект ObjRef.

ObjURI
String

Универсальный код ресурса (URI), заданный в параметре Obj , маршалируется с помощью. Может иметь значение null.

RequestedType
Type

Маршалируется TypeObj как. Может иметь значение null.

Возвращаемое значение

Экземпляр ObjRef класса, представляющего объект, указанный в параметре Obj .

Исключения

Obj является прокси-сервером удаленного объекта, а ObjURI параметр не nullявляется.

По крайней мере один из вызывающих абонентов в calltack не имеет разрешения на настройку типов и каналов удаленного взаимодействия.

Комментарии

A ObjRef — это сериализуемое представление объекта, используемого для передачи ссылки на объект через границу домена приложения. ObjRef Создание объекта называется маршалингом. Его ObjRef можно передать через канал в другой домен приложения (возможно, на другом процессе или компьютере). После того как в другом домене ObjRef приложения необходимо проанализировать, чтобы создать прокси-сервер для объекта, обычно подключенного к реальному объекту. Эта операция называется немаршлингом.

Содержит ObjRef сведения, описывающие Type и класс маршалинг объекта, универсальный код ресурса (URI), однозначно определяющий конкретный экземпляр объекта, а также сведения о том, как достичь подразделения удаленного взаимодействия, где находится объект.

Указанный параметр Type используется инфраструктурой удаленного взаимодействия для ограничения области предоставленной иерархии типов. Например, если объект A является производным от объекта B, который является производным от объекта C и Marshal вызывается, клиент может привести прокси-сервер между C и B, но не к A.

Во время маршалинга используется контекст из текущего потока, а не контекст, активный при создании объекта.

URI нельзя связать с прокси-сервером по одной из двух причин: URI был создан на стороне сервера для объекта, который он представляет, или объект хорошо известен, в этом случае URI известен. По этой причине, если Obj параметр является прокси-сервером, создается исключение. Для пользовательских прокси-серверов это ограничение смягчается, так как прозрачный прокси-сервер рассматривается как объект сервера.

См. также раздел

Применяется к