Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекций РСОИ.doc
Скачиваний:
20
Добавлен:
04.11.2018
Размер:
1.93 Mб
Скачать

2.14.2. Розроблення системи «клієнт-віддалений сом-сервер»

Раніше, щоб забезпечити використання технології DCOM, на комп’ютері мало бути встановлене додаткове системне програмне забезпечення (так, для Windows 95 це модуль DCOM95 і утиліта його налагодження), але для Windows NT, Windows 2000, Windows XP та Windows Vista необхідне забезпечення включене до складу системи.

Створення DCOM-сервера

1. Створення DCOM-сервера нічим не відрізняється від створення зовнішнього СОМ-сервера автоматизації.

File→New→ActiveX→Automation Object.

Назвемо його SimpleDCOMServer.

2. Додамо до його базового інтерфейсу ISimpleDCOMServer метод-функцію AreYouThere:

Function TSimpleDCOMServer.AreYouThere: WordBool;

Begin

Result := true;

End;

3. Збережемо створений проект на диску – модуль Unit1 як MainForm.pas, Unit2 як SimpleServer.pas, а файл проекту назвемо DCOMServer. Відкомпілюємо проект, після чого буде сформовано виконавчий файл DCOMServer.exe.

DCOM-сервер готовий.

Інсталяція та реєстрація DCOM-сервера

Інсталяція та реєстрація DCOM-сервера – необхідний і ключовий етап DCOM технології. Основне на цьому етапі – визначення дисципліни доступу клієнтів до сервера.

Розглянемо цей процес для операційної системи (ОС) Windows NT, Windows XP, Windows Vista.

Розглянемо варіант встановлення DCOM-сервера на сервер домена (групи комп'ютерів у Windows NT, Windows XP, Windows Vista). Це основний варіант використання.

Нижче наведений перелік дій для встановлення DCOM-сервера на комп'ютері, що є сервером у мережі.

  1. Скопіюйте файл DCOMServer.exe на комп'ютер-сервер і запустіть його один раз на виконання, щоб зареєструвати DCOM-сервер у Windows. Відразу після запуску й появи вікна застосунка на екрані треба закрити програму.

На комп'ютері-сервері в меню Start у розділі Programs виберіть Programs Administrative ToolsCommonUser Manager for Domains. На екрані з'явиться вікно User Manager.

  1. Вважаючи, що в цей час мережа працює, оператор повинен мати бюджет користувача на комп'ютері, на якому буде виконуватися клієнтський застосунок.

  2. У головному меню вікна User Manager виберіть команду UserNew LocalGroup. На екрані з'явиться діалогове вікно для введення параметрів.

  3. У поле Group Name введіть ім'я групи DCP DCOM Server для тих, хто буде спілкуватися з DCOM-сервером (і бажаний опис), і клацніть на кнопці Add. Windows виведе на екран діалогове вікно Add User and Groups (Додавання користувачів і груп).

  4. Додайте до групи DCP DCOM Server ім’я кожного користувача, якому ви надаєте доступ до DCOM-сервера.

  5. Клацніть на кнопці ОК в обох відкритих діалогових вікнах, і на цьому створення нової групи закінчиться. Тепер у вікні User Manager, у його нижній панелі, ви побачите назву нової групи.

  6. Закрийте вікно User Manager і запустіть на виконання файл DCOMCNFG.EXE. Цей файл розташовано в каталозі System32 Windows. Створений DCOM-сервер SimpleDCOMServer Object з'явиться у списку доступних для використання серверів.

  7. Виділіть свій DСОМ-сервер, наприклад, SimpleDCOMServer. За кнопкою Properties на екрані з'явиться діалогове вікно властивостей цього DCOM-сервера.

Перелік вкладок:

  • General – містить загальну інформацію про ідентифікацію, тип та розміщення СОМ-об’єкту (на цьому комп’ютері або у мережі).

  • Location – містить інформацію про можливість активізації СОМ-сервера.

На вкладці три прапорці:

1) Run application on the computer where the date is located (виконувати на тому комп’ютері, на якому розташований);

