(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

COM технологии в Centura Team Developer: просто и доступно каждому программисту

С. А. Большаков

Оглавление

Введение

Давно прошли времена, когда программа работала на одном компьютере, когда один единственный программный модуль решал все задачи; естественно они были не очень сложными… В настоящее время технологии программирования развиваются настолько быстрыми темпами, что программам стало тесно на одном компьютере. С другой стороны, практически невозможно представить, чтобы программную систему даже средней сложности создавал один программист - так усложнились задачи, так усложнилась техника, на которой функционируют информационные системы. Мы давно уже привыкли к тому, что программы работают в архитектуре "клиент-сервер": невозможно без этого представить работу СУБД (сервер БД) и работу Интернет сервиса (WEB серверы). С приходом СОМ технологий и стандартов в практику создания информационных систем, возможность построения серверов самых разных применений стала доступна и отдельному программисту, и небольшим группам программистов.

Данная статья посвящена вопросам построения СОМ приложений (клиента и сервера) на базе средств разработки Centura Team Developer (CTD). В своих решениях Centura обеспечивает максимальное удобство пользователей программистов для решения сложных задач. Такие принципы были заложены и при реализации механизмов поддержки СОМ, что обеспечивает, в конечном счете, доступные средства создания СОМ приложений и реализацию сложнейших программных архитектур. Технические решения базируются на основе системы предопределенных классов объектов и классов, генерируемых на основе их описания в клиентской части приложений. Предусмотрены многочисленные мастера подсказок (Wizard) для удобства пользователя.

СОМ технологии Centura обеспечивают три основные возможности:

  • Построение многозвенных программных систем (N-Tier), на основе механизмов СОМ сервера.
  • Подключение ActiveX объектов и их настройку.
  • Использование OLE механизмов для значительного расширения возможностей приложений, позволяющих минимизировать затраты на разработку программных систем, сделать их более совершенными.

Последние две возможности СОМ рассмотрены в другой статье - ActiveX компоненты в Centura Team Developer: принципы и технология применения. Поэтому здесь мы в первую очередь коснемся вопросов построения СОМ серверов и приложений взаимодействующих с ними.

СОМ технологии и СОМ объекты

Модель программ ориентированная на компоненты Component Object Model (COM) - это спецификация (стандарт) разработки Microsoft для построения сложных программных систем, основанных на объектно-ориентированной концепции. Компоненты представляются "черным ящиком", являются полно-достаточными с позиций: настройки, методов поведения, свойств-атрибутов, справочной системы, обработки исключительных ситуаций и т.д. СОМ объекты либо интегрируются в приложения клиента, либо обеспечивают их обработку на удалении, причем клиент может и не знать, что обработка выполняется на других вычислительных ресурсах.

Такой подход обеспечивает распределенную обработку данных, возможность автономной разработки и отладки значительных частей программного продукта и высокий уровень взаимозаменяемости и модифицируемости создаваемого программного обеспечения. Таким образом, к разработкам, практически каждой программной системы, привлекаются значительные интеллектуальные силы, что, в конечном счете, и обеспечивает бурное развитие информационных технологий. Отмечу попутно, что COM компоненты, приобретают свойства программного продукта и, несомненно, мы их скоро увидим на нашем рынке программных продуктов в отдельном исполнении, а не только в составе других программных изделий. В Интернет их уже сейчас можно найти в большом количестве.

Из целого ряда преимуществ, предоставляемых СОМ, можно выделить следующие основные достоинства этих технологий:

  • Возможности построения многозвенной архитектуры программных систем (N-Tier). Простейшим элементом такой архитектуры является двухзвенная: "клиент-сервер". Расширяя возможности клиента, который для других программ может выступать как сервер, можно построить архитектуру программной системы с любым числом звеньев (например, серверы приложений или WEB приложения). В этом случае может осуществляться распределенная обработка данных, а за счет универсальных протоколов и в сетях и в Интернет сложнейшая архитектура программных систем. CTD обеспечивает такую возможность на основе механизмов СОМ.
  • Независимость от языков программирования. СОМ серверы и клиенты могут быть написаны на разных языках, но взаимодействие между ними обеспечивается за счет стандартизованного интерфейса. Так, например, клиент может быть построен на базе ASP, а сервер на основе CTD.
  • Использование двоичных файлов для СОМ позволяет их многократно вызывать, обновлять версии, не затрагивая при этом работающих систем. Сопровождение таких систем упрощается: достаточно обновить СОМ составляющую и приложение будет работать с новым интерфейсом и даже выполнять новые функции, которые инкапсулированы в СОМ.

Интерфейсы и CoClass

Для построения СОМ сервера в его программе должны быть определены две составляющие: интерфейс и класс СОМ объекта - CoClass. Интерфейс содержит функциональность сервера, то есть набор функций и набор данных СОМ объектов. Среди данных могут выделяться переменные создаваемых объектов (переменные объекта) и общие переменные для всех объектов (переменные класса). Последние, по сути, являются статическими переменными класса. Функции, определенные в интерфейсной части, доступны пользователю клиентской части приложения. Данные инкапсулированы в объекте, который порождается на сервере, но они доступны посредством специальных функций-методов класса, которые может описать сам пользователь. Интерфейс имеет глобальный уникальный идентификатор GUID - IID.

Для обеспечения возможности взаимодействия с севером определяется CoClass, который наследуется от класса интерфейса. CoClass фактически представляет объект на сервере, и обеспечивает обработку событий, происходящих на сервере в клиентской части приложения. CoClass также имеет глобальный уникальный идентификатор GUID - CLSID. Описанию CoClass соответствует в клиентской части Proxy class, который автоматически генерируется. Можно создавать CoClass и с множественным наследованием от классов интерфейса, в это случае, мы можем получить комбинированный СОМ сервер. В одном сервере - приложении мы можем генерировать произвольное число классов интерфейса и классов СОМ объектов.

Для унификации описания Интерфейса и CoClass-ов в CTD предусмотрены специальные механизмы подсказок и мастер (Wizadr). Настройки переменных класса, переменных объекта и методов класса выполняются автоматизировано. Не исключается возможность и ручного кодирования текста в OUTLINE.

Построение COM серверов и их особенности

Ниже на рисунке показан фрагмент окна дизайнера CTD при создании класса интерфейса для простейшего примера приложения. Этот СОМ сервер суммирует два целых числа.


Рис. 1 Описание класса интерфейса для СОМ сервера.

Класс интерфейса назван IISerge, он содержит автоматически генерируемый GUID (можно задавать и собственный) и описание функций, одна из которых (summa) и выполняет непосредственно суммирование двух целых параметров. По завершению суммирования в клиентском приложении инициируется событие evEndSum (обработку см. ниже). Кроме того, в классе интерфейса определены: одна переменная класса - nServerContact, хранящая количество подключенных клиентов, и одна переменная объекта - nSumm, содержащее значение суммы.

На следующем рисунке дано описание CoClass, наследуемого от класса интерфейса. В этом описании присутствует генерируемый или задаваемый GUID - CLSID и описание событий, которые будут отрабатываться у клиента: evEndCum и evEndObj. Эти события инициируются внутри функций-методов интерфейсного класса, а, следовательно, из-за наследования и CoClass.


Рис. 2 Описание класса ISerge и событий evEndCum и evEndObj в нем.

При создании событий им, как и методам, автоматически присваивается специальный номер диспетчеризации (Dispath Number). После описания методов, переменных и событий СОМ сервер готов к компиляции.

Регистрация, компиляция и отладка

Компиляция и создание исполнимого модуля для СОМ сервера производится обычным способом, за небольшим исключением. При генерации СОМ нужно указать тип сервера. Возможны три варианта:

  • СОМ создается как DLL для локального совместного использования (in-process).
  • СОМ создается как ЕХЕ для локального использования как процесс (out-of-process)
  • СОМ создается как ЕХЕ для использования на сети с помощью MST (Microsoft Transaction Server).

Эти режимы задаются в окне настройки режимов создания СОМ (Build exe). После успешного создания сервер необходимо зарегистрировать, причем, если сделаны изменения и автоматически генерируется GUID для классов и интерфейса, то необходимо выполнить регистрацию заново и заново откомпилировать клиентское приложение. Для СОМ сервера задается универсальный идентификатор, называемый Universally Unique Identifiers (UUID). После всех этих операций СОМ сервер готов к работе. Вы можете запустить его под управлением CTD или автономно. Во втором случае необходимо задать параметр, определяющий число пользователей. Для отладки сервера нудно создать клиентское приложение и запустить его автономно.

Построение клиентских приложений и их особенности

Для построения клиентского приложения необходимо сгенерировать интерфейсную APL. Генерация выполняется с помощью АХ Exprorer CTD - встроенной утилиты. Подробно работа с ней описана в другой статье (Centura Team Developer - ActiveX компоненты: принципы и технология применения), поэтому мы здесь не будем на этом останавливаться. Отмечу только, что генерация основывается на выборе библиотеки типов (*.tlb), которая автоматически генерируется совместно с созданием исполнимого модуля СОМ сервера и помещается в тот же каталог. После выбора соответствующей библиотеки типов для генерации необходимо выполнить полную генерацию всех классов, событий и перечислений. В создаваемое новое клиентское приложение в раздел библиотек должна быть добавлена эта APL. Ниже на рисунке показано окно простейшего клиентского приложения, созданного для иллюстрации основных положений СОМ. Эта программа суммирует на сервере СОМ два целых числа, вводимых в полях формы.


Рис. 3 Пример клиентского приложения суммирующего на сервере.

Кроме кнопки суммирования в окне приложения выполняется индикация переменной класса, переменной объекта и числа подключенных пользователей. При нажатии на кнопки приложения вызываются функции СОМ сервера, результаты работы выводятся на экран в соответствующие поля. На рисунке выше представлена работа одного пользователя. На следующем рисунке представлена работа двух клиентских приложений. В этом случае мы видим, что общие переменные класса (Число пользователей и переменная класса) одинаковы, а переменные объекта различны.


Рис. 4 Два клиентских приложения, работающих с сервером.

Рассмотрим теперь особенности построения клиентских приложений на основе СОМ технологии. После подключения APL, для данного СОМ сервера, в раздел классов добавляются классы, которые соответствуют описаниям объектов сервера. Это следующие классы: функциональный класс - samplCom_IISerge для создания интерфейса (вызова функций) и Com Proxy class - samplCom_Iserge для обработки событий. Классы видны в левой части окна дизайнера CTD на рисунке ниже.


Рис. 5 Классы СОМ и обработка событий в evEndSumm в программе клиента.

При необходимости определения обработчиков событий нужно: создать наследника Com Proxy class и создать доступный объект этого класса. На рисунке показан новый класс App_Serge, который обеспечивает обработку события evEndSumm. Ниже на рисунке дана иллюстрация результатов генерации интерфейсного класса. Дан весь перечень доступных функций-методов (в левой части окна) и развернуто описания функции суммирования - summa (в правой части окна).


Рис. 6 Класс интерфейса samplCom_IISerge и метод summa.

Как видно из примера, перед вызовом метода с помощью универсальной функции INVOKE, передаваемые параметры помещаются в стек (PushNumber), а после выполнения функции - вызываются из стека (PopNumber). Затем стек очищается (FlushArgs). Эта функция (summa) сгенерирована автоматически с помощью АХ Explorer, и такое связывание называется статическим. Однако, создав необходимые классы и объекты, пользователь может сам в динамике выполнять операции вызова функций. При этом можно обеспечить и динамическое связывание. Для динамического связывания может быть использована переменная типа VARIANT, которая позволяет вызывать функции независимо от типов параметров.

Переменные классов и объектов, отладка СОМ

В СОМ сервере, как уже отмечалось, могут быть предусмотрены переменные класса и переменные объекта. Переменные объекта являются индивидуальными скрытыми данными, доступ к которым выполняется посредством функций-методов. Переменные класса (статические переменные) являются общими для всех объектов класса и сохраняют свои значения пока сервер запущен. Эти переменные могут быть доступны посредством методов-функций. Кроме этого в CTD приложении могут быть объявлены общие переменные, которые могут быть общими для группы СОМ серверов. Такие переменные описываются в глобальной части приложения. На рисунке ниже показан фрагмент клиентского приложения, в котором вызываются СОМ функции и, в частности функции доступа к переменным класса и переменным объекта.

В принципе, на стороне СОМ сервера нет необходимости объявлять описание окон интерфейса. Однако при отладке сервера такие окна могут потребоваться. В этом случае, мы можем описать окна, и их использовать при отладке приложений сервера, совместно с приложениями клиента. Если ресурсов компьютера достаточно, то можно запустить две версии CTD и производить одновременную отладку и клиентского приложения и программы СОМ сервера.


Рис. 7 Вызов методов summa, GetObjVar, GetClassVar и GetCountUser в программе.

Tread технологии

Если мы хотим изолировать объекты друг от друга, то CTD предлагает возможность построить СОМ сервер на основе Tread технологий. Для этого достаточно при генерации СОМ сервера указать специальный режим. В этом случае возможны разные настройки, в зависимости от использования сервера в локальном или удаленном режиме.

Коллекции

Для удобной работы в СОМ сервере в CTD возможно создание классов и объектов типа коллекция. Коллекции могут использоваться для хранения перечислимых констант (enum) или для хранения выборок (например, словарей списков). Определены методы этого класса, возможности настройки. Классы коллекций могут использоваться для наследования других классов и включаться в интерфейсную часть объекта. Работа с коллекциями подробно описана в документации, в библиотеку примеров включены специальные примеры с использованием коллекций.

WEB и COM

С использованием специальных WEB классов (Centura WEB Extention) строятся СОМ приложения для работы под управлением WEB. Эти приложения обеспечивают оперативный доступ к БД, они работают под управлением WEB Application manager. Процесс построения клиентских и серверных приложений во многом повторяет процесс построения обычных приложений, особенности его подробно изложены в документации на CTD. В состав библиотеки примеров входит специальное СОМ приложение, которое обеспечивает автоматическое переключение режимов работы для работы в режиме WEB и в обычном режиме.

Заключение

Отмечу, что в рамках данной статьи трудно осветить все вопросы и проблемы использования СОМ технологий. Однако думаю, что данная информация будет полезна разработчикам сложных информационных систем для определения стратегии их построения и выбора средств реализации. На мой взгляд, вариант, предлагаемый в CTD, является одновременно простым и обеспечивает высокий уровень профессионализма при программировании.



 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 06.08.2001 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
GFI WebMonitor Plus Edition - подписка на 1 год
TeeChart for .NET Standard Business Edition 2017 single license
Купить CommView for WiFi 1 лицензия
Advanced Data Export VCL Suite (with sources) + 1 Year Maintenance
GFI LanGuard подписка на 1 год (25-49 лицензий)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
СУБД Oracle "с нуля"
Краткие описания программ и ссылки на них
Проект mic-hard - все об XP - новости, статьи, советы
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100