Технології програмування доц Кобилін О А ХНУРЕ Кафедра

Скачать презентацию Технології програмування доц Кобилін О А ХНУРЕ Кафедра Скачать презентацию Технології програмування доц Кобилін О А ХНУРЕ Кафедра

Лекция 3 Технология програмирования COM.ppt

  • Количество слайдов: 20

Технології програмування доц. Кобилін О. А. ХНУРЕ, Кафедра Інформатики informatika@kture. kharkov. ua 1 Технології програмування доц. Кобилін О. А. ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 1

Питання n n n n Інтерфейс GUID (Globally Unique Identifier) Автоматичне керування пам'яттю та Питання n n n n Інтерфейс GUID (Globally Unique Identifier) Автоматичне керування пам'яттю та підрахунок посилань Інтерфейс l. Unknown Об'єкт COM Сервер COM Бібліотека СОМ ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 2

Інтерфейс n n Оголошення інтерфейсу містить у собі опис методів і їхніх параметрів, але Інтерфейс n n Оголошення інтерфейсу містить у собі опис методів і їхніх параметрів, але не включає реалізації методів. Крім цього, в оголошенні вказуватися ідентифікатор GUID інтерфейсу - унікальне 16 -байтовое число, сгенерироване за спеціальними правилами, що гарантує його статистичну унікальність. Інтерфейси можуть успадковуватися. ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 3

Інтерфейс n n Інтерфейс — це не клас. Клас може виступати в ролі реалізації Інтерфейс n n Інтерфейс — це не клас. Клас може виступати в ролі реалізації інтерфейсу, але клас містить код методів конкретною мовою програмування, а інтерфейс - немає. Інтерфейс строго типізований. Як клієнт, так і реалізація інтерфейсу повинні використати саме ті методи і їхні параметри, які зазначені в описі інтерфейсу. ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 4

Інтерфейс n Реалізація інтерфейсу - це безпосередньо код, що реалізує методи інтерфейсу. При цьому, Інтерфейс n Реалізація інтерфейсу - це безпосередньо код, що реалізує методи інтерфейсу. При цьому, за декількома виключеннями, не накладається ніяких обмежень на те, яким образом буде виглядати реалізація. Фізично реалізація являє собою масив покажчиків на методи, адресу якого й використається в клієнті для доступу до Сома-об'єкта. Будьяка реалізація інтерфейсу містить метод Querylnterface, що дозволяє запросити посилання на конкретний інтерфейс із числа реалізованих. ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 5

GUID (Globally Unique Identifier) глобально унікальний ідентифікатор n n Для ідентифікації інтерфейсу використається структура GUID (Globally Unique Identifier) глобально унікальний ідентифікатор n n Для ідентифікації інтерфейсу використається структура типу GUID (Globally Unique Identifier — глобально унікальний ідентифікатор), що має розмір 16 байт (128 біт). Єдиний тип даних, що визначений для інтерфейсу — це GUID. Кожний Сом-інтерфейс містить власний унікальний ідентифікатор GUID. ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 6

функція Co. Create. Guid begin Co. Create. Guid(Guid); Memo 1. Lines. Add(Guid. To. String(Guid)); функція Co. Create. Guid begin Co. Create. Guid(Guid); Memo 1. Lines. Add(Guid. To. String(Guid)); end; ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 7

Структура TGUID визначена в Delphi: TGUID = record D 1: Long. Word; D 2: Структура TGUID визначена в Delphi: TGUID = record D 1: Long. Word; D 2: Word; D 3: Word; D 4: array[0. . 7] of Byte; end; IFormatted. Number = interface ['{2 DE 825 C 1 -EADF-11 D 2 -B 39 F-0040 F 67455 FE}'] function Formatted. String: string; end; My. Guid : = ['{2 DE 825 C 1 -EADP-11 D 2 -B 39 F-0040 F 67455 FE}'] My. Guid *TGUID =[Dl: $2 DE 825 C 1; D 2: $EADF; D 3: $11 D 2; D 4: ($B 3, $9 F, $00, $40, $F 6, $74, $55, $FE}] ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 8

Автоматичне керування пам'яттю та підрахунок посилань n СОМ реалізує автоматичне керування пам'яттю для СOM-об'єктів. Автоматичне керування пам'яттю та підрахунок посилань n СОМ реалізує автоматичне керування пам'яттю для СOM-об'єктів. Воно засновано на ідеї підрахунку посилань на об'єкт. Будь-який клієнт, якому потрібно використати СOM-об'єкт після його створення, повинен викликати заздалегідь визначений метод, що збільшує внутрішній лічильник посилань на об'єкт на одиницю. По завершенні використання об'єкта клієнт викликає інший його метод, що зменшує значення того ж лічильника. При досягненні лічильником посилань нульового значення СOM-об'єкт автоматично видаляє себе з пам'яті. ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 9

