Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОПІ_Лекції_зошит4.docx
Скачиваний:
2
Добавлен:
20.08.2019
Размер:
244.78 Кб
Скачать

Лекція 29. Сервери автоматизації

Більшість задач друку інформації в програмних продуктах пов’язана з виведенням текстів і таблиць. При цьому, з одного боку, в програмах необхідно реалізовувати складні алгоритми форматування тексту при вводі, а з другого боку, такі задачі дублюють широко поширені пакети, в яких дані можливості вже реалізовані.

Більше того, виведення інформації на друк жорстко визначає вигляд отриманих документів, на який користувач не може впливати. При цьому з розвитком комп’ютерної техніки друковані документи стають все менш потрібними в зв’язку з широким використанням для обміну інформацією електронної пошти та факсів.

В таких умовах доцільно наділяти програмні продукти можливостями збереження інформації в загальноприйнятих форматах, таких, наприклад, як формат текстових документів RTF, тим більше, що Delphi частково підтримує такі можливості. Однак, робота з такими форматами все ж таки непроста і вимагає від розробника додаткових зусиль, особливо в умовах швидкого обновлення стандартів на формати представлення даних.

Другий підхід до підвищення гнучкості виведення інформації підтримується наявністю в Windows технології OLE (Object Linking and Embedding – зв’язування та впровадження об’єктів), яка дозволяє запускати сторонні додатки та передавати їм дані, викликаючи методи цих додатків. Технологія OLE є частиною технології COM – визнаного стандарту для виконання подібних операцій, і все більше програмних продуктів підтримують такі можливості. Виключенням не є і група продуктів Microsoft Office, кожний додаток якої може бути використаний з Delphi-додатків для передачі в них даних.

COM-об’єкти

COM (Component Object Model) – Модель багатокомпонентних об’єктів є об’єктно-орієнтованою концепцією, що описує правила побудови класів, які називаються COM-об’єктами з метою забезпечення взаємодії між ними незалежно від мови, на якій реалізовані дані класи, і середовища, в якому виконуються додатки.

Об’єкти COM реалізуються в спеціальному двійковому форматі. Він фактично є описом класу, не залежить від мови розробки і надає свою функціональність (дозволяє викликати свої методи) через набір інтерфейсів.

Для ідентифікації COM-об’єкту застосовуються глобальні унікальні ідентифікатори, які є 128-розрядними (16 байт) цілими числами і записуються в наступному форматі, де замість символу ‘x’ зазначається шістнадцяткова цифра (від 0 до F):

[‘{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}’]

Наприклад, головний додаток графічного редактора Adobe Photoshop має такий ідентифікатор: {43191d98-5d34-4103-be42-225a55c2312a}.

COM-об’єкти можуть використовуватися або всередині додатку, або в вигляді модулів, що виконуються (зовнішні COM-об’єкти).

Додаток (додаток-клієнт), що використовує COM-об’єкт, викликає метод, заявлений в інтерфейсі цього COM-об’єкта (об’єкта-сервера). Виклик здійснюється за допомогою імені з передачею необхідних параметрів, незалежно від типу COM-об’єкту (зовнішній або внутрішній). Зв’язування виклику методу з його адресою може бути виконане двома способами:

  1. Через інтерфейс IDispatch.

  2. Через таблицю віртуальних методів.

Таблиця віртуальних методів будується для COM-об’єктів на етапі компіляції програми, яка його використовує, і володіє такими перевагами, як висока швидкість роботи та відсутність помилок при передачі параметрів, оскільки синтаксис виклику перевіряється компілятором. Такий вид зв’язування називається раннім по аналогії з раннім зв’язуванням викликів методів для екземплярів звичайних класів Delphi. Для раннього зв’язування необхідна наявність бібліотеки типів, що містить інформацію про сигнатуру методів.

Другий варіант зв’язування – пізнє зв’язування – здійснюється за допомогою інтерфейсу IDispatch. COM-об’єкти, що реалізують інтерфейс IDispatch, називаються серверами автоматизації.

Приналежність COM-об’єкту до серверів автоматизації не виключає можливість раннього зв’язування – навпаки, інтерфейс IDispatch надає компілятору необхідну інформацію про типи. Інтерфейс IDispatch призначений для використання сервера автоматизації в умовах пізнього зв’язування і має декілька методів для визначення інформації про типи. В ньому визначений метод Invoke, якому передається ім’я методу для виклику та список параметрів. Саме на цьому методі побудований механізм використання серверів автоматизації з Delphi-програм. Метод Invoke має багато складних параметрів, однак від не використовується напряму розробниками прикладного програмного забезпечення. Виклики даного методу додаються в програму автоматично під час компіляції.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]