. ........ . ........ . .  Октябрь/1999
. Современный бизнес невозможен без информации. В настоящее время на многих крупных предприятиях с большим объемом информационных ресурсов и интенсивным документо-
оборотом сложилась парадоксальная ситуация: информация существует, активно создается и потребляется, но она не упорядочена. Присутствуют документы, опровергающие друг друга. В таком потоке достаточно сложно найти интересующие данные, тем более трудно провести квалифици-
рованный анализ текущего состояния дел. Системы обработки данных реализованы на совершенно разных системах, начиная с dBASE подобных систем, и заканчивая мощными клиент серверными системами управления информацией. Иногда в различных подразделениях предприятия присутствуют смешанные решения.
. Публикация баз данных в среде WWW

Андрей Лапоухов
andrew@belsoft.vitebsk.by



Основная задача таких систем – оперативная обработка данных, они накапливают и архивируют данные иногда за несколько лет работы. Часто базы данных настолько разрастаются, особенно это касается dBASE подобных систем, что часть данных приходиться выгружать, архивировать и помещать на системы резервного копирования. Т.о. большие объемы данных, накопленных за время эксплуатации традиционных систем, остаются невостребованными. Один из возможных путей решения этой проблемы – связывание всех информационных потоков предприятия в единую информационную систему. Такие тяжеловесы в мире баз данных как Oracle, IBM предлагают законченную концепцию системы “Поддержки и принятия решений”, что реально подходит пожалуй лишь для очень крупных заказчиков, так как суммарная стоимость такого программно-аппаратного решения будет внушительной. Набор специфического программного обеспечения и оборудования плюс необходимо учесть внедрение и сопровождение такой системы, подготовку специалистов, обучение персонала. Другой из возможных путей интеграции информационного потока – использовать Internet/Intranet технологий внутри предприятия, т.е. опубликовать все необходимые данные на Web-сервере предприятия и обеспечить к нему доступ со всех клиентских рабочих мест. Две основных составляющих, на которые опирается такое решение: Web-сервер, реализующий поддержку протокола HTTP (в дальнейшем HTTP-сервер) и сервер баз данных (СБД) или любая из “настольных” СУБД. Рассмотрим основные подходы.
Common Gateway Interface (CGI)
CGI – интерфейс шлюзовой программы. Уже давно известный и хорошо себя зарекомендовавший метод создания динамических страниц. В том или ином виде этот интерфейс поддерживают практически все HTTP-сервера. Обычно CGI-шлюз это программа, написанная с помощью практически любых компилируемых или интерпретируемых языков. В случае интерпретируемого языка он должен поддерживаться HTTP-сервером. Обмен данными по протоколу CGI условно можно разбить на пять участков.
1. Выбор механизма передачи параметров с клиентской машины определяется способом доступа, который указывается в HTML-форме. Если используется метод GET, то передача параметров происходит с помощью переменных окружения, которые HTTP-сервер создает при запуске внешней программы. При методе POST для передачи данных используется стандартный ввод, а в переменных окружения определяется размер и тип передаваемой информации.
2. Web-сервер передает данные CGI-шлюзу через переменные среды окружения и запускает приложение. Производители HTTP-серверов могут поддерживать и другие способы передачи данных, так HTTP-сервер WebSite фирмы O’Reilly разделяет запрос на заголовки и содержимое и помещает эту информацию в переменные сервера. Значение этих переменных помещаются во временный INI-файл. Сервер передает полное имя этого файла (включая и путь) в командную строку запуска CGI-шлюза. 3. CGI-шлюз обращается к СБД, получает или передает ему информацию. 4. CGI-шлюз возвращает данные HTTP-сервер. Первая строка ответа должна содержать тип возвращаемого документа.
5. HTTP-сервер обрабатывает данные, принятые от CGI-шлюза (через поток ввода-вывода, файл) и передает на клиентский компьютер, где они отображаются в программе просмотра WWW (Рис. 1).

Рассмотрим достоинства CGI подхода. Изолированность CGI-шлюза. При его запуске HTTP-сервер порождает отдельный процесс в системе и при крахе шлюза это не отразится на самом HTTP-сервере, он останется в работоспособном состоянии. В большинстве случаев не “падает” и операционная система. Свобода выбора языка или инструментального средства для создания шлюза. Особенно это удобно для интегрированных средств, имеющих в своем составе функции для работы с СБД. Простота создания. Спецификация CGI достаточно проста по своей структуре и не требует дорогостоящего обучения для своего внедрения. Архитектурная независимость. CGI-шлюз независим от особенностей реализации архитектуры сервера. Но спецификации CGI присущи и серьезные недостатки. Главная проблема – ресурсоемкость этого процесса, поскольку на сервере для каждого нового запроса порождается новый процесс. При большом их количестве это заметно сказывается на работе самого HTTP-сервера. Нет постоянного соединения с СБД, то есть тратится время на подключение и аутентификацию, следовательно, снижается быстродействие. Плюс накладные расходы по компиляции данных с HTML-формы в SQL-запрос.
ActiveX. Подход Microsoft
Определение технологии ActiveX, чем-то похоже на вложенных матрешек. Подход ActiveX основывается на COM (Component Object Model) модулях многокомпонентных объектов, такая технология до недавнего времени называлась OLE (Object Linking and Embedding) - связывание и внедрение объектов, но теперь все это вытеснилось термином ActiveX (Рис. 2).

Стандарт ActiveX позволяет компонентам взаимодействовать по сети независимо от среды или языка, в котором они созданы. Подход ActiveX включает в себя серверную и клиентскую части: Клиентская – ActiveX на клиентских машинах реализуется с помощью программных библиотек (обычно поставляемых с Internet Explorer), также они могут быть установлены автоматически путем загрузки с удаленного сервера. Серверная часть – реализуется с помощью Microsoft Internet Information Server (IIS). Воспользовавшись языком сценариев можно на сервере осуществить доступ к СБД поддерживающим стандарт ODBC (Open Database Connectivity) . Под термином “языки сценариев” понимается язык VBScript (подмножество операторов языка Visual Basic, предназначенного для использования в HTML страницах, причем в его состав практически не входят операторы доступа к операционной и файловой системе ПК), JScript, Perl (Practical Extraction and Reporting Language) и т.д. ASP - это составная часть IIS, обеспечивающая легкость создания динамических систем. IIS обрабатывает страницы с расширением ASP и выполняет команды языка сценариев, маркируемых открывающимся тегом ‘<%’ и закрывающимся тегом ‘%>’. Они содержат команды для выполнения ActiveX компонент, размещенных на сервере. Так как они не пересылаются пользователю, на них не накладывается ограничения по вводу/выводу. Важным компонентом, входящим в состав ASP, является ADO (ActiveX Data Object) компонент для доступа к источникам данных. Использование серверных компонент позволяет более рационально расходовать серверные ресурсы, компоненты разделяются между всеми пользователями системы. Доступ к данным со стороны ADO полностью совместим со стандартом ODBC, но все же ADO работает через OLE DB (набор OLE интерфейсов), что позволяет не только обращаться к СБД но и к статическим данным электронных таблиц, файловых систем. Еще одно удобное свойство: ADO поддерживает такую специфическую часть СБД, как хранимые процедуры. Сгруппируем основные достоинства технологии ASP. Простота разработки. Процесс разработки и сопровождения проще, чем использование серверных DLL. Удобство отладки. Серверный скрипт обрабатывается при каждом обращении к ASP-файлу. Это позволяет наблюдать результаты сразу после внесения изменений. Доступ к ODBC совместимым источникам данных.ADO обеспечивает совместимость с ODBC - источниками. ASP технология позволяет получать данные с Больших Машин (майнфреймов). ASP имеет встроенные объекты, позволяющие получить доступ к переменным HTTP-сервера.
FastCGI
FastCGI - это HTTP-серверный интерфейс, позволяющий решить один из главных недостатков CGI протокола - ресурсоемкость. Поддержка FastCGI может быть добавлена как (plugged-in) модуль во многие популярные HTTP-сервера. FastCGI-шлюз - это программа, которая может быть написана практически на любом компилируемом или интерпретируемом языке. Она запускается отдельным изолированным процессом. Отличие от обычного CGI в том, что этот процесс является постоянно работающим и после выполнения не завершается, а ожидает новых запросов. Вместо использования переменных окружения операционной системы и потоков ввода/вывода, FastCGI объединяет информацию среды, стандартный ввод/вывод, сообщения об ошибках в единое дуплексное соединение. Спецификация FastCGI позволяет создавать одно и многопотоковые программы. Многопотоковые программы более сложны в создании и отладке, но они позволяют рационально использовать вычислительную среду. Поддержка Session Affinity - согласованное выполнение нескольких сессий. Если в многопотоковом FastCGI-шлюзе создаются несколько различных потоков, они смогут совместно использовать данные, полученные от клиентской машины. Спецификация FastCGI позволяет запускать FastCGI-шлюз на удаленной машине. Это позволяет обращаться на машине с СБД функционирующей под другим типом ОС, или же вынести машину с СБД за программый или аппаратный FireWall. Основные достоинства FastCGI. Быстродействие. Т.к. порождается только один FastCGI процесс, который обслуживает все запросы. Легкость миграции. Если информационная система проектировалась с использованием технологии CGI, перенос ее на FastCGI потребует небольшого количества доработок. Языковая поддержка. Как и CGI, FastCGI-шлюз может быть написан на многих компилируемых и интерпретируемых языках. Изолированность процесса. Некорректно написанный шлюз не приведет к краху HTTP-сервера, т.к. выполняется в изолированном процессе. Возможность распределенных вычислений.
JDBC и Java
Для доступа со стороны клиента к СБД в информационной системе может применяться технология, основанная на языке Java. Java - это довольно новый объектно-ориентированный язык, основной принцип которого поддержка распределенных вычислений. Java - программы компилируются в так называемый байт-код, выполняемый на виртуальной Java-машине (Java Virtual Machine). Для его запуска на клиентской машине достаточно иметь программу, иммитирующую работу виртуальной Java-машины. Технология использования Java в HTML документах довольна проста. Java - программы компилируются в мобильные коды Java applets и могут размещаться на сервере, встретив в HTML-документах ссылку на Java-апплет, программа просмотра запрашивает все мобильные коды у HTTP-сервера и начинает его выполнение при условиях, оговоренных в аплетте. Т.к. Java-апплет – внешняя программа, она может работать с различными СБД. Взаимодействие с Java-апплетом осуществляется через специальный протокол JDBC (Open Data Base Connectivity) JDBC - это разработанный JavaSoft прикладной программный SQL интерфейс к базам данных. Этот API позволяет использовать стандартный набор процедур высокого уровня для доступа к СБД. Можно сказать, что JDBC базируется на вызовах ODBC, поэтому СБД, допускающие работу с ODBC, будут взаимодействовать с JDBC без изменений. Механизм работы с СБД при использовании языка Java выглядит следующим образом: получив HTML страничку с Java -апплетом программа просмотра загружает его и все необходимые классы с HTTP-сервера. При его выполнении через JDBC драйвер клиент сможет непосредственно подключится к СБД через сервер “Java”, расположенный на HTTP-сервере. Использование Java-апплетов довольно “красивое” решение, т.к. при подключении новых апплетов нет необходимости проводить перекомпиляцию программы, как было бы при использовании CGI или серверного API, достаточно изменить текст HTML документа. Одним из “узких” мест использования Java-технологии это прежде всего скорость. Java это все таки интерпретатор, а он работает заметно медленнее, чем откомпилированная программа (Рис. 3).

Окончательный выбор подхода к публикации СБД на Web, на мой взгляд, в первую очередь зависит от двух главных составляющих: производительность и цена. Часто на предприятии уже существует своя Web инфраструктура с выбранной ОС и HTTP-сервером. В этом случае вопрос решается достаточно просто, необходимо посмотреть, какой из подходов рекомендован в документации к HTTP-серверу и поддерживает ли его СБД. Если приходится выбирать всю цепочку с нуля: ОС, СБД, HTTP-сервер, то при наличии средств рекомендуется выбирать комплексное решение крупных программных фирм (Oracle, IBM, Microsoft) и в их рамках можно реализовать один из подходов. Если необходимо решение с минимальными затратами, существует целый класс программных продуктов, объединенных под эгидой “open source”, например серверная ОС – FreeBSD, HTTP-сервер Apache, СБД – POSTGRES95.








.
Содержание
........
Интернет и Бизнес
Игорь Мамоненко
........
ISP: "Открытый Контакт"
Андрей Иванов
........
ISP: Network Systems
Алексей Колб
........
ISP: Solo
Наталья Соколова
........
Поисковые сервисы и каталоги
Валерий Лобко
........
Лучше меньше, да лучше
(специфика Web-дизайна в РБ)
Алексей Шталенков
........
В начале было слово...
(основы баннерной рекламы)
Андрей Золотарь
........
Газета на рабочем столе
(белорусская пресса в сети)
Алиса Бизяева
........