Поняття про 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 (для цього потрібно натискувати
Тепер продовжимо наші ігри. Поверніться в 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 (командою Class Class 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 в середину багатошарової конструкції розподіленого додатку дозволяє оптимально використовувати можливості кожного з програмних продуктів.