Поняття про Component Objects ModelПоняття про Component Objects Model

СОДЕРЖАНИЕ: Реферат на тему: Поняття про Component Objects Model В останній, 6-й версії Visual Fox Pro фірма Microsoft радикально удосконалила підтримку моделі СОМ. Абревіатура СОМ розшифровується як Component Objects Model - модель обєктних компонентів. Це стандарт Microsoft, що регламентує обмін інформацією між додатками.

Реферат на тему:

Поняття про Component Objects Model

В останній, 6-й версії Visual Fox Pro фірма Microsoft радикально удосконалила підтримку моделі СОМ. Абревіатура СОМ розшифровується як Component Objects Model - модель обєктних компонентів. Це стандарт Microsoft, що регламентує обмін інформацією між додатками. Вживання СОМ дозволяє абсолютно по-новому організувати додатки. Відзначимо, що освоїти методику її вживання особливої праці не складає.

В цьому розділі обговорюються основні функції СОМ і можливості їх використовування в додатках Visual FoxPro. В розділах 21 і 22 на практичних прикладах показано, як це робиться. На чолі 21 мова йде про використовування Visual FoxPro як COM-клієнт, а на чолі 22 - про створення в середовищі Visual FoxPro COM -серверу.

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

Основна ідея стандарту СОМ полягає в тому, що будь-який СОМ-обєкт може взаємодіяти з іншим COM-обєктом незалежно від того, чи розроблений він в середовищі Visual Fox Pro, Visual Basic або Visual C++. Деякі СОМ-обєкти по самій своїй природі є візуальними. До них, зокрема, відносяться всі елементи управління ActiveX, які поставляються у складі програмного продукту Visual Fox Pro. Хоча програма такого елемента управління написана на Visual FoxPro, його можна використовувати в будь-якому додатку, в якому дотримані стандарти Microsoft на включення СОМ-об’єктів.

Інші СОМ-обєкти не мають видимих контурів. Наприклад, можна використовувати СОМ-обєкт для вузькоспеціалізованих обчислень, що мають відношення до брокерських розрахунків. Такий обєкт може бути розроблений групою, що спеціалізується на автоматизації саме в цій наочній області, а використовуватися всіма підрозділами компанії. Він може мати властивості і методи для збереження, прочитування і обробки інформації, але не мати засобів її візуального уявлення.

І нарешті, деякі сом-обєкти є досить значними частинами додатку або просто повним додатком, який надає (exposes) свої функції зовнішньому світу. Такі додатки розробляються не тільки для роботи кінцевого користувача, але і для розробників, які можуть звертатися до них зсередини своїх продуктів.

Наприклад, додаток для передачі повідомлень по мережі звязку факсимільного зв’язку надає свої методи для використовування розробнику, який, звертаючись до них, може автоматизувати пересилку документа факсом. Додаток Microsoft Office надає засоби, які дозволяють розробнику використовувати його для дистанційного керування.

Суть моделі СОМ

Фактично перехід на СОМ-ідеологію - це перенесення концепції спеціалізації на рівень програмних продуктів.

Хорошим прикладом тому може служити додаток, обслуговуючий рахунки клієнтів. В більшості випадків принципи обслуговування рахунків не залежать від їх конкретної природи. Але проте, розробляючи додаток, який обробляє рахунки конкретного клієнта, було потрібне щось ще допрацьовувати або модифікувати в типовому додатку. Якщо вам повезе, то можна обійтися тільки модулем, який працюватиме в паралель з існуючим типовим додатком.

Розписати детально обробку рахунків - це робота на роки. Що ж робити? Багато хто купує типові проекти з подібними функціями, наприклад SBT, і далі перед ними відкриваються два шляхи.

- Спілкуватися з типовим додатком, записуючи дані безпосередньо в таблиці. Це значить, що потрібно відновити всі правила ведення рахунків і відстежувати їх дотримання в тій частині програми, яку доведеться розробити.

- Модифікувати куплений продукт, залишивши більшість його компонентів в первинному вигляді.

Жоден з цих шляхів легким не назвеш.