2) Run application on this computer (виконувати застосунок на цьому комп'ютері);

3) Run application on the following computer (виконувати на вказаному комп’ютері, адреса вказується за кнопкою Browse).

Виберіть вкладку Location і встановіть прапорець Run application on this computer.

  • Security – містить інформацію про можливі права.

Адміністратору надається можливість або погодитися з правами за замовчуванням, або встановити конкретні права для різних користувачів.

Встановлюються три види прав:

1) Launch and Activation Permissions (право на запуск та активізацію СОМ-сервера):

встановіть перемикач Use custom launch permissions (використати налагодження прав запуску); за кнопкою Edit визначте користувачів, яким надано право віддаленого запуску DCOM-сервера на цьому комп'ютері; для використання прав на активацію, визначених за замовчуванням, встановіть перемикач Use default configurations;

2) Access Permissions (право на доступ до інтерфейсів СОМ-сервера):

встановіть перемикач Use custom access permissions (використати налагодження прав доступу); за кнопкою Edit визначте користувачів, яким наданий доступ до цього DCOM-серверу; для використання прав доступу, визначених за замовчуванням, встановіть перемикач Use default configurations;

3) Configuration Permissions (право на зміну прав, тобто на конфігурування):

втановіть перемикач Use custom configuration permissions (використати налагодження прав на конфігурування); за кнопкою Edit визначте користувачів, яким надано право конфігурування цього DCOM-серверу; для використання прав конфігурування, визначених за замовчуванням встановіть перемикач Use default configurations.

- Endpoints – визначення мережевого протоколу для звернення до СОМ-об’єкту (зазвичай встановлюється за замовчуванням).

- Identity – визначення користувача для запуску.

Можливі варіанти:

The interactive user (на екрані комп’ютера-сервера з’являється головна форма СОМ-сервера),

The launching user (користувач, який активізував, тобто клієнт, у цьому разі форма не з’являється),

This user (вказаний користувач).

Інсталяція в операційній системі Windows 98

Як відзначалося раніше, DCOM-сервери можуть виконуватися і в операційних системах Windows 98 і NT. Більш ефективно використати модель DCOM можна у варіанті, коли DCOM-сервер виконується на комп'ютері з операційною системою Windows NT. Якщо ж сервер – це комп'ютер з операційною системою Windows 9х, то треба обов'язково пам'ятати про деякі особливості такої конфігурації.

  • Неможливо автоматично запустити на виконання DCOM-сервер на віддаленому комп'ютері під Windows 98. Щоб такий комп'ютер міг відігравати роль DCOM-сервера, серверний застосунок має бути завантажений у пам’ять перш, ніж з ним спробує зв'язатися хоча б один клієнтський застосунок.

  • Щоб коректно працював механізм DCOM, треба змінити значення елемента HKEY_LOCAL_MACHINE\Software\Microsoft\OLE\EnableRemoteConnect у системному реєстрі Windows 98 на Y.

  • Треба також змінити значення елемента HKEY_LOCAL_MACHINE\ Software\Microsoft\OLE\LegacyAuthenticationLevel у системному реєстрі Windows 95/98 на 1. Якщо такий ключ у реєстрі відсутній, його треба додати як новий ключ типу DWORD.

  • Вам може знадобитися запустити на виконання на комп'ютері з операційною системою Windows 98 програму RPCSS.EXE, хоча це й не обов'язково при використанні DCOM версії 1.1 або більш пізньої.

Досить корисно також ознайомитися з документом Microsoft # Q 165101 HOWTO: Use Windows 95 or Windows 98 as a DCOM Server (Як використати Windows 95 або Windows 98 як DCOM-сервер), що розміщений за адресою

http://support.microsoft.com/support/kb/articles/g165/1/01.asp.

Пам’ятати, що все сказане відноситься тільки до розміщення DCOM-сервера на комп'ютері з операційною системою Windows 95/98 і не стосується DCOM-клієнта.

Після того, як до системного реєстру Windows внесені необхідні зміни, треба запустити програму DCOMServer.exe, що і виконає реєстрацію DCOM-сервера в реєстрі. Не закривайте проект відразу після реєстрації, оскільки застосунки-клієнти не зможуть зв'язатися з ним, якщо тільки він не буде раніше завантажений у пам’ять.

Створення DCOM-клієнта

Тепер на комп'ютері-сервері мережі у нас є встановлений застосунок DCOM-сервера. Зауважимо, що в програмний код сервера ми не внесли жодного виправлення в порівнянні із програмою локального COM-сервера. Отже, фактично, DCOMServer являє собою повноцінний COM-сервер, що використовується для розподілених застосунків.

Створимо клієнтську програму, за допомогою якої можна перевірити працездатність нашого сервера. Почніть новий проект (application) у середовищі Delphi. У головному меню виберіть команду Project→Import Type Library. Якщо у списку серверів відсутній рядок DCOMServer (Version 1.0), клацніть на кнопці Add та імпортуйте бібліотеку типів DCOMServer.tlb. Клацніть на кнопку ОК, і Delphi сформує файл імпорту DCOMServer_TLB.pas.

У лістингу наведено фрагменти коду модуля головної форми застосунка-клієнта.

Unit MainForm;

interface

uses Windows, . . . ,DCOMServer_TLB;

type

TfrmMain = class(TForm)

pnlBottom: TPanel;

btnTest: TButton;

pnlClient: TPanel;

Label1: TLabel;

ecServer: TEdit;

procedure btnTestClick(Sender: TObject);

private

public

end;

var

frmMain : TfrmMain;

implementation

procedure TfrmMain.btnTestClick(Sender :TObject);

var FServer: ISimpleDCOMServer;

begin

FServer := CoSimpleDCOMServer.CreateRemote(ecServer.Test);

if FServer.AreYouThere then ShowMessage(‘I am here.’)

else

ShowMessage(‘Where are you’);

end;

end.

Цей програмний код практично ідентичний тому, що поданий у попередніх параграфах при створенні локальних COM-клієнтів. Єдина відмінність, фактично, полягає в тому, що тут використаний метод CoSimpleDCOMServer.CreateRemote класу CoSimpleDCOMServer замість CoSimpleDCOMServer.Create, яка також визначена у цьому класі. Це означає, що такий сервер зміною лише одного рядка програмного коду клієнтського застосунка може бути перетворений з локального зовнішнього у віддалений (DCOM) сервер і навпаки.

Локальний COM-сервер можна запустити викликанням методу CreateRemote і передаванням йому як параметр «\\» або імені локального комп'ютера. При такому способі взагалі не доведеться змінювати жодного рядка коду – треба просто замінити ім'я комп'ютера при викликанні CreateRemote.

Є ще один нюанс, про який не можна забувати при використанні клієнтського застосунка. На тому комп'ютері, де буде виконуватися клієнтський застосунок, треба зареєструвати бібліотеку типів DCOM-сервера. Простіше за все це зробити за допомогою TREGSVR (входить у поставку Delphi) у такий спосіб:

TRegSvr DCOMServer.tlb.

Інший шлях – викликання на виконання сервера на клієнтському комп’ютері. Після того, як бібліотека типів буде зареєстрована, можна запускати клієнтську програму на виконання. На рис. 2.12 зображене вікно клієнтського застосунка під час його роботи. Введіть ім'я сервера (у цьому випадку це SERVER) і клацніть на кнопці Test. Якщо все працює нормально, ви побачите вікно повідомлення з текстом “I am here” (“Я тут”). Якщо ж з'явиться повідомлення про те, що доступ до сервера неможливий, виходить, щось спрацювало некоректно – скоріше за все, була допущена помилка при роботі з утилітою DCOMCNFG.

Примітка. Усе, що зазначалося раніше про зовнішні COM-сервери, актуальне й у відношенні DCOM-серверів. Наприклад, методи використання подій COM і зворотних викликань можна з успіхом застосовувати й у DCOM-застосунках.

Контрольні запитання та завдання:

  1. Назвіть базові концепції DCOM.

  2. У чому полягає механізм віддаленого виклику процедур (RPC)?

  3. Опишіть процес розроблення DCOM-сервера.

  4. Опишіть процес інсталяції DCOM-сервера для різних операційних систем.

  5. Опишіть процес розроблення клієнта.