Інтерфейс l. Unknown Базовим інтерфейсом у моделі СОМ є інтерфейс IUnknown. type IUnknown = Інтерфейс l. Unknown Базовим інтерфейсом у моделі СОМ є інтерфейс IUnknown. type IUnknown = interface ['{0000 -0000 -С 000 -0000046}‘] function Query. Interface(const IID: TGUID; out Obj ): HResult; stdcall: function _Add. Ref: Integer: stdcall: function _Release: Integer: stdcall; end; ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 10

Інтерфейс l. Unknown n n На рівні інтерфейсу IUnknown, що є предком для всіх Інтерфейс l. Unknown n n На рівні інтерфейсу IUnknown, що є предком для всіх інтерфейсів, уже реалізоване коректне рішення проблеми резервування й звільнення ресурсів операційної системи. Для рішення проблем в інтерфейсах при їхній реалізації здійснюється підрахунок посилань. Спеціально для підрахунку посилань у всіх інтерфейсах є методи Add. Ref та Release. ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 11

Інтерфейс l. Unknown n Інтерфейс IUnknown містить також метод Query. Interface, що використається для Інтерфейс l. Unknown n Інтерфейс IUnknown містить також метод Query. Interface, що використається для одержання клієнтом посилань на інтерфейс. function TMy. C 1 ass. Factory. Query. Interface(const iid: TIID; var Р): HResult; begin if Is. Equal. IID(iid, IID_CIass. Factory) or Is. Equal. IID(iid, IID_Unknown) then begin Pointer(P) : = Self; Add. Ref: Result : = S_OK; end else begin Pointer(P) : = nil; Result : = E_NOINTERFACE; end: ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 12

Сервер, об'єкт і його інтерфейси Интерфейс IUnknown Интерфейс ILinear Интерфейс IAggregate Объект СОМ Сервер Сервер, об'єкт і його інтерфейси Интерфейс IUnknown Интерфейс ILinear Интерфейс IAggregate Объект СОМ Сервер ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 13

Схема взаємодії клієнта й об'єкта СОМ Указатель на интерфейс IAggregatte объекта СОМ Клиент Интерфейс Схема взаємодії клієнта й об'єкта СОМ Указатель на интерфейс IAggregatte объекта СОМ Клиент Интерфейс IUnknown Объект СОМ Интерфейс IAggregate Сервер ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 14

Об'єкт COM n Центральним елементом СОМ є об'єкт. Додатки, що підтримують СОМ, мають у Об'єкт COM n Центральним елементом СОМ є об'єкт. Додатки, що підтримують СОМ, мають у своєму составі один або кілька об'єктів СОМ. Кожний об'єкт являє собою екземпляр відповідного класу й містить один або кілька інтерфейсів. ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 15

Формат інтерфейсу СОМ Клиент Указатель 1 Метод 1 Указатель 2 Метод 2 Указатель на Формат інтерфейсу СОМ Клиент Указатель 1 Метод 1 Указатель 2 Метод 2 Указатель на интерфейс Внутренний указатель на виртуальную таблицу Указатель N Метод N Объект СОМ ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 16

Сервер COM n n Сервер СОМ являє собою файл, що виконується: додаток або динамічна Сервер COM n n Сервер СОМ являє собою файл, що виконується: додаток або динамічна бібліотека, що може містити один або кілька об'єктів одного або різних класів. Розрізняють три типи серверів. Внутрешній сервер (in-process server) реалізується динамічними бібліотеками, які підключаються до додаткаклієнта й працюють в одному з ним адресному просторі. Локальний сервер (local server) створюється окремим процесом, що працює на одному комп'ютері із клієнтом. Вилучений сервер (remote server) створюється процесом, що працює на іншому комп'ютері стосовно клієнта. ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 17

Бібліотека СОМ n n n Для забезпечення виконання базових функцій і інтерфейсів в операційній Бібліотека СОМ n n n Для забезпечення виконання базових функцій і інтерфейсів в операційній системі існує спеціальна бібліотека СОМ (конкретна реалізація може бути різної). Доступ до можливостей бібліотеки здійснюється стандартним способом - через виклик функцій. При установці підтримуючий СОМ додатка до системного реєстру записується інформація про всіх реалізовані їм об'єктах СОМ: ідентифікатор класу (Class Identifier, CLSID), що однозначно визначає клас об'єкта; тип сервера об'єкта - внутрішній, локальний або вилучений; для локальних і внутрішніх серверів зберігається повне ім'я динамічної бібліотеки або файлу, що виконується; для вилучених серверів записується повна мережна адреса. ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 18

Бібліотека СОМ ХНУРЕ, Кафедра Інформатики informatika@kture. kharkov. ua 19 Бібліотека СОМ ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 19

После получения указателя клиент обращается к интерфейсу Объект СОМ Клиент Указатель на IID 2_A После получения указателя клиент обращается к интерфейсу Объект СОМ Клиент Указатель на IID 2_A Co. Create. Istance(CLSID_2, IID 2_A) CLSID_1 Библиотека СОМ C: SERVER 1. EXE CLSID_2 C: SERVER 2. DLL По записи из реестра СОМ запускается сервер Библиотека обращается к реестру ХНУРЕ, Кафедра Інформатики [email protected] kharkov. ua 20