- •Розподілені системи обробки інформації
- •Передмова
- •Розділ 1. Огляд компонентних технологій створення розподілених програмних систем
- •1.1. Узагальнена архітектура і механізм функціонування об'єктних розподілених систем
- •1.2. Основні приклади технологій створення розподілених систем
- •1.3. Переваги використання розподілених технологій
- •Розділ 2. Розроблення розподілених систем на основі модели com/dcom у Delphi
- •2.1. Використання dll у Delphi
- •2.1.1. Поняття dll
- •2.1.2. Створення dll у середовищі Delphi (експорт)
- •2.1.3. Використання dll у Delphi (імпорт)
- •2.1.4. Створення динамічних бібліотек для редагування ресурсів
- •2.2. Основи сом-технології
- •2.2.1. Загальний опис
- •2.2.2. Базові поняття
- •2.2.3. Бібліотека сом
- •2.2.4. Бібліотека типів
- •2.3.2. Сервер сом у Delphi
- •2.3.3. Бібліотека типів у delphі
- •2.4. Створення системи клієнт-сервер на основі базового com-об’єкту у складі внутрішнього сервера
- •2.4.1. Створення сом-сервера
- •2.4.2. Створення сом-клієнта
- •2.4.3. Використання сом-об’єкту в клієнтській програмі
- •2.5. Механізм міжпроцесного обміну
- •2.6. Створення систем клієнт-сервер на основі зовнішнього базового сом-об’єкту
- •2.6.1. Основні поняття
- •2.6.2. Засоби організації потокової взаємодії клієнта і сервера
- •2.6.3. Методи формування екземпляра сом-об’єкту
- •2.6.4. Формування екземпляра зовнішнього сом-об’єкту
- •2.6.5. Створення сом-сервера
- •2.6.6. Створення сом-клієнта
- •2.7. Автоматизація
- •Створення сервера автоматизації;
- •2.7.1. Базові поняття
- •2.7.2. Сервер автоматизації
- •2.7.3. Контролер автоматизації
- •2.8. Створення системи клієнт-сервер на основі внутрішнього сервера автоматизації
- •2.8.1. Об'єкт автоматизації. Клас tAutoObject
- •2.8.2. Вбудований сервер автоматизації
- •2.8.3. Створення клієнта автоматизації
- •2.9. Зовнішній сервер автоматизації
- •2.9.1. Основні визначення
- •2.9.2. Виконання маршалінгу з рядками, шрифтами і зображеннями
- •2.9.3. Перетворення наявного застосунка в сом-сервер автоматизації
- •2.9.4. Створення клієнта автоматизації
- •2.10. Події в сом і зворотні виклики на основі інтерфейсів диспетчирування
- •2.10.1. Створення сервера автоматизації
- •3. Формування бібліотеки типів
- •4. Формування методів
- •5. Реєстрація сервера
- •2.10.2. Створення клієнтського застосунка
- •2.10.3. Підключення множини клієнтів до сервера
- •2.11. Інтерфейси зі зворотним викликом
- •2.11.1. Створення сервера
- •2.11.2. Створення клієнтського застосунка
- •2.12. Технологія ActiveХ
- •2.12.1. Використання готових елементів АctiveХ
- •2.12.2. Розроблення власних елементів АctiveХ
- •2.12.3. Поширення елементів керування ActiveХ і форм ActiveХForm у Web-середовище
- •2.14. Dcom технологія
- •2.14.1. Загальна схема взаємодії сом-клієнта і сом-сервера
- •2.14.2. Розроблення системи «клієнт-віддалений сом-сервер»
- •Розділ 3. Проектування розподілених систем на платформі Microsoft .Net
- •3.1.1. Здійсненя викликань з типів .Net до типів сом
- •3.1.2. Звернення клієнта сом до збірки .Net
- •3.2. Об’єктно-орієнтована архітектура .Net Remotіng – основа створення розподілених систем Mіcrosoft .Net.
- •3.2.1. Створення системи клієнт-сервер на основі технології Remoting
- •Розділ 4. Створення системи "клієнт - сервер" на основі технології corba
- •4.1. Загальні теоретичні відомості
- •4.2. Створення серверного застосунка
- •1. Створення файла опису інтерфейсу
- •Викликання конструктора створення corba сервера
- •Формуємо модуль Unit1
- •Формуємо реалізацію методу
- •4.3. Створення клієнтського застосунка
- •Викликання конструктора corba-клієнта
- •2. Формування форми
- •3. Запуск застосунка
- •Приклад програмних кодів сервера
- •4.4. Порівняльний аналіз технологій сом і соrва
- •4.4.1. Основні принципи об'єктних моделей
- •4.4.2. Об'єктні моделі
- •4.4.3. Підтримка операційних систем
- •4.4.4. Формальний опис архітектури і проблеми реалізації
- •4.4.5. Підсумки порівняння
- •Літературні джерела
-
інтерфейси автоматизації;
-
об’єкти автоматизації;
-
Створення сервера автоматизації;
-
створення контролера автоматизації;
-
інтерфейс Word.Basic;
-
приклади автоматизації.
2.7.1. Базові поняття
Автоматизація як технологія, заснована на COM, забезпечує надання функцій одних застосунків іншим. Базовим інтерфейсом автоматизації є IDispatch – звичайний інтерфейс COM. Інтерфейс IDispatch є спадкоємцем IUnknown, тобто успадковує всі його методи та містить власні методи.
Як і всі подібні інтерфейси, він реалізований за допомогою віртуальної таблиці вказівників на його методи. Особливість полягає в наявності спеціального методу Invoke, що забезпечує виклик інших методів. Крім зазначеного методу, IDispatch має ще три методи, розглянуті нижче.
Об’єкти автоматизації містять інтерфейси автоматизації, тобто такі інтерфейси, для яких батьківським є саме IDispatch.
Об'єкт, що працює з використанням інтерфейсу автоматизації, повинен обов'язково визначити для нього додатковий інтерфейс, який називається диспетчерським. У диспетчерському інтерфейсі не використовується віртуальна таблиця методів, в ньому містяться методи, доступні для виклику. Для кожного методу автоматично створюється унікальний ідентифікатор методу, який називається диспетчерським – DISPID. Такий ідентифікатор використовується як головний параметр методу Invoke.
Реалізація методу Invoke за суттю є оператором case, у якому на основі диспетчерського ідентифікатора просто вибирається потрібний метод.
Методи диспетчерських інтерфейсів мають деякі обмеження на типи даних параметрів. Іншою особливістю є можливість визначення властивостей через спеціалізовані методи читання і встановлення їхніх значень.
Кожен диспетчерський інтерфейс має власний унікальний ідентифікатор (як і будь-який інший інтерфейс). Він використовується у випадку, якщо в застосунку є кілька диспетчерських інтерфейсів. Оскільки інтерфейс IDispatch є спадкоємцем IUnknown, для виклику іншого диспетчерського інтерфейсу можна скористатися методом QueryInterface.
Як результат, взаємодія між застосунками автоматизації спрощується – для роботи потрібна ліше одна віртуальна таблиця для інтерфейсу IDispatch, всі інші методи викликаються описаним вище механізмом.
Але диспетчерські інтерфейси працюють трохи повільніше від стандартних, тому в застосунках автоматизації використовується ще один тип інтерфейсів – дуальні інтерфейси. Його методи можна викликати як через Invoke, так і через віртуальну таблицю. Дуальний інтерфейс обов'язково має бути спадкоємцем IDispatch. Його віртуальна таблиця включає посилання на три методи IUnknown, чотири методи IDispatch і методи відповідного диспетчерського інтерфейсу.
Застосунок, що надає свої функції за допомогою інтерфейсу IDispatch, називається сервером автоматизації. Сервер обов'язково повинен включати об'єкт автоматизації – звичайний об'єкт COM, що містить інтерфейси автоматизації.
Будь-який стандартний клієнт COM, що звертається до сервера через IDispatch, називається контролером автоматизації.
Маршалінг диспетчерських інтерфейсів також має особливість – для передавання різнотипних параметрів через метод Invoke використовується перетворення параметрів у тип variant і навпаки.
Iнтерфейс IDispatch. Найважливіший для технології автоматизації інтерфейс IDispatch інкапсульований в однойменному класі IDispatch. Методи класу відповідають методам інтерфейсу. Наведемо опис методів:
Function GetTypeInfoCount (out Count :Integer ): HResult; stdcall;
Повідомляє про те, чи може певний об'єкт повертати інформацію про тип під час виконання.
Function GetTypeInfo (Index , LocaleID :Integer;out TypeInfo): HResult; stdcall;
Повертає вказівник на інтерфейс бібліотеки типів ITypeInfo (якщо він є).
Function GetIDsOfNames (const IID: TGUID ; Names:Pointer; NameCount, Localed : Integer ; DispiDs: Pointer ): HResult;stdcall;
Повертає DISPID за заданим ім’ям методу диспетчерського інтерфейсу.
Function Invoke (DispID: Integer ; const IID: TGUID; LocaleID: Integer; Flags: Word; var Params; VarResult, Exceplnfo, ArgErr: Pointer):HResult; stdcall;
Використовується для виклику всіх методів диспетчерського інтерфейсу.
Крім цього, інтерфейс успадковує методи базового інтерфейсу IUnknown.