А зараз припустимо, що такий типовий продукт розроблений з урахуванням вимог моделі СОМ. В цьому випадку пакет надає безліч своїх функцій додаткам-клієнтам, які можуть з ним взаємодіяти. Тепер в додатку-клієнті потрібно розробляти тільки призначений для користувача інтерфейс і спеціалізовані функції, специфічні саме для вашого замовника, а за рештою функцій звертатися безпосередньо до типового додатку. І тепер на основі такого додатку, не змінивши в ньому ні стрічки коду, можна побудувати безліч спеціалізованих додатків.

Розподілена обробка за допомогою COM/DCOM

Оскільки СОМ-обєкти самі по собі є додатками (або досить істотною частиною додатку), вони існують у вигляді окремих файлів на диску (.ехе або .dll). Одна з найпривабливіших особливостей СОМ в тому, що можна розмішати ці файли на одному компютері мережі, викликати на іншому, а результати представляти на третьому, наприклад компютері клієнта.

Зупинимося стисло на цьому моменті.

Звичайно ми маємо справу з ситуацією, коли доступна по мережі програма виконується на робочій станції клієнта. Але це не те, про що мовилося трохи вище. В даному випадку йдеться про можливість виконувати програму, існуючу у формі СОМ-обєкту на одному компютері, в памяті іншого компютера, використовуючи ресурси його процесора, а доступ до результатів мати на третьому компютері - робочій станції клієнта, звідки і поступає запит на виконання всієї цієї операції.

Це називається розподіленою моделлю COM (Distributed COM - DCOM). Уявіть перспективи, які відкриваються при цьому в плані масштабування додатку, - збільшення кількості обслуговуваних клієнтів.

Що потрібно знати для практичного використання моделі СОМ

Не так багато. Якщо ви вже освоїли роботу з обєктами, методами, властивостями, подіями і іншими премудростями, можна відразу приступати до вивчення СОМ. Єдина різниця в тому, що вам не доведеться створювати СОМ-обєкти самостійно. Це за вас вже зробили інші. Якщо ж ви турбуєтеся про можливі ускладнення при використанні коду, розробленого на стороні, то в цьому робота з СОМ-обєктами ні чим не відрізняється від інших. Найскладніше - освоєння методів і властивостей вживаного СОМ-обєкту. Якщо він добре документований, то з цим не повинне виникнути ніяких ускладнень.

Як використовувати СОМ-обєкт

Ним можна користуватися точно так, як і з будь-яким іншим обєктом. Для того, щоб одержати посилання на СОМ-обєкт, потрібно використовувати функцію CreateObject (). Єдина складність - потрібно знати імя класу цього обєкту. Для додатку Excel, наприклад, це буде Excel.Application, а для Word- Word.Application.

При зверненні до CreateObject () Visual FoxPro спочатку аналізує імя класу, обєкт якого потрібно створити. Виконується такий аналіз в наступному порядку:

1. Базові класи Visual FoxPro.

2. Класи, визначені користувачем, які розміщені в памяті в порядку їх завантаження.

3. Класи в поточній програмі.

4. Класи в VCX-файлі бібліотеки, відкритою командою set classlib.

5. Класи у файлах процедур, відкритих командою set PROCEDURE.

6. Класи в послідовності виконуваних програм Visual FoxPro.

7. Реєстр OLE (якщо раніше була команда SET oleobject on).

Після того, як буде сформовано посилання на обєкт, можна звертатися до нього точно так, як і до будь-якого створеного в програмі обєкту класу Visual FoxPro.

Але зверніть увагу на відмінність в імені класу, обєкт якої створюється. Звичайно використовується імя класу, що складається з одного слова. Для сом-обєкту використовується імя класу з двох слів, перше з яких відповідає імені додатку, а друге - імені класу усередині цього додатку.

Якщо вам здастся, що все це ви вже чули, коли йшлося про OLE-автомат, ви будете недалекі від істини. Автоматизація OLE є не що інше, як частина моделі СОМ. Отже, якщо ми говоримо OLE, то маємо на увазі СОМ.

