- •Розподілені системи обробки інформації
- •Передмова
- •Розділ 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. Підсумки порівняння
- •Літературні джерела
2.12. Технологія ActiveХ
Продовженням розвитку технології COM є створення єдиного стандарту реалізації компонентного підходу до програмування – стандарту ActiveХ.
З погляду моделі об’єктів COM елемент керування ActiveХ – це сервер, що підтримує технологію Automation, реалізований у вигляді динамічної бібліотеки, що виконується в адресному просторі вашого застосунка і дозволяє візуальне редагування.
2.12.1. Використання готових елементів АctiveХ
Разом з Delphi постачається ряд компонентів ActiveX від сторонніх розроблювачів (ChartFX, VSSpell та інших). Інформація про встановлені в системі елементи ActiveX є в реєстрі Windows. Для перегляду цього списку необхідно вибрати пункт меню Delphi Component/Import ActiveX Control. У формі, що з’явилася – Import ActiveX – подана інформація про всі елементи ActiveX, зареєстровані у системі. У рядку під списком вибору показано, у яких файлах вони розташовані.
Зазвичай, всі елементи ActiveX, які розповсюджуються у складі великих програмних продуктів, реєструються автоматично при їхній інсталяції. Зареєструвати новий елемент можна, принаймні, трьома шляхами:
-
натисканням кнопки Add у цьому діалоговому вікні;
-
викликанням системної утиліти regsvr32.exe (входить до складу операційних систем родини Windows (95/98/NT/XP/Vista), а також OSR2);
-
викликанням утиліти tregsvr, що постачається з Delphi у вихідних текстах (папка \DEMOS\...\ACTIVEX\TREGSVR, де «…» означають можливі проміжні підкаталоги залежно від версії середовища Delphi).
Якщо обрано один з елементів ActiveX, у полі Class Names будуть перераховані всі класи, що містяться в цьому файлі. В інших полях пропонується вибрати сторінку Палітри компонентів для майбутнього використання обраного елемента в Delphi.
Наступний крок – створення файла обгортки (wrapper). Цей файл являє собою опис бібліотеки типів (усіх методів, властивостей і подій, що містяться в елементі) мовою Object Pascal. Його ім’я складається з імені ActiveX і рядка “_TLB.PAS”. Натискання кнопки Create Unit тільки створює цей файл (з метою ознайомлення і тестування), а натискання кнопки Install продовжує процедуру встановлення.
Примітка 1. Елемент керування, що встановлюється, має вміщуватися в один з пакетів (packages). Можна вибирати один з наявних файлів DPK чи створити новий. Після компіляції пакета елемент ActiveX у вашому розпорядженні.
Примітка 2. У разі виконання численних експериментів з різними ActiveХ-елементами, визначаючи ступінь їхньої придатності, краще створити новий пакет.
Деінсталяцію елемента ActiveX варто починати з видалення посилання на нього. Для цього треба відкрити необхідний файл DPK, забрати непотрібні елементи і перекомпілювати пакет. Після цього елемент (чи елементи) зникнуть зі сторінки в Палітрі компонентів. Якщо ви впевнені, що цей елемент більше ніким не використовується, можете видалити інформацію про нього із системного реєстру (кнопка Remove). Тільки після цього можна видалити з диска сам файл OCX (DLL).
Розглянемо як приклад використання елемента IwebBrowser зі складу Microsoft Internet Controls (файл SHDOCVW.DLL). Він являє собою ядро браузера від Microsoft, до того ж його використання наочне і не позбавлене практичного змісту.
Використання елемента IWebBrowser
Після того, як виконано всі описані вище операції, у вашому розпорядженні буде файл SHDOCVW_TLB.PAS. У ньому наведено опис інтерфейсу IWebBrowser:
IWebBrouser = interface(IDispatch) [IID]
Procedure GoBack; safecall;
Procedure GoForward; safecall;
Procedure GoHome; safecall;
Procedure GoSearch; safecall;
Procedure Navigate(url: WideString; var flags: OleVariant, var TargetFrameName: OleVariant; var PostData: OleVariant; var Headers: OleVariant); safecall;
Procedure Refresh; safecall;
Procedure Refresh2(var Level:OleVariant,); safecall;
Procedure Stop; safecall;
Function Get_Application: IDispatch; safecall;
Function Get_Parent: IDispatch; safecall;
Function Get_Container: IDispatch; safecall;
Function Get_Document: IDispatch; safecall;
Function Get_TopLevelContainer: WordBool; safecall;
Procedure Get_Type: WideString; safecall;
Function Get_Left: Integer; safecall;
Procedure Set_Left(P: Integer); safecall;
Function Get_Top: Integer; safecall;
Procedure Set_Top(P: Integer); safecall;
Function Get_Width: Integer; safecall;
Procedure Set_Width(P: Integer); safecall;
Function Get_Height: Integer; safecall;
Procedure Set_Height(P: Integer); safecall;
Function Get_LocationName: WideString; safecall;
Function Get_LocationURL: WideString; safecall;
Procedure Get_Lbusy: WordBool; safecall;
Property Application: IDispath read GetApplication_;
Property Parent_: IDispath read Get_Parent;
Property Container_: IDispath read Get_Container;
Property Document_: IDispath read Get_Document;
Property TopLevelContainer_: WordBool read Get_TopLevelContainer;
Property Type_: WideString read Get_Type;
Property Left: Integer read Get_Left write Set_Left;
Property Top: Integer read Get_Top write Set_Top;
Property Width: Integer read Get_Width write Set_Width;
Property Height: Integer read Get_Height write Set_Height;
Property LocationName: WideString read Get_LocationName;
Property LocationUrl: WideString read Get_LocationUrl;
Property Busy: WordBool read Get_Busy;
end;
Крім інтерфейсу, в цьому файлі міститься опис об’єкту Delphi TWebBrowser_v1, що є надбудовою над інтерфейсом IwebBrowser і містить методи і властивості, точно відповідні методам і властивостям інтерфейсу. Це зроблено для того, щоб підвести єдиний базис під всі елементи, що вбудовуються, і забезпечити їм, з погляду Delphi, подібну поведінку. Загалом, усі класи-надбудови над ActiveX породжені від класу ToleControl. У нього є властивість OleObject, що являє собою посилання на потрібний вам інтерфейс. Однак надійніше викликати необхідні методи через методи відповідного класу Delphi.
Примітка 3. Клас TWebBrowser є надбудовою над інтерфейсом IWebBrowser2 з розширеними можливостями.
Наведемо практичне застосування властивостей і методів інтерфейсу IwebBrowser. У браузері показане використання методів GoBack та Navigatе:
Procedure TForm1.BackTooButtonClick(Sender:TObject);
Begin
WebBrowser_V11.GoBack;
End;
Procedure TForm1.GoToolButtonClick(Sender:TObject);
Var ov1,ov2,ov3,ov4: OleVariant;
Begin
WebBrowser_V11.Navigate(ComboBox1.Text,ov1,ov2,ov3,ov4);
End;
Розроблений браузер може бути корисним при налагодженні застосунків, що використовують протокол HTTP, зокрема, модулів розширення ISAPI/CGI.