- •Розподілені системи обробки інформації
- •Передмова
- •Розділ 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. Розроблення розподілених систем на основі модели com/dcom у Delphi
2.1. Використання dll у Delphi
2.1.1. Поняття dll
Перетворення вихідного тексту програми в машинний код містить у собі два процеси – компіляцію і компонування. У процесі компонування, редактор зв’язків, що компонує окремі модулі програми, включає у код програми не тільки оголошення функцій і процедур, але і їхній повний код. У разі використання такої ж функції в іншій програмі, остання також міститиме повністю код функції. Це призводить до неефективного використання оперативної пам’яті через дублювання коду.
Програма1 |
Програма2 |
... |
|
Function MYFunc(...) |
Function MYFunc(...) |
код функції MYFunc... |
код функції MYFunc |
End |
End |
код інших функцій..MYFunc(...) |
код інших функцій...MYFunc(...) |
У багатозадачному середовищі негативний ефект від вказаних недоліків ще більш посилюється внаслідок того, що величезна кількість функцій, які відповідають за побудову елементів інтерфейсу користувача, за доступ до системних ресурсів, та інші подібні до них дублювалися б повністю у всіх застосунках, що привело б до швидкого виснаження найдорожчого ресурсу − оперативної пам’яті. Як рішення цієї проблеми була запропонована концепція динамічного компонування.
-
Програма1
Бібліотека динамічної компонування (DLL)
...
MYFunc(...)
...
Function MYFunc(...)
Програма2
код функції MYFunc
...
End
MYFunc(...)
...
При запуску декількох екземплярів одного застосунка Windows завантажує в оперативну пам’ять тільки одну копію коду і ресурсів − модуль застосунка (module), створюючи кілька окремих сегментів даних, стеку і черги повідомлень кожен, набір яких являє собою задачу (Task) у розумінні Windows. Копія застосунка (instans) − це контекст, у якому виконується модуль застосунка.
Модуль застосунка (module) |
Задача 1(Task) |
Задача 2(Task) |
Код Ресурси |
Копія 1 застосунка (instans) |
Копія 2 застосунка (instans) |
|
Дані |
Дані |
|
Стек |
Стек |
|
Черга повідомлень |
Черга повідомлень |
DLL-бібліотека також є модулем. Вона розташовується в пам’яті в єдиному екземплярі і містить сегмент коду і ресурси, а також сегмент даних.
-
DLL-бібліотека
Код
Ресурси
Дані
DLL-бібліотека, на відміну від застосунка, не має ні стеку, ні черги повідомлень. Функції, розміщені в DLL, виконуються в контексті застосунка, який їх викликає, користуючись його стеком. Але ці самі функції використовують сегмент даних, що належить бібліотеці, а не копії застосунка. При такій організації DLL економія пам’яті досягається за рахунок того, що всі запущені застосунки використовують один модуль DLL, не включаючи ті чи інші стандартні функції до складу своїх модулів.