Немного истории
Залогом успешного развития современной информационной системы предприятия является способность ее составляющих к интеграции. Любые приложения, эксплуатируемые в сети корпорации, должны “уметь” использовать функциональность и данные других приложений, причем на взаимной основе. Было бы идеально, если бы доступ к функциональности и данным поддерживался не только на одном компьютере, но и в масштабах всей сети предприятия и даже Internet. Исходя из этих требований и возникла концепция распределенных объектов, принципиально изменившая подходы к проектированию информационных систем.
Сегодня лидерами в данной области являются два технологических стандарта - Component Object Model (COM) корпорации Microsoft и Common Object Request Brocker Architecture (CORBA), автором которого является Object Management Group. При этом если спецификация CORBA призвана обеспечить совместимость приложений (компонентов) на разных платформах, то COM - это стандарт, ориентированный Microsoft исключительно на собственные технологии. Его прообразом была технология OLE (Object Linking and Embedding), предназначенная для создания составных документов путем интеграции офисных приложений Microsoft и определяющая протокол их взаимодействия. Следующим шагом развития OLE стала технология ActiveX, породившая огромный рынок прикладных компонентов. Например, на сайте www.componentsource.com можно найти свыше 1500 компонентов различной степени сложности - от простых элементов графического интерфейса до сложных решений в области анализа данных или электронной коммерции. Распределенные COM-объекты (Distributed COM) вышли на уровень межкомпьютерной интеграции.
Каждый стандарт имеет своих приверженцев из числа разработчиков корпоративных систем, причем компании, стремящиеся к универсальности своих программ, тяготеют к CORBA, а ярые сторонники технологий Microsoft - соответственно к COM. Однако, по мнению экспертов, их противопоставление непродуктивно, и ИТ-организации должны использовать обе технологии.
С точки зрения практического опыта использования технологий интеграции интересен пример датской компании Damgaard (www.damgaard.com) - разработчика финансово-управленческих систем. Она предлагает два продукта - многоплатформную финансово-управленческую систему Concorde (Windows NT/2000 и различные диалекты UNIX - IBM AIX, HP-UX, Sun Solaris, SCO, UnixWare, TRU64 и Linux) и ERP-систему нового поколения Axapta (см. PC Week/RE, № 13/2000, c. 35), ориентированную исключительно на платформу Microsoft. Соответственно и проблемы интеграции с внешним миром в Axapta решаются с помощью технологий COM/DCOM.
Пример из жизни: интеграция Axapta с внешними приложениями
Используя COM-технологию, Axapta может взаимодействовать с внешними объектами двояко: посредством вызовов других COM-объектов из прикладного кода или путем встраивания в формы готовых элементов ActiveX (визуальное программирование). На рис. 1 отражен эпизод, в котором говорящий персонаж (Microsoft Agent) озвучивает строки плана счетов.
Рис. 1. Использование COM-агента Microsoft для озвучивания текстовой информации
Как правило, 90% работы с объектами ActiveX сводится к визуальному программированию: на форму “бросается” требуемый объект и подстраиваются его свойства. На рис. 2 в форму Axapta внедрен объект, имитирующий работу электронной таблицы MS Excel. С его помощью можно легко запрограммировать расчеты в таблице, а также (методом cut-and-paste) импортировать данные из других приложений.
Рис. 2. Электронная таблица MS Excel встроена в форму Axapta
Еще один пример применения COM-технологий в Axapta - Axapta Web Deployment Client (AWDC - элемент ActiveX). Он служит для дистанционной установки клиентских приложений Axapta через Internet. Все параметры сеанса работы удаленного пользователя (база данных, язык интерфейса и др.) “зашиты” в свойствах объекта и настраиваются администратором в централизованном порядке. Для установки “клиента” удаленному пользователю достаточно открыть нужную страничку в Internet и щелкнуть по кнопке - все остальное автоматически выполнит AWDC.
Технология AWDC легла в основу демонстрационного сайта Axapta (www.axaptademo.com), на котором все желающие могут поработать с этой системой в реальном времени, правда, в демонстрационном режиме: данные нельзя вводить и редактировать, а средства разработки отключены.
Интеграция внешних приложений с Axapta
Основу интеграции составляет специально разработанный COM-объект (Axapta COM Connector), выполняющий функции шлюза к бизнес-логике системы - классам Axapta. Таким образом, пользователи могут легко применять функциональность Axapta в своих собственных или в популярных офисных приложениях - MS Excel, MS Word - например, для построения сложных отчетов, требующих данные из разных источников. При этом возможности интеграции не ограничены: любое приложение, поддерживающее стандарт COM/DCOM, может быть интегрировано с Axapta.
И наконец, с Axapta легко работать из Web-приложений. Интерфейс с Internet обеспечивает Axapta Internet Connector (AIC), созданный на базе Axapta COM Connector. Посредством AIC можно “стучаться” к Axapta из Web-страниц в формате ASP. Поддерживая работу с пятью основными объектами MS Transaction Server (request, response, server, applicationObject и sessionObject), AIC позволяет генерировать Web-странички изнутри Axapta на коде X++. На этих принципах построен модуль дистанционного обслуживания клиентов в Axapta - готовое решение для создания Internet-магазинов.
Вместо эпилога
Таким образом, применение компонентного подхода как средства интеграции приложений обеспечивает поставщикам подобных продуктов ряд конкурентных преимуществ. Во-первых, потребители получают открытую систему, расширять которую можно не только изнутри, но и снаружи - за счет подключения к системе готовых компонентов собственного производства или от сторонних поставщиков. Во-вторых, относительно легко реализуется n-уровневая модель архитектуры клиент-сервер. И, наконец, приложения, построенные на основе COM-компонентов, становятся многократно используемыми - их бизнес-логика может быть активизирована извне.
С автором статьи можно связаться по адресу: nvs@columbus.ru.