Технология применения объектов COM, DCOM
Объект COM (Component Object Model) представляет собой объект (EXE или DLL‑файл) со своими свойствами и методами, который распространяется и встраивается (подобно компоненту) в приложение. Объекты Distributed COM (DCOM) дополнительно обеспечивают распределенную обработку в сети.
При создании приложения COM используются следующие понятия.
Интерфейс COMописывает методы и свойства, доступные клиентам через механизм публикации (регистрации в операционной системе). Базовый интерфейс имеет имя Iunknown, и его характеристики наследуются интерфейсами‑потомками (имена интерфейсов начинаются с «I»). Каждый интерфейс имеет уникальный глобальный идентификатор длиной 16 байтов (GUID), а каждый интерфейс в объекте COM имеет идентификатор интерфейса IID на основе GUID. Благодаря наличию стандартных интерфейсов объект COM может быть реализован на любом языке.
Сервер COMпредставляет собой модуль (EXE или DLL) с программным кодом объектов COM. При обращении к серверу передается идентификатор GUID класса CLSID. Сервер создает специальный объект (фабрику классов ICLassFactory), который занимается созданием и загрузкой экземпляра нужного объекта COM.
Клиент COMявляется программой, обращающейся к серверу COM.
Пример создания объекта COM с методом умножения двух чисел
Выполним команду File/New/ActiveX/ActiveX Library. Добавим объект COM командой File/New/ActiveX/COM Object и настроим создаваемый объект (рис. 4.8.1): способ создания объекта Multiple instance (создание нескольких объектов), способ обращения к интерфейсу Apartment (для каждого объекта создается поток), краткое описание интерфейса (Description). После нажатия кнопки ОК формируются интерфейс и описание класса TMyObject, и появляется окно редактора библиотеки (рис.4.8.2).
Рис. 4.8.1. Окно настройки объекта COM
Окно редактора библиотеки можно вызвать и командой View/Type Library. Левая часть окна содержит дерево объектов, интерфейсов и методов. Выделим строку ImyObject, нажмем кнопку New Method и введем имя создаваемого метода GetMulti. Перейдем на страницу Parameters и кнопкой Add введем два параметра и укажем их имена и типы (рис. 4.8.2).
Рис. 4.8.2. Задание параметров метода GetMulti в интерфейсе объекта COM
Кнопкой New Property можно создать новые свойства объекта. Нажмем кнопку Refresh для обновления реализации.
Перейдем в модуль Unit1 и заполним тело метода кодом:
function TMyObject.GetMulti(X, Y: Single): Single; begin Result:=X*Y; end;
Перейдем в редактор библиотеки и нажмем кнопку Register. В результате выполняется компиляция, создается модуль Project_TLB.Pas, библиотека Project1.DLL и содержащийся в ней сервер COM регистрируется в системе. Закроем проект.
Для отладки объекта COM создадим новый проект (клиент COM) в другой папке (рис. 4.8.3).
Рис. 4.8.3. Окно проверки работы метода GetMulti объекта COM MyObject
Откорректируем модуль Unit1. В строку Uses добавим модуль Project1_TLB с описанием интерфейса. В подразделе Public раздела Type объявим глобальные переменные: UkazIUnknown, UkazIMyObject : IMyObject.
Добавим процедуру создания формы для установки связи с сервером:
procedure TForm1.FormCreate(Sender: TObject);
begin // создание подкласса Co с описанием общего интерфейса IUnknown
UkazIUnknown:=CoMyObject.Create; //указатель интерфейса IUnknown
// формирование указателя на интерфейс IMyObject
UkazIUnknown.QueryInterface(IMyObject,UkazIMyObject); end;
Составим процедуру нажатия кнопки Перемножить.
procedure TForm1.Button1Click(Sender: TObject);
begin Label1.Caption:= FloatToStr (UkazIMyObject.GetMulti (StrToFloat (Edit1.Text), StrToFloat(Edit2.Text))); end;
Выполним приложение.
4.9. Распределенные двухуровневые клиент‑серверные приложения
4.9.1. Технология COM/DCOMс использованием сервера транзакций MTS
В данной технологии используется сервер транзакций MTS, который входит в поставку Web‑сервера Personal Web Server. Он позволяет организовать надежную работу серверов COM и клиентов COM (п. 4.8), выполняющихся на различных компьютерах [2; 7].
Технология CORBA
В данной технологии вместо сервера транзакций MTS используется брокер CORBA (Common Object Request Broker Architecture, общая архитектура брокеров объектных запросов). Брокеры объектных запросов позволяют организовать работу серверов COM и клиентов COM (п. 4.8), выполняющихся на различных компьютерах под управлением различных операционных систем (Windows, Unix и др.) [2; 7].
Дата добавления: 2016-03-22; просмотров: 779;