Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Переход от DCOM к SOAP






SOAP не поддерживает COM-событий через интерфейс IConnectionPoint, обратных вызовов от сервера к клиенту, передачи объектных ссылок, управления временем жизни серверных компонентов. Поэтому в общем случае DCOM-приложение не может быть легко преобразовано для использования протокола SOAP. Однако существует категория DCOM-приложений, архитектура которых организована таким образом, что клиенту передаются только данные в виде массивов или наборов записей ADO. Такие приложения могут легко переключиться на использование SOAP.

Проблемы, возникающие при переходе от DCOM к SOAP, можно рассмотреть на примере DCOM-приложения TView. Это приложение предназначено для просмотра информации о запущенных процессах на удаленном компьютере. Подробное описание TView можно найти в MSDN Magazine (декабрь 2000 г.) - https://msdn.microsoft.com/msdnmag/issues/1200/tview/default.aspx

TView использует Recordset из ADO для передачи данных клиенту, сервер представляет собой COM+-компонент. Интерфейс, реализуемый сервером:

Метод Описание
HRESULT ShutdownMachine([in] long nFlags) Выключить удаленный компьютер.
HRESULT GetProcesses([out, retval] _Recordset** ppRecordset) Возвращает список процессов.
HRESULT KillProcess([in] long processID) Завершает заданный процесс.
HRESULT GetModules([in] long processID, [out, retval] _Recordset** ppRecordset); Возвращает список модулей процесса.
HRESULT DebugProcess([in] long processID) Запускает процесс на отладку.
HRESULT GetMemory([in] long processID, [out, retval] _Recordset** ppRecordset); Возвращает информацию об используемой процессом памяти.
HRESULT GetHandles([in] long processID, [out, retval] _Recordset** ppRecordset) Список хэндлов процесса.
HRESULT GetEnvironment([in] long processID, [out, retval] _Recordset** ppRecordset) Список переменных окружения процесса.

Интерфейс сервера предполагает только передачу данных клиенту. Главная проблема, связанная с этим интерфейсом, заключается в том, что для передачи данных используется ADO Recordset, и нам потребуется mapper, рассмотренный в предыдущих разделе.


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.006 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал