Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Технология применения объектов 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. Распределенные двухуровневые клиент‑серверные приложения
|
|||||||||||
Последнее изменение этой страницы: 2017-02-08; просмотров: 331; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.119.253.93 (0.006 с.) |