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
Параметры
Объект для преобразования.
Возвращаемое значение
Экземпляр 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
Параметры
Объект для преобразования.
- 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
Параметры
Объект, преобразуемый в объект ObjRef.
- ObjURI
- String
Универсальный код ресурса (URI), заданный в параметре Obj , маршалируется с помощью. Может иметь значение 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 параметр является прокси-сервером, создается исключение. Для пользовательских прокси-серверов это ограничение смягчается, так как прозрачный прокси-сервер рассматривается как объект сервера.