Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Технология применения объектов 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 (для каж­дого объ­ек­та создается по­­­ток), краткое опи­сание ин­тер­­фей­са (Des­crip­tion). После на­жа­тия кноп­ки ОК фор­ми­руются ин­тер­фейс и опи­са­ние класса TMy­Object, и поя­в­ляется окно ре­дактора биб­лиотеки (рис.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 добавим модуль Pro­ject1_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 Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...