*- посилання на цей файл.
*- Інакше потрібно просто створити об'єкт серверу.
.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 в середину багатошарової конструкції розподіленого додатку дозволяє оптимально використовувати можливості кожного з програмних продуктів.