Объектные методы распределенной обработки. Понятие
технологии СОМ: модель, интерфейс, сервер, клиент.
Объектные методы распределенной обработки
Объектно-ориентированный подход способствует значительному усовершенствованию механизмов организации распределенной обработки информации. Важнейшим свойством объектов (object) является то, что они позволяют скрыть свое внутреннее строение посредством наличия строго определенного интерфейса. Поэтому при замене или изменении объектов интерфейс может оставаться неизмененным. Вследствие этого возможно относительно легкое распространение и применение принципов RPC к удаленным объектам.
Объекты
инкапсулируют данные, называемые состоянием (state), и операции над этими
данными, называемые методами (method). Для доступа или манипулирования
состоянием объекта нужно использовать методы, обращение к которым
осуществляется через интерфейсы. Объект может реализовывать множество
интерфейсов, а для данного описания интерфейса может существовать несколько
объектов, предоставляющих его реализацию.
Для распределенных
систем разделение на интерфейсы и объекты позволяет помещать интерфейсы на одну
вычислительную машину, а сами объекты - на другую.
При выполнении клиентом "привязки" к распределенному объекту в адресное пространство клиента загружается реализация интерфейса объекта, называемая заместителем (proxy). Заместитель клиента аналогичен клиентскому переходнику в механизме RPC. Он выполняет маршалинг параметров в сообщения при обращении к методам, демаршалинг данных из ответных сообщений с результатами обращения к методам, передачу результатов клиенту. Сами же объекты находятся на сервере и предоставляют необходимые клиентской системе интерфейсы. Входящий запрос на обращение к методу сначала попадают в так называемый серверный каркас, или скелетон (skeleton), аналогичный серверному переходнику в RPC. Cерверный каркас преобразует входящий запрос в обращение к методу через интерфейс объекта, находящегося на сервере. Каркас также отвечает за маршалинг параметров в ответных сообщениях и их пересылку заместителю клиента. Если объект физически распределен по нескольким вычислительным машинам, то это скрывается от клиентов за интерфейсами объектов.
Понятие технологии СОМ: модель, интерфейс, сервер, клиент.
COM (Component Object Model) - это метод разработки программных компонентов, небольших двоичных исполняемых файлов, которые предоставляют необходимые сервисы приложениям, операционным системам и другим компонентам. Другими словами, COM определяет стандартный механизм, с помощью которого одна часть программного обеспечения предоставляет свои сервисы другой независимо от способа их реализации.
Интерфейс СОМ предназначен для связи между компонентами и
включает в себя набор функций, которые реализуются компонентами и используются
клиентами. Свойства СОМ-интерфейса такие: у каждого интерфейса имеется два
идентификатора (пользовательский идентификатор и глобальный уникальный
идентификатор); интерфейсы после своего опубликования не могут быть изменены;
добавление новой функциональности требует определения нового интерфейса; для
интерфейса определен стандартный двоичный формат; каждый интерфейс наследует
стандартный интерфейс IUnknown; СОМ-объект может описывать свои интерфейсы на
любом языке.
Серверы объектов СОМ
Каждый объект СОМ реализован внутри
некоторого сервера, содержащего код, который реализует методы интерфейсов
объекта, а также контролирует данные объекта, пока тот активен. Один сервер
может поддерживать более одного объекта некоторого класса. Рассмотрим три
основные типа серверов.
Сервер "в процессе": объекты
реализуются в динамически подключаемой библиотеке, и, таким образом,
исполняются в том же процессе, что и клиент. Локальный сервер: объекты
реализованы в отдельном процессе, исполняющемся на той же машине, что и клиент.
Удаленный сервер: объекты реализованы в DLL либо в отдельном процессе, которые
расположены на удаленном по отношению к клиенту компьютере. Возможность
создания таких серверов поддерживает распределенная СОМ (DCOM).
С точки зрения
клиента, объекты,
реализованные любой из трех разновидностей серверов, выглядят одинаково; доступ
к методам объектов клиент по-прежнему осуществляет через указатели интерфейсов.
При необходимости он может проводить различие между разными типами серверов, но
это не обязательно. Запуск объекта, получение указателей на его интерфейсы,
вызов их методов и освобождение указателей выполняются клиентом одинаково
независимо от того, каким сервером реализован объект: "в процессе",
локальным или удаленным.