Технология применения объектов 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. Распределенные двухуровневые клиент‑серверные приложения
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|