Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Технология применения объектов 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. Распределенные двухуровневые клиент‑серверные приложения

4.9.1. Технология COM/DCOMс использованием сервера транзакций MTS

В данной технологии используется сервер транзакций MTS, который вхо­дит в поставку Web‑сервера Personal Web Server. Он позволяет орга­ни­зо­вать надежную работу серверов COM и клиентов COM (п. 4.8), выпол­няющих­ся на различных компьютерах [2; 7].




Поделиться с друзьями:


Дата добавления: 2014-12-08; Просмотров: 545; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.009 сек.