Що відбувається при зверненні до сом-обєкту

При установці додатку, який грає роль серверу СОМ, в реєстрі Windows реєструється як сам додаток, так і всі його класи. Наприклад, подивіться в розділ реєстру Windows, що відноситься до Visual FoxPro, який також є сервером СОМ.

Можливості Visual FoxPro як COM-клієнта

Тепер розглянемо, які ж в цьому плані можливості програмного продукту Visual FoxPro.

ФУНКЦІЯ CREATEOBJECT ()

Як вже наголошувалося вище, за допомогою функції CREATEOBJECT () можна створити посилання на СОМ-обєкт. Потрібно підкреслити, і це дуже істотно, що при зверненні до CREATEOBJECT () завжди створюється новий обєкт.

Проведемо експеримент. Запустіть наступні команди з вікна команд:

Ох=CreateObject(Word.Application)

Оу=CreateObject(Word.Application)

А зараз викличте на екран діалогове вікно Close Program в Windows 95/98 (для цього потрібно натискувати CtrJ+Alt+Del). В NT те ж саме можна зробити за допомогою Task Manager. Після цього порахуйте, скільки екземплярів додатку WinWord запущено. Їх напевно виявляться не менше два (можливо, раніше у вас ще був відкритий цей редактор).

Тепер продовжимо наші ігри. Поверніться в Visual FoxPro і звільніть змінні Ох і Оу. Більш того, можна навіть закрити взагалі додаток Visual FoxPro. Знову порахуйте, скільки екземплярів додатку знаходиться в роботі. Їх виявиться знову два. Для того, щоб позбутися запушеного додатку СОМ-серверу, потрібно звернутися до його методу Quit ().

Наш простенький експеримент виявився вельми повчальним - будьте дуже уважні при створенні СОМ-обєктів в додатку. Перевірте, чи не був аналогічний обєкт вже створений раніше. Врахуйте, що кожний новий додаток-сервер відтягує на себе значні ресурси памяті, яку можна використовувати набагато ефективніше. Якщо вам знадобиться одержати посилання на раніше запушений СОМ-обєкт деякого класу, використовуйте функцію GetObject ().

ФУНКЦІЯ GETOBJECT ( )

Функція GETOBJECT () певною мірою аналогічна за призначенням вже розглянутої функції CREATEOBJECT (). Вона приймає два параметри. Перший - імя файлу, який потрібно відкрити, а другий - імя класу, з яким передбачається працювати.

Функція GETOBJECT () застосовується в двох випадках:

- для отримання посилання на існуючий файл;

- для отримання посилання на раніше запущений додаток-сервер.

Отримання ссилки на існуючий файл

Насамперед функція GETOBJECT () може бути використана для отримання посилання на файл, зареєстрований в OLE-розділі системного реєстру.

Припустимо, ви хочете відкрити файл BUDGET.XLS, який знаходиться в кореневому каталозі диска С:. Виконати це можна двома способами. Перший - створити земпляр сом-серверу Excel функцією CREATEOBJECT () і потім викликати його метод для відкриття файлу, що цікавить вас. Другий - безпосередньо відкрити файлфункцією GETOBJECT ():

oExcel = GetOBJECT(с:\budget.xls).

При цьому одночасно буде створений екземпляр обєкту Excel, відкритий файл і одержано посилання на нього.

Зверніть увагу - Visual FoxPro навіть не довелося пояснювати, що запрошуваний файл є файлом Excel. Windows вже відомо, що файли з розширенням .xls є листами Excel, і операційна система поступає відповідно.

Якщо ситуація не так однозначна, як в даному випадку, тобто розширення імені файлу не визначає однозначно додаток, який з ним оперує, потрібне в другому параметрі виклику функції getobject () вказати імя СОМ-класу (додатку-серверу).

До сказаного слід додати: функція getobject () настільки кмітлива, що другий раз не запускатиме вже працюючий додаток, а приєднає до нього файл, що цікавить вас.

Отримання ссилки на раніше запущений додаток-сервер

Якщо ви бажаєте одержати тільки посилання на раніше запущений додаток-сервер, достатньо при виклику функції GETOBJECT () опустити перший параметр:

oExcel = GetOBJECT(, Excel.Application)

Якщо виявиться, що ви промахнулися, тобто додаток не був раніше запущено, зявиться повідомлення про помилку OLE.

Читаючи розділ 21 ви зможете переконатися на прикладах, як зручно користуватися цією функцією для отримання посилань на додаток-сервер без запуску його додаткових екземплярів.

Команда SET OLEOBJECT

За замовчуванням Visual FoxPro шукає клас, вказаний в CREATEOBJECT (), в реєстрі Windows, якщо він не був знайдений у всіх попередніх групах класів, як про це було сказано вище. Цю функцію можна відключити установкою SET OLEOBJECT off. Фактично при цьому відключається можливість роботи з СОМ-обєктами.

Коли в цьому може виникнути потреба? Коли ви упевнені, що з СОМ-обєктами працювати не будете, і бажаєте зберегти час і ресурси, позбавивши систему від необхідності проглядати реєстр у пошуках того, чого там явно нема.

Якщо при цьому ви турбуєтеся про можливість роботи з елементами управління ActiveX, то цього робити не варто. Така настройка не перешкоджає роботі з ними, оскільки Visual FoxPro знає про те, що це OLE-обєкти, і автоматично завантажує засоби підтримки OLE перед тим, як їх відкрити.

У будь-якому випадку настройка зачіпає тільки роботу з тими обєктами, які явно специфіковані в коді програми.

І ще одне зауваження. Оскільки функція GETOBJECT () завжди має справу з OLE-обєктами, то при установці SET OLEOBJECT OFF функція поверне код помилки.

Функція ComClassInfo ()

Функція ComClassInfo () використовується для отримання інформації з системного реєстру про раніше створені СОМ-обєкти. Перший параметр функції, oObject, представляє ссилку на обєкт, інформація про який вас цікавить. Другий параметр, iІnfoCode, є числом, яке визначає, яка саме інформація повинна бути витягнута. Можливі значення iІnfoCode приведені в табл. 20.1.

Таблиця 20.1. Інформація, що повертається функцією Comciassinfо () при різних значення параметра iinfoCode

Значення ilnfoCodе Інформація, що Повертається
1 (значення по замовчуванню)

Програмний ідентифікатор обєкту (ProgID). Цей ідентифікатор задає вхід реєстру, який асоціюється з CLSID. Вважайте, що це імя, однозначне повязане з CLSID. Кожна версія програми має власний програмний ідентифікатор. Наприклад, ProgID для Visual FoxPro 6 буде Visual.Foxprо.Applcation.6, а для Visual FoxPro 5 - Visual.Foxprо.Application.5. Ідентифікатор ProgID також є імям класу, яке можна використовувати для створення обєкту СОМ-серверу. Наприклад, можна звернутися до createobject () таким чином:

оVFP5=CREATEOBJECT(Visual.Foxpro.Application.5) оVFP6=CREATEOBJECT(Visual.Foxpro.Application.6)Але, як правило, небажано, щоб додаток був жорстко привязаний до певної версії , СОМ-серверу. Тому має сенс, передавши як перший параметр Visual. Foxpro .Application, запитати у реєстру, яка з версій встановлена на даному компютері (а якщо встановлено декілька версій, то яка з них більш нова), і створювати обєкт СОМ-серверу саме цієї версії

2 Програмний ідентифікатор, не залежний від версії (VersionlndependentProglD). VersionindepencientProgiD асоціює ProgID з CLSID. Він використовується для визначення останньої версії обєкту додатку, посилаючись на його клас, і не змінюється від версії до версії
3

Оригінальне англійське імя обєкту, про який прийнято говорити як про „дружнє” імя (friendly name)

4 Идентификатор класу объекта

Ось яке значення буде повернено функцією ComClassinfo () при завданні як перший параметр Excel.Application і при різних варіантах значень другого параметра:

1 Excel.Application.8

2 Excel.Application

3 Microsoft Excel 97 Application

4 { 00024500-0000-0000-COOO-00000000004 6}

Функція CreateObjectEX ()

Як було описано вище, модель DCOM припускає, що додаток COM-серверу розміщений і виконується на різних компютерах мережі. Як правило, комп’ютер клієнта конфігурується так, щоб знати, де знаходиться СОМ-сервер, і стандартна функція Createobject () може працювати без жодних додаткових фокусів. Використовування функції CreateObjectEX () дозволяє обійтися без спеціальної конфігурації компютерів мережі і безпосередньо специфікувати потрібний компютер.

Це дуже зручно у тому випадку, коли бажано розподілити навантаження між декількома компютерами в мережі. Використовування CreateObjectEX () можливе в операційній системі Windows NT 4.0 або більш старшій версії або в Windows 95/98 зі встановленим механізмом DCOM.

Хай вас не збентежує, що при усіканні імені функції CreateObjectEX () до 13 символів воно виглядає як CreateObjectE (). Це все одно та ж сама функція CreateObjectEX().

Функція ComArray ()

В Visual FoxPro найчастіше приймається, що початковий елемент масиву має індекс 1. Але це не обовязково. В інших мовах програмування початковий елемент має індекс 0.

Функція ComArray () дозволяє визначитися з тим, як передаватимуться масиви в СОМ-обєкт. В результаті буде зареєстровано, яким чином здійснюється обмін масивами з конкретним COM-обєктом.

Функція має два параметри.

oObject Посилання на СОМ-обєкт, до якого адресується запит або який

змінюється

nSettinga Це необовязковий числовий параметр, який визначає спосіб обміну

масивами з COM-обєктом. В табл. 20.2 приведені його можливі

значення. Якщо цей параметр опушений, функція повертає поточну

установку для даного сом-обєкту

Таблиця 20.2. Спосіб передачі масиву в СОМ-обєкт при різних значення параметра nSettings

Значення nSettings Опис
0 Перший елемент масиву має індекс 0, і масив передається в СОМ-обєкт по значенню
1 (за замовчуванням) Перший елемент масиву має індекс 1, і масив передається в СОМ-обєкт по значенню . Така настройка сумісна з попередніми версіями Visual FoxPro
10 Перший елемент масиву має індекс 0, і масив передається в СОМ-обєкт по ссилці
11 Перший елемент масиву має індекс 1, і масив передається в СОМ-обєкт по ссилці

Зверніть увагу - настройка у функції сприймається системою тільки при передачі масиву в СОМ-обєкт з використанням наступного синтаксису:

oObject.Method(@laArray)

Якщо в цьому виразі опустити символ (@), то в СОМ-обєкт буде переданий тільки перший елемент масиву і всі настройки, виконані в ComArray (), будуть проігноровані.

Visual FoxPro як СОМ -сервер

Ми зараз, власне, розглянули, як використовувати в додатку Visual FoxPro звернення до інших СОМ-серверів. Але цим можливості СОМ-технології в поєднанні з Visual FoxPro не вичерпуються. Можна створити в середовищі Visual FoxPro власний СОМ-сервер. Про це піде мова в розділі 22. Але спочатку в розділі 21 ми розглянемо на прикладах технологію програмування додатку - клієнта СОМ в середовищі Visual FoxPro, яке здатне взаємодіяти з іншими додатками з обширного гардероба Microsoft Office.

Управління обєктами СОМ -додатку

Зверніть увагу на код на самому початку програми CustRpt.PRG, який організовує запуск Excel. Спочатку викликається функція GetObject (), а потім, якщо GetObject () поверне NULL, CreateObject (). Це зроблено для того, щоб запобігти повторному запуску Excel.

Таку ж методику запуску можна застосувати і до будь-якого іншого СОМ-серверу. Тут мимовільно виникає ідея створити універсальну процедуру запуску СОМ-серверу. Програмний код такої процедури приведений в лістингу 21.5. Прогляньте цей лістинг - численні коментарі допоможуть розібратися в деталях виконання процедури.

Лістинг 21.5.21Code05 - процедура запуску СОМ -серверу

*- Програма..: GETCOMINSTANCE.PRG

*- Версія.....: 1.0

*- Автор......: Menachem Bazian, CPA

*- Дата.......: August 23, 1998

*- Проект.....: Using Visual FoxPro 6 Special Edition

*- Copyright (з) 1998 Menachem Bazian, CPA, All Rights Reserved.

*- Компілятор.: Visual FoxPro 06.00.8141.00 for Windows

*- Опис...:

*- Зміни..:

*- Універсальна процедура запуску сом-серверу.

-------------------------------------------------

LPARAMETERS tcCOMServerClass, tcDocumentFileName

*- Параметр tcCOMServerClass - імя класу СОМ-серверу

*- обєкт якого необхідно створити.

*- Наприклад excel.application.

*- Перевіримо, чи переданий перший параметр.

ASSERT TYPE(“tcCOMServerClass) = С;

MESSAGE You must provide а character parameter to

GETCOMINSTANCE.

IF PCOUNT () = 0 OR TYPE (tcCOMServerClass) # c

RETURN .NULL.

ENDIF

*- Раз ми сюди дійшли, значить параметр переданий правильно

*- і можна спробувати створити обєкт COM-серверу.

*- Спробуємо це зробити за допомогою GETObject ()

LOCAL loCOMInstance, lcOldError

lcOldError = ON(ERROR)

*- Перевіримо, чи переданий другий параметр.

*- Якщо параметр - імя файлу - переданий, то потрібно сформувати

*- посилання на цей файл.

*- Інакше потрібно просто створити обєкт серверу.

.IF PCOUNT () = 2 AND;

TYPE(tcDocumentFileName)=с AND ;

FILE(tcDocumentFileName)

ON ERROR loCOMInstance = .NULL.

loCOMInstance=GetObject(tcDocumentFileName,

tcCOMServerClass)

ON ERROR lcOldError

ELSE

*- В цьому випадку не було передано імя файлу

*- з яким повинен працювати сервер.

ON ERROR loCOMInstance = .NULL.

loCOMInstance = GetObject(, tcCOMServerClass)

ON ERROR lc01dError

IF ISNULL(loCOMInstance)

loCOMInstance = CreateObject(tcCOMServerClass)

ON ERROR blcOldError

ENDIF

ENDIF

RETURN loCOMInstance

Для чого можна використовувати СОМ-сервер

В розділах 20 і 21 обговорювалася можливість використовування в програмі на Visual FoxPro засобів COM-серверу, як який виступали деякі додатки з комплекту Microsoft Office. Але врахуйте, це тільки початок нашого оповідання про можливості вживання ідей моделі СОМ до Visual FoxPro. За допомогою засобів Visual FoxPro можна створювати не тільки СОМ-клієнти, але і СОМ-сервери.

Масштаби вживання додатків в даний час безперервно змінюються. Якщо раніше додаток, як правило, працював тільки на тому компютері, на якому було встановлено, то тепер воно розподіляється не тільки в межах локальної мережі, але і по корпоративній мережі Intranet або по глобальній мережі Internet. Гостро відчувається необхідність нового підходу до побудови додатків, розрахованих на доступ з боку безлічі користувачів.

Таким новим підходом є структура багатошарового додатку (multi-tiered арplication), який компонується з безлічі логічно закінчених шарів. Верхній шар такого пирога - призначений для користувача графічний інтерфейс, нижній - дані. Між ними лежать шари, які відповідають за дотримання виконання певних правил обробки даних і їх передачу.

Засобів для створення верхнього шару превелика кількість. Microsoft ратує за вживання броузероподібного призначеного для користувача інтерфейсу, який по ряду причин вважається самим відповідним більшості користувачів. По-перше, якщо графічний інтерфейс сформований засобами HTML, DHTML, ASP або ним подібними, звернення до додатку виконується простим клацанням миші. Фактично все, що вимагає клієнт від такого інтерфейсу, - це вивести його на потрібну Web-сторінку. Що може бути простіше? Такий інтерфейс також полегшує упровадження оновлених версій додатків. Важливий і так званий людський чинник: користувач має справу з однотипним інтерфейсом для більшості (а краще для всіх) задач, з якими йому доводиться стикатися. Отже розробникам хочеш не хочеш потрібно підстроюватися під часто найвживаніші програми; а що зараз використовується частіше, ніж Internet Explorer?

На нижньому шарі також можуть бути різні засоби зберігання даних - програми Visual FoxPro, SQL-сервер або бозна-що ще.

Механізм створення проміжних шарів - це СОМ-інтерфейс. Верхній шар Створює обєкт середнього шару, який передає дані туди і назад між сховищем і споживачем.

Загалом, головну думку попереднього обговорення можна сформулювати так: в багатошаровому додатку середній шар є сукупність СОМ-серверів. А далі за логіка вчинено проста. Ніхто не може змагатися з Visual FoxPro в простоті обробки даних. Visual FoxPro має чудово організоване объектно-орієнтоване середовище розробки. Так хто перший кандидат на роль базового продукту для побудови середнього шару? Найдогадливіші вже зрозуміли. Правильно! Visual FoxPro!

Нижче в цьому розділі я продемонструю на прикладі обгрунтованість вашого вибору. А головне, при цьому ви самі переконаєтеся, як в середовищі Visual FoxPro до смішного просто створити СОМ-сервер.

Створення Сом-серверу

Тепер, узявши створений клас за основу, можна побудувати СОМ-сервер. Процес цей нескладний.

1. Модифікуйте клас.

2. Виведіть на екран діалогове вікно Class Info (командою ClassClass Info), показане на мал. 22.1.

3. Встановіть прапорець OLE Public.

4. Закрийте діалогове вікно.

5. Збережіть клас.

Установка прапорця означає, що клас надаватиме свої властивості і методи, як обєкт OLE.

Мал. 22.1. Діалогове вікно Class Info

Тепер залишилося створити виконуваний модуль або модуль DLL з тим, щоб можна було зареєструвати сервер. Для цього спочатку знадобиться створити проект. Цей проект, назвемо його TS.PJX, потребує бібліотеки класів і запускаючої програми - файлу з розширенням .prg. Цей файл я назвав MAIN.PRG, і в ньому буде всього один рядок коду:

*- Програма..: MAIN.PRG

*- Версія.....: 1.0

*- Автор......: Menachem Bazian, CPA

*- Дата.......: September 8, 1998

*- Проект.....: Using Visual FoxPro 6 Special Edition

*- Copyright (с) 1998 Menachem Bazian, CPA, All Rights Reserved.

*-- Компілятор.: Visual FoxPro 06.00.8141.00 for Windows

*-- Опис...:

*- Зміни..:

*************************************************

RETURN

Тестування СОМ-серверу зовні середовища Visual FoxPro

Отже, неначебто все вийшло, як задумано. Але потрібно ще перевірити наш сервер і в іншому операційному середовищі, тобто з використовуванням як клієнт іншого додатку. Візьмемо як таке Excel.

Модель СОМ в N-шаровому додатку клієнт/сервер

В цьому розділі ви познайомилися з технологією розробки СОМ-ссрвера в середовищі Visual FoxPro. Був представлений приклад СОМ-серверу і розглянуті основні його функції. Такого роду СОМ-сервер ідеально вписується в структуру N-шарового додатку клієнт/сервер.

Той СОМ-сервер, про якого йшла мова в цьому розділі, є проміжним в тришаровому пирозі додатку. Роль нижнього шару також грає Visual FoxPro, а роль інтерфейсу з користувачем надана Excel.

З упровадженням Internet додаток стає розосередженим справді в географічних масштабах. Використовування броузероподобного інтерфейсу з користувачем на базі ASP, DHTML, XML, XSL і подібних технологій відкриває широкі можливості для проектування клієнтів СОМ. Включення ж серверів на базі Visual FoxPro в середину багатошарової конструкції розподіленого додатку дозволяє оптимально використовувати можливості кожного з програмних продуктів.

Скачать архив с текстом документа