СТАТЬЯ | 30.07.01 |
ActiveX компоненты в Centura Team Developer: принципы и технология применения
С. А. Большаков
Технологии программирования постоянно развиваются и совершенствуются. Несомненным достижением в этом направлении является широкое распространение взаимосвязанных друг с другом СОМ и ActiveX технологий. Поэтому неудивительно, что все крупные создатели средств разработки информационных систем прилагают значительные усилия для того, чтобы идти в ногу со временем и интегрировать новшества. Этим объясняется включение в Centura Team Developer 2000 механизмов поддержки СОМ и ActiveX (оно состоялось, если точно, еще в предыдущей версии). Необходимо отметить, что и в этом случае, по хорошей традиции, решения Centura ориентированы на пользователя: достаточно сложные проблемы могут быть решены просто, но, при необходимости, сохраняется возможность и перейти на нижний уровень для "дотошного" ручного программирования. Я такой подход называю "золотой серединой".
Технологии СОМ (Component Object Model) и механизмы ее адаптации в приложениях ActiveX обеспечивают два основных преимущества: обеспечение высокой степени использования типовых программных решений и внедрение возможностей распределенной обработки данных. Несомненно, можно найти много других достоинств, но об этом речь пойдет в другой статье ("COM технологии в CTD – просто и доступно каждому программисту " того же автора). Первое выделенное свойство позволяет рассматривать программные компоненты, как независимые "черные ящики" интегрируемые в операционную среду. За счет унифицированного стандарта интерфейса методы включенных объектов становятся доступными в приложениях самого различного применения. Распределенная обработка обеспечивает работу на разных вычислительных средствах, разных платформах технических средств, в различных сетях, включая и Интернет. Интеграции вычислительных ресурсов, а, в конечном счете, и интеллектуальных (программы разрабатывают все), несомненно, обеспечит развитие информационных технологий еще более высокими темпами.
В очень упрощенном варианте включаемые компоненты (СОМ) могут рассматриваться как библиотеки взаимосвязанных процедур, которые используют унифицированный интерфейс. Более точно, следует говорить об объектах, которые создаются в клиентских приложениях на основе общих шаблонов, поведение которых определяется правилами, заложенными в логике СОМ сервера. В этом случае изменение правил поведения в рамках сервера не приводит к значительным изменениям в клиентских приложениях, причем в максимальном случае достаточно выполнить перегенерацию этих приложений, а в минимальном случае вообще ничего не надо предпринимать. Для клиентской части обычно автоматически порождаются заголовочные файлы, описания библиотек функций и классов, которые, по сути дела, и представляют собой AX описания. В зависимости от средств разработки и свойств включаемых объектов подобные описания могут быть представлены в виде: библиотек типов - *.TLB(type library), динамических библиотек - *.DLL, объектов управления - *.OCX, исполнимых модулей - *.EXE или заголовочных файлов библиотек ( для CTD - *.APL). CTD для своей работы использует любые из видов библиотек описаний, на основе которых генерируется интерфейсные APL, которые и подключается в приложение. Подключение АХ в CTD объектов автоматизировано, для чего используется специальная встроенная утилита - AX Explorer, возможности которой мы рассмотрим ниже. Таким образом, главной составляющей создаваемых и подключаемых объектов является интерфейс (Interface), который с позиции объекта может быть: входящим (Incoming), служащим для отработки методов и функций внутри объекта и исходящим (Outgoing), служащим для отклика на события в объекте со стороны клиентских приложений.
Для унификация доступа к классам и объектам предусматриваются специальные глобальные уникальные идентификаторы (GUID), которые позволяют обратиться к нужному объекту даже в таких глобальных сетях, как Интернет. GUID задаются для: классов (CLSID); для интерфейса (IID); для диспетчирования методов-функций и событий. Последние два идентификатора локализованы внутри сервера объектов. Глобальные идентификаторы объектов регистрируются в реестре операционной системы, что дает возможность клиентским приложениям получать доступ к нужному серверу.
Для взаимодействия клиента и сервера используются общие библиотеки, которые должны быть доступны и клиенту и серверу (СОМ libs), специальные классы и объекты Proxy для клиента и Stub для сервера. Эти специальные объекты обеспечивают упаковку и распаковку интерфейсной информации в/из передаваемых по сети сообщений. Обмен информацией в виде сообщений поддерживается протоколами RPC (Remote Procedure Call). На рисунке, расположенном ниже приведена упрощенная схема такого взаимодействия.
Рис. 1 Взаимодействие клиента и сервера.
Механизмы RPC используются, когда клиенты работают на одном компьютере, и когда они расположены на удаленных компьютерах.
Подключение AX в приложения CTD
Возможны три вида АХ объектов, подключаемых в приложения разрабатываемых в среде CTD:
Для визуального подключения АХ в приложения используется специальное окно, в котором необходимо нажать специальную кнопку (красный Х) и выбрать в списке нужный объект или элемент управления. После такого подключения, если объекты подключены в CTD в программу будут автоматически добавлены интерфейсные APL. На рисунке ниже панель объектов показана в состоянии выбора АХ объектов
Рис. 2 Окно выбора АХ controls и АХ объектов.
С помощью окна controls можно добавлять объекты управляющего типа и встраиваемые объекты. Кроме использования палитры объектов для подключения объектов можно использовать пункты меню, контекстное меню, ассистент кодирования и AX Explorer, который также берет на себя функции первоначального подключения АХ классов и компонент.
Возможности CTD по настройке и управлению AX
После подключения объектов в программу они становятся полноправными элементами приложения. Настройка основных параметров (размер, положение, рамки и т.д.) выполняется обычным способом, как и у стандартных объектов, посредством инспектора атрибутов. Специальные параметры настраиваются с помощью специальных окон свойств, которые встроены в АХ компоненты. Например, для компоненты Calendar Control вызывается окно настройки, представленное ниже на рисунке. Оно представляет собой совокупность закладок для настройки шрифта, цвета, способа вывода управляющего объекта на экран и т.д.
При добавлении объекта в приложения доступными становятся также: встроенные классы, новые типы сообщений, обрабатываемые приложением (message action), функции выполняемые с данным объектом (UDF- user define function) и многое другое.
Рис. 3 Пример окна настройки свойств объекта.
Подключение новых ActiveX объектов в среду CTD выполняется с помощью встроенной утилиты AX Explorer. Он может выполнять следующие функции: импорта интерфейсов и генерации классов в виде *.APL, просмотра библиотек объектов и контекстной справки по объектам. Ниже на рисунке представлено окно AX Explorer в режиме просмотра содержания АХ компоненты.
Рис. 4 Окна просмотра классов и свойств АХ компонента.
Данное окно показывает содержание библиотеки Microsoft Word 8.0 Object Library.apl, которая сгенерирована для MS WORD'97. Для управления данным окном предусмотрена специальная панель управления, которая дублируется контекстным меню. В левой части окна дан список классов, доступных для генерации, в правой части дано содержание выделенного класса: методы, свойства и события. В нижней части экрана дано информационное окно, в котором дано описание элементов выделенных в верхней части окна АХ Explorer.
При генерации возможно задавать следующие режимы формирования интерфейсной APL с новыми классами:
После подключения в программу объекты добавляются в дерево приложения и в OUTLINE. Далее они могут редактироваться обычным способом. Пример окна дизайнера CTD с подключенным объектом ax1 – типа AX_MSACAL_Calendar, приведен ниже на рисунке.
Рис. 5 Пример окна CTD с подключенным АХ объектом (ах1).
Рис. 6 Фрагмент окна приложения с подключенным АХ объектом (ах1).
В правой части окна проекта дизайнера CTD показаны объекты в раскрытом виде. В разделе обработки пользовательских сообщений (message action) показан специальный вид сообщений - событий, которые генерирует управляющий элемент "On NewMonth", оно инициируется при изменении месяца с помощью мышки или клавиш. Выше на рисунке приведен фрагмент окна с включенным объектом календаря. Это пример стандартного приложения описанного в документации и входящего в состав стандартных примеров CTD.
Кстати, в правой части окна приложения приведен другой объект, являющимся стандартным для CTD и построенный на основе ее собственного механизма построения объектов управления – QUICK OBJECT.
Основные классы для обеспечения работы AX в CTD
Для обеспечения работы механизмов СОМ и АХ в CTD добавлены специальные классы. Они подключаются при добавлении в программе специального модуля: Automation.apl. При подключении АХ объектов эта библиотека добавляется автоматически. Ниже в левой части окна дизайнера CTD показаны эти классы. На рисунке в правой части показано содержание класса интерфейса, в котором выделим: класс интерфейса наследуется (Derived From) от класса Object и раскрыта сгенерированная функция GetCountUser, в которой показан пример использования интерфейсной функции INVOKE c передачей и возвратом параметров.
Рис. 7 Основные классы для АХ поддержки.
Специальные классы CTD для АХ программирования имеют следующее назначение:
Дополнительные возможности CTD для поддержки технологии АХ
Для обеспечения механизмов OLE в CTD предусмотрен специальный тип объектов контейнерные АХ - Container controls (insertable objects). Для динамической работы с встраиваемыми объектами предусмотрены специальные функции. Ниже на рисунке приведен пример окна приложения с включенным в контейнер объектом MS WORD.
Рис. 8 Пример окна приложения с включенным объектом Wоrd.
При нажатии кнопки в окне поля переносятся в документ по установленным закладкам в тексте. Обратим внимание на то, что обеспечиваются полные возможности Wоrd, вплоть до проверки орфографии.
Отметим, что в CTD предусмотрена возможность настройки меню и панелей инструментов для включаемых объектов. Новые меню и панели инструментов включаются автоматически при активизации объекта.
Функции для встроенных объектов обеспечивают динамическое манипулирование ими и имеют следующее назначение:
CTD поддерживает два механизма обработки исключений при работе с АХ объектами: стандартный способ обработки с использованием единого механизма и окна ошибок и пользовательского способа обработки исключительных ситуаций. В случае пользовательской обработки создаются специальные объекты класса OLEERRORINFO, анализируется коды возврата и анализируется информация, поставляемая в случае ошибки. Если AX построены по стандарту, то указываются коды ошибки, справка по ошибке, идентификаторы выполняемых процедур.
Конечно, в одной статье трудно описать все особенности и тонкости использования АХ и СОМ технологий, но думаю, что данная статья будут полезна многим программистам и руководителям разработки, для того, чтобы сделать вывод о том, насколько целесообразно использовать данные механизмы в собственных проектах. На мой взгляд, простота реализации АХ и СОМ технологий в CTD подкупает, а областей применения достаточно много. Думаю также, что это станет дополнительным стимулом для знакомства с эффективными средствами разработки Centura Team Developer, сторонников которых становиться все больше у нас и заграницей.
Дополнительная информация
Дополнительную информацию Вы можете получить в компании Interface Ltd.
Отправить ссылку на страницу по e-mail
Обсудить на форуме Centura Software
Interface Ltd. Отправить E-Mail http://www.interface.ru |
|
Ваши
замечания и предложения отправляйте
автору По техническим вопросам обращайтесь к вебмастеру Документ опубликован: 30.07.01 |