Служба запросов предназначена для поиска объектов, которые соответствуют заданным критериям, записываемым на расширенном последовательном языке запросов SQL (Sequential Query Language) либо на объектном языке запросов OQL (Object Query Language).
В ряде случаев существуют проблемы совместимости, возникающие вследствие того, что построенные на основе спецификации CORBA распределенные системы разных производителей имеют собственные способы реализации взаимодействия между клиентами и серверами объектов (например, в некоторых системах клиент может обратиться к объекту на сервере только тогда, когда клиент и сервер используют один и тот же брокер ORB). Эти проблемы решаются путем введения стандартизованного протокола обмена между различными брокерами ORB в комбинации с универсальным способом создания ссылок на объекты. Такой протокол в CORBA известен как обобщенный протокол обмена между ORB (General Inter-ORB Protocol – GIOP). Конкретная реализация GIOP должна выполняться поверх существующего транспортного протокола. Реализация GIOP поверх транспортного протокола TCP (Transmission Control Protocol – протокол управления передачей) называется Интернет-протоколом обмена между ORB (Internet Inter-ORB Protocol – IIOP). Протокол GIOP (включая IIOP и его другие реализации) поддерживает несколько типов сообщений, в том числе два наиболее важных – Request и Replay, которые вместе образуют часть реализации удаленных обращений к методам.
Компании, разрабатывающие ПО распределенных систем, используют спецификацию CORBA для создания собственных продуктов, которые могут взаимодействовать друг с другом по протоколу POP (Post Office Protocol – протокол почтового офиса). Спектр поддерживаемых служб для разных систем варьируется. К настоящему времени существуют десятки реализаций промежуточного ПО на основе CORBA.
Компанией Microsoft разработана компонентная объектная модель COM (Component Object Model) и ее версия DCOM (Distributed COM) для распределенных приложений. Модель DCOM (так же, как и CORBA) распространяет принципы удаленного вызова процедур на объектные распределенные приложения и обеспечивает прозрачность реализации и физического размещения серверного объекта для клиентской части приложения. Эта модель поддерживает возможность взаимодействия объектов, созданных на различных объектно-ориентированных языках и скрывает от приложения детали сетевого взаимодействия. В DCOM взаимодействие удаленных объектов базируется на спецификации DCE RPC. Ключевым компонентом DCE RPC является язык описания интерфейсов IDL, на уровне которого поддерживаются «контрактные» отношения между клиентом и сервером и обеспечивается независимость от конкретного объектно-ориентированного языка программирования. В модели DCOM также может использоваться язык IDL собственной разработки Microsoft MIDL (Microsoft IDL), который, однако, играет вспомогательную роль и используется в основном для удобства описания объектов. Как и в CORBA, объектная модель в DCOM построена на реализации интерфейсов. Один объект может реализовывать одновременно несколько интерфейсов. Однако (в отличие от CORBA) в DCOM имеются только бинарные интерфейсы. Бинарный интерфейс представляет собой таблицу с указателями на реализации методов, которые являются частью интерфейса. Достоинство бинарных интерфейсов состоит в том, что они не зависят от языка программирования. В отличие от модели CORBA, в которой для поддержки нового языка программирования необходимо каждый раз отображать описания IDL на конструкции этого языка, в DCOM подобная стандартизация не требуется.
DCOM и CORBA, в отличие от процедурного RPC, дают возможность динамического связывания удаленных объектов (клиент может обратиться к серверу-объекту во время выполнения, не имея информации об этом объекте на этапе компиляции). Информацию о доступных объектах сервера на этапе выполнения клиентская часть программы получает из специального хранилища метаданных об объектах – репозитария интерфейсов (Interface Repositary) в модели CORBA и библиотеки типов (Туре Library) в модели DCOM. Эта возможность очень ценна для больших распределенных приложений, поскольку позволяет менять и расширять функциональность серверов, не внося существенных изменений в код клиентских компонентов программы, которых в корпоративной системе может быть множество. Например, в банковском приложении основная бизнес-логика поддерживается сервером в центральном офисе, а клиентские системы разбросаны по филиалам. Однако механизм динамического вызова CORBA относительно более сложен по реализации, чем в DCOM.
Базовая реализация DСОМ интегрирована в Microsoft Windows. Для того, чтобы действительно активизировать объект, то есть гарантировать, что он создан и помещен в процесс, из которого будет в состоянии принимать обращения к методам, DСОМ использует реестр Windows в комбинации со специальным процессом – менеджером управления службами SCM (Service Control Manager). Кроме того реестр используется для записи отображения идентификаторов класса на локальные имена файлов, содержащих реализации классов. Чтобы создать объект, процесс сначала должен убедиться, что соответствующий объект класса загружен.
Если объект выполняется на удаленном хосте, то клиент контактирует с менеджером управления службами этого хоста, который представляет собой процесс, ответственный за активизацию объектов (подобно хранилищу реализаций в CORBA). SCM этого удаленного хоста просматривает свой локальный реестр в поисках файла, ассоциированного с отображением идентификаторов класса, после чего запускает процесс, содержащий этот объект. Сервер выполняет маршалинг указателя на интерфейс и возвращает его клиенту, который выполняет демаршалинг указателя и передает его заместителю.
Принципиальная схема архитектура системы DCOM представлена на рис. 2.4.
Процесс клиента получает доступ к SCM и реестру, что помогает ему найти удаленный объект и выполнить привязку к нему. Клиенту предлагается заместитель, реализующий интерфейсы этого объекта. Сервер объектов содержит каркас для маршалинга и демаршалинга обращений, которые он будет передавать реальному объекту. Связь между клиентом и сервером обычно реализуется путем вызовов RPC, но в определенных случаях могут быть использованы и другие способы связи.
Компания Microsoft внедряет DCOM и в другие операционные системы, например, Unix и OpenVMS. Однако CORBA изначально нацелена на кросс-платформенную поддержку (принцип «написано однажды, выполняется везде») и реализована для всех разновидностей Unix, всех версий Windows и многих других важных ОС, что имеет очевидное преимущество перед объектной моделью Microsoft. С другой стороны, Microsoft стремится интегрировать DCOM со средствами разработки приложений, чтобы максимально упростить создание клиент-серверных систем на базе этой технологии. Большинство популярных сред разработки, в том числе PowerBuilder, VisualC++, VisualBasic и Delphi имеют встроенную поддержку DCOM.
Do'stlaringiz bilan baham: |