- •Розподілені системи обробки інформації
- •Передмова
- •Розділ 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. Підсумки порівняння
- •Літературні джерела
4.2. Створення серверного застосунка
1. Створення файла опису інтерфейсу
У текстовому редакторі створюємо файл STRServ.IDL, у якому описуємо інтерфейси і функції, що будуть реалізовані в серверній частині.
Зберігаємо в папці проектів – d:\Program Files\Borland\delphi 7\Projects\CORBA
Назвемо його STRServ.idl.
Текст файла (IDL-визначення інтерфейсу) :
interface SimplCORBAInt
{
string getstr(in string instr);
};
У цьому файлі оголошується інтерфейс з іменем SimplCORBAInt, який складається з однієї функції – getstr, вхідний параметр – instr типу string. Функція повертає значення типу string.
-
Викликання конструктора створення corba сервера
Відкриваємо Delphi. У меню File вибираємо New\Other... На закладці CORBA вибираємо CORBA SERVER APPLICATION, у вікні, що з'явилося, вказуємо тип застосунка (Windows Aplication або Console Application), а також ім'я файла з описом STRServ.IDL і натискаємо кнопку Generate.
Якщо не почнеться процес генерування, необхідно ознайомитись зі змістом файла IDL2pas.BAT, текст якого наведно нижче (це може статися тому, що візард написано на Java, отже, необхідна встановлення коректної версії Java):
echo off
rem jre.exe should be in your path and -cp should be set to the location of idl2pas.jar.
rem -mxNumber is the max heap size. This can be increased if the jvm runs out of heap.
echo on
java -mx40000000 -cp "C:\Program Files\Borland\Delphi6\Bin\idl2pas.jar" com.inprise.vbroker.compiler.tools.idl2pas %1 %2 %3 %4 %5 %6 %7 %8 %9
За допомогою конструктора IDL2pas створюються 6 файлів:
-
STRServ_c – файл, у якому описана заглушка. У ньому визначені класи TSimplCORBAIntHelper (клас для підтримки CORBA-технології) і TSimplCORBAIntStub (опис методу getstr);
-
STRServ_i – файл, у якому описуються інтерфейс;
-
STRServ_s – файл, у якому описаний skeleton-клас TSimplCORBAIntSkeleton, методи якого створюють CORBA об'єкт;
-
STRServ_impl – файл реалізації інтерфейсу;
-
Unit1 – модуль форми, у якому виконується ініціалізація CORBA;
-
Project1 – файл проекту.
-
Формуємо модуль Unit1
У модулі Unit1 у секції protected оголошуємо змінну STRServ типу SimplCORBAInt.
В автоматично створеному методі форми Form1.InitCorba формуємо текст серванта (процедура створення CORBA-об’єкту і його реєстрації) для нашого CORBA-об’єкту, а саме:
// створити об'єкт
STRServ:=STRServ_s.TSimplCORBAIntSkeleton.Create('My str server', TSimplCorbaInt.Create);
// реєструвати об'єкт
BOA.ObjIsReady(STRServ as _Object);
В оброблювачі події OnClick кнопки Button1 головної форми передбачаємо виклик методу InitCorba.
procedure TForm1.Button1Click(Sender: TObject);
begin
Form1.InitCorba;
end;
-
Формуємо реалізацію методу
У файлі STRServ_impl описуємо реалізацію методу getstr.
function TSimplCORBAInt.getstr (const instr : AnsiString): AnsiString;
begin
{ *************************** }
{ *** User code goes here *** }
{ *************************** }
result:= Instr+' + CORBA ADD STR' ;
end;
4.3. Створення клієнтського застосунка
-
Викликання конструктора corba-клієнта
Відкриваємо новий проект Delphi. У меню File вибираємо New\Other. На закладці CORBA вибираємо CORBA CLIENT APPLICATION, у вікні, що з'явилося, вказуємо тип застосунка, а також додаємо той самий файл .IDL, що і для серверного застосунка (STRServ.idl) і натискаємо кнопку Generate.
За допомогою майстра IDL2pas створюються 4 файли:
-
STRServ_c – файл, у якому описана заглушка така сама як на сервері;
-
STRServ_i — файл, у якому описуються інтерфейси;
-
Unit1 - файл, у якому описана основна форма;
-
Project1 - файл проекту.