КАТЕГОРИИ: Архитектура-(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 (для каждого объекта создается поток), краткое описание интерфейса (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].
Дата добавления: 2014-12-08; Просмотров: 545; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |