3. Взаимодействие приложений в
информационных системах
ООП и визуальное проектирование позволяют создавать прекрасные прикладные
программы самого разного назначения. Но в настоящее время приложения, разрабатываемые для
различных предприятий и их подразделений, как правило, должны функционировать не
сами по себе, а являться частью некоторой информационной
системы. В этом случае один из основных вопросов — организация взаимного
общения приложений друг с другом и с хранилищами информации — базами данных (БД).
Как правило, приложения,
работающие в составе информационной системы, черпают информацию из баз данных, к
которым имеют доступ и другие приложения.
При этом естественным образом создается возможность общения приложений через
данные. Например, одно приложение может записать результаты своей работы
в БД, а другое — прочитать эти данные и использовать их в своей работе. Такое
простейшее общение
требует только одного — унификации данных, форматов их хранения и языка запросов к БД. Последнее решается,
чаще всего, с помощью языка SQL.
Во многих случаях подобного
общения через данные недостаточно для эффективной
работы системы. Приложение-потребитель данных не может ждать, пока кто-то запустит приложение,
поставляющее эти данные. Значит нужна возможность запускать из одного
приложения другие, передавая в них какую-то информацию.
Запуск внешнего приложения называется порождением процесса. Дочерний
процесс может выполняться в адресном пространстве родительского процесса, т.е. как бы встраиваться в
породивший его процесс, а может выполняться в другом,
собственном адресном пространстве и в другом параллельном потоке.
Запуск из одного приложения
других приложений позволяет использовать результат работы дочернего процесса, но
и только. Часто этого мало. Требуется обмен
информацией между приложениями, выполняющимися параллельно. Причем,
надо, чтобы этот обмен не зависел от того, на каком языке написано то или иное приложение. А при
работе в сети компьютеров, использующих разные платформы (Windows,
Unix,
Solaris
и др.), желательно обеспечить и независимость общения
от платформы.
Простейшими средствами
общения, появившимися еще на заре Windows,
являются разделяемые
файлы (файлы, к которым одновременно могут получать доступ
разные приложения), буфер обмена Clipboard,
доступный практически всем приложениям Windows,
и технология DDE
— динамического обмена данными. Использование
разделяемых файлов, баз данных и буфера обмена достаточно актуальны и сейчас
как простейшие средства связи приложений друг с другом. А технология
DDE
пожалуй, уступила место более современным способам
общения.
Позднее появилась
технология связывания и внедрения объектов (Object
Linking
and Embedding) —
OLE
1. Она позволяла создавать составные документы, включая, например, в
документ Word
таблицу
Excel. На смену этой
технологии пришла OLE
2, позволявшая разным программам предоставлять друг другу свои функции.
Пользуясь этой технологией, одно приложение может не просто вызвать
другое, но и обратиться к
отдельным его функциям, т.е. управлять им.
Следующим шагом на пути
совершенствования способов взаимодействия приложений друг с другом явилась
разработка COM
(Component
Object Model) — компонентной
модели объектов. Это стандартизованное описание функций (служб) программы, к которым она дает
доступ другим программам. При этом неважно, на каких языках написаны
программы и где они выполняются: в одном потоке, в разных потоках, на разных
компьютерах. Особенно расширяет эти возможности распределенная
модификация СОМ — DCOM.
Основой технологии СОМ является понятие
интерфейса. Каждый объект СОМ имеет несколько интерфейсов, дающих доступ к его функциям.
Клиенту передается указатель на требуемый ему интерфейс,
после чего клиентское приложение может вызывать описанные в интерфейсе функции.
На основе спецификаций СОМ и DCOM
разработан ряд современных технологий,
к которым имеют доступ приложения Delphi
и о которых подробнее сказано в следующем разделе. А
завершая данный раздел, необходимо сказать еще об одном
бурно развивающемся способе общения приложений — использовании глобальной
сети Интернет. В Интернет могут размещаться и базы данных, и серверы, с которыми
общается приложение пользователя. Сейчас эти протоколы используются в
очень многих локальных и корпоративных сетях.