Ж у р н а л   о   к о м п ь ю т е р н ы х   с е т я х   и   т е л е к о м м у н и к а ц и о н н ы х   т е х н о л о г и я х
СЕТИ И СИСТЕМЫ СВЯЗИ on-line
  ПОИСК: ПОДПИСКА НА НОВОСТИ: НОМЕР:
    ДОМОЙ • Архив: Новостей | Конференций | НомеровПодписка
 
   
 
   
    
РЕДАКЦИЯ
 
Все о журнале
Подписка
Как проехать
Где купить
Отдел рекламы
График выхода журнала
Адреса в Интернет

РУБРИКАТОР
   
• Инфраструктура
• Информационные
   системы

• Сети связи
• Защита данных
• Кабельные системы
• Бизнес
• Колонка редактора
• Электронная
   коммерция

• Только на сервере
• Системы
   учрежденческой
   связи

• Новые продукты


Rambler's Top100

  

Организация доступа к СУБД через Web-сервер

Энтони Фрей

Итак, у вас есть старая надежная база данных предприятия и по ряду причин руководство приняло решение организовать доступ к ней через службу Web. Возникает вопрос: с чего начать?

Мы рассмотрели невероятное количество программных пакетов, появившихся в последнее время, которые обеспечивают связь между Web и СУБД. Чтобы как-то упорядочить все эти продукты, мы разбили их на группы в зависимости от того, что они используют: сценарии на языке Perl, встроенные запросы или динамическую генерацию HTML-кода. Мы также протестировали несколько продуктов, относящихся к каждой из групп. Сначала мы создали небольшую сетевую базу данных с помощью двух серверов: Workgroup Server 7.2 фирмы Oracle и SQL Server 6.5 фирмы Microsoft. В качестве Web-сервера под ключ использовался InterServe Web-300 фирмы Intergraph, а доступ к базам данных осуществлялся через ODBC. После установки ПО в нашей лаборатории для каждой комбинации этих продуктов был создан свой Web-узел, чтобы проверить эффективность их совместной работы.

Вопросы взаимодействия СУБД и Web-сервера

Прежде чем перейти к рассмотрению каждой из трех перечисленных групп продуктов, давайте обсудим некоторые вопросы, касающиеся соединения вашей базы данных с Web. Очевидно, что вам понадобится какое-то дополнительное связующее ПО для обеспечения взаимодействия CGI-программы (Common Gateway Interface) с СУБД. В принципе, вы можете использовать любой тип связующего ПО, обычно применяемого для стандартных приложений типа клиент—сервер. Однако конкретная операционная среда, в которой должна работать программа CGI, как правило, сужает возможный выбор. Если вы ведете разработку на платформе Windows NT, то в этой ОС для доступа к БД стандартом де-факто является интерфейс ODBC.

Эффективное взаимодействие ваших Web-сервера и базы данных имеет решающее значение. В связи с необходимостью осуществлять доступ к СУБД программы CGI должны удовлетворять повышенным требованиям. Каждый раз при обращении к HTML-странице, содержащей запрос к базе данных, инициируется новый сеанс доступа к серверу базы данных. В некоторых продуктах эта проблема решается путем использования уже открытого сеанса.

Для большинства приложений важен также способ сохранения информации о текущем сеансе связи с сервером БД. Если вы задаете, например, транзакцию, в которой аутентификация пользователя осуществляется на первой Web-странице, а изменение таблицы БД планируется выполнять на последующих страницах, то серверу БД необходимо каким-то образом сообщить, что со всеми этими страницами работает один и тот же пользователь. Эта проблема вызвана недостатками протокола HTTP. Наиболее общим ее решением является использование идентификатора сеанса связи. Хороший пакет разработки Web-приложений должен обеспечить вам какую-то помощь в этом вопросе.

Насколько гибкими являются рассматриваемые средства обработки запросов к БД? Например, пакет IDC (Internet Database Connector) фирмы Microsoft поддерживает только один запрос для каждого файла, а пакет InterMart Toolkit фирмы NetScheme не позволяет выполнять операции добавления и редактирования записей. Чем сложнее ваша модель данных, тем боўльшая гибкость вам требуется. В конце концов, вам необходимо выяснить, какие возможности эти группы продуктов предлагают для генерации HTML-страниц. При выборе вам следует учитывать не только способ доступа к СУБД, но и удобство среды разработки, с которой вам придется работать.

Язык Perl и Oracle WebServer

На ранней стадии развития службы Web для доступа к БД чаще всего использовались программы на языке сценариев Perl. В то время источниками данных не всегда служили реляционные СУБД. Часто данные были представлены в виде структурированных файлов, хранящихся на файл-сервере. Язык Perl, благодаря его возможностям обработки текстов, подходит именно для таких случаев. Он хорош также тем, что для него разработан богатый набор программных библиотек.

Мы использовали два наиболее распространенных варианта языка: Oraperl и ODBC Extensions for Win32 Perl. (Их можно легко найти в Internet по ключевым словам oraperl и ntodbc на вашем любимом узле поиска.) Oraperl является исключением среди выбранного нами связующего программного обеспечения ODBC, поскольку для его работы требуется локальный сервер Oracle (некоторые версии могут работать с ПО SQL*Net). Оба продукта — программные пакеты общего назначения. С их помощью можно относительно легко генерировать HTML-страницы.

Привлекательность использования языка Perl заключается в том, что вы имеете полный контроль над доступом к данным и генерацией HTML. Однако большим его недостатком является необходимость написания большого числа специализированных программ, обычно по одной и более на каждую страницу. Скорее всего, вам придется писать собственные библиотеки для генерации HTML-страниц и сохранения информации о сеансе. И поскольку этот способ организации доступа к БД связан с программированием, то вы должны иметь в виду, что он может быть достаточно длительным и трудоемким.

Мы отнесли ПО Oracle WebServer к той же категории, что и язык Perl, поскольку особенности разработки с помощью этих пакетов во многом совпадают. Фирма Oracle включила сервер HTTP в состав ПО Workgroup Server и дополнила свой стандартный процедурный язык PL/SQL библиотекой для генерации HTML-кода. Благодаря этому, у вас появилась возможность работать в среде Oracle и использовать созданные ранее хранимые процедуры и триггеры. Этот подход хорош, когда вы уже имеете большой опыт разработки в среде Oracle.

Встроенные запросы

Этот подход, по-видимому, является наилучшим среди всех рассмотренных нами новых средств. Он позволяет динамически генерировать HTML-страницы со встроенными запросами и дополнительной логикой, для описания которых используется расширенный синтаксис HTML. Для обращения к такой странице применяются не привычные гиперссылки, а вызов CGI-программы, которая производит препроцессорную обработку страницы, выполняет запросы к базе данных и дополнительные логические операции с полученной информацией, прежде чем возвратить HTML-текст (см. рис. 1). Следует помнить, что полученный HTML-текст является динамическим.

Хороший пример использования встроенных запросов — интерфейс IDC фирмы Microsoft, который поставляется вместе с ее Web-сервером IIS (Internet Information Server). Кроме того, этот подход использован в продуктах WebBase фирмы ExperTelligence, WebDBC фирмы Nomad Development и Cold Fusion фирмы Allaire.

Встроенные запросы являются наиболее подходящим инструментом для обеспечения взаимодействия Web с базой данных. Весь процесс создания встроенных запросов выглядит как естественное продолжение разработки HTML-страниц. Такой подход значительно отличается от написания программ на языке Perl, когда от вас требуется программно генерировать HTML-текст.

Мы убедились в этом на собственном опыте, когда создавали наш Web-узел с помощью пакета Cold Fusion. Наша тестовая таблица содержала всего три поля: IP-адреса, машины и соединения. Используя администратор из пакета Cold Fusion, мы определили имя пользователя и пароль для связи с сервером БД через ODBC. Таким образом, управление доступом в этом пакете оказалось более удобным, чем в ПО IDC или WebBase, где регистрационную информацию необходимо указывать в каждом файле запроса.

Web-страницы, содержащие запросы к базе данных, обычно состоят из двух страниц — обычной HTML-страницы (см. листинг IPADDR.HTM), которая содержит запрос, и страницы шаблона (см. листинг IPADDR.DBM), написанной на расширенном варианте языка HTML. В пакете Cold Fusion для файлов разметки результатов запроса к базе данных используется расширение DBM. В форме, описанной с помощью файла IPADDR.HTM, для задания диапазона запрашиваемых IP-адресов пользователь должен ввести два IP-адреса. Этим значениям присваиваются идентификаторы lowip и highip соответственно. После нажатия кнопки запуска в заданной форме они в качестве параметров передаются в CGI-программу, а впоследствии — и в запрос к базе данных. В Cold Fusion имена CGI-программы и файла шаблона указываются в форме с помощью параметра ACTION: ACTION=”/cgi-bin/dbml. exe?template=ipaddr.dbm”.

Обратите внимание на метку <DBQUERY Name=”qryIPaddr” ...> в файле IPADDR.DBM с описанием шаблона. Этот идентификатор будет использован для обозначения набора строк, являющихся результатом выполнения запроса. Метка <DBTABLE ...> впоследствии использует этот идентификатор для вывода полученного результата в виде таблицы. Пакет Cold Fusion позволяет также выполнять множественные запросы, чего нельзя сделать с помощью пакета IDC. Расширения языка HTML в Cold Fusion хороши еще и тем, что разрешают использовать логические операции. Это позволяет вам модифицировать выходные данные в зависимости от входных параметров или результатов запроса.

При использовании HTML вы должны пересмотреть некоторые привычные способы написания типовых функций для приложений клиент—сервер. Например, если при разработке форм на языке четвертого поколения (4GL) вы привыкли оформлять результаты запроса в виде контрольных элементов типа list box, то при использовании HTML вам придется полученную выборку предварительно обрабатывать с помощью CGI-программы.

Что можно сказать о способах контроля вводимых данных? При использовании HTML-форм это всегда было обременительно, и Cold Fusion в этом смысле не составляет исключения, хотя все-таки стало немного легче. Например, если каждый октет вводимого IP-адреса будет представлен в виде отдельного поля, то вводимые значения можно ограничить диапазоном от 0 до 255. Таким образом, каждый октет будет описан отдельной меткой с именем “.._range”, например: <INPUT TYPE=”text” NAME=”ipa_range” MIN=0 MAX=255>.

Пакеты Cold Fusion и WebDBC поддерживают интерфейс ISAPI, который позволяет уменьшить разницу в производительности Web-сервера и шлюза. Несмотря на то что WebBase сам является HTTP-сервером, он сравнительно медленно выдает HTML-документы и обрабатывает шаблоны запросов. Мы ожидали от него большей производительности и подозреваем, что замедление является результатом недостаточной оптимизации HTTP-сервера. Использование динамической библиотеки ISAPI обеспечивает такие же, если не лучшие, показатели скорости.

Динамическая генерация таблиц HTML

Этот метод — еще один шаг вперед на пути автоматической генерации HTML-страниц. При его использовании вам уже не придется заниматься программированием на HTML. Выходные формы задаются с помощью моделирующего приложения, в котором можно выбирать типы таблиц, представление данных и готовые процедуры, необходимые для отображения информации в браузере. CGI-программы используют созданный вами файл модели для генерации целого “дерева” HTML “на лету”. Результатом такой обработки являются динамически сгенерированные HTML-страницы. Эти страницы могут содержать таблицы с результатами запросов, снабженные заголовками, элементы оформления, навигационные ссылки и даже заранее оформленные запросы. Обычно на сервере имеется дополнительный программный компонент, который отвечает за работу с интерфейсом CGI. В настоящее время эту технологию используют два продукта — Intermart Toolkit фирмы NetScheme и DataWave фирмы DataCraft.

На рис. 2 приведена схема динамической генерации таблицы, которую использует фирма NetScheme. С помощью этой процедуры вы можете очень быстро создать пользовательский интерфейс для вашей базы данных. Если вам необходимо создать сложный многооконный интерфейс, работающий с несколькими таблицами базы данных со сложной схемой взаимосвязей, то вам лучше всего использовать именно этот метод. К тому же он позволяет решить проблему поддержания сеанса связи благодаря автоматическому включению идентификатора сеанса в сгенерированные HTML-страницы.

NetSheme избавит вас от рутины, связанной с разработкой постоянно повторяющихся Web-страниц, но версия, которую мы тестировали, предназначена исключительно для отображения информации. Таким образом, у пользователя нет возможности выполнять операции добавления, редактирования или удаления записей в базе данных. Пакет DataWave более сложен, так как представляет собой “надстройку” над полнофункциональной средой разработки в архитектуре клиент—сервер.

В отношении эффективности рассмотренный метод имеет свои “за” и “против”. С одной стороны, связь с базой данных может поддерживаться в течение всего сеанса, открытого пользователем с момента регистрации на сервере. С другой стороны, HTML-код должен генерироваться каждый раз при обращении к данной странице или при открытии нового сеанса.

Какой метод выбрать?

Организация связи между Web-сервером и базой данных может показаться чрезвычайно трудной задачей, поскольку приходится сталкиваться с такими проблемами, как подключение ODBC-драйверов, установка интерфейса CGI, координация прав доступа и отладка HTML-кода, сопряженная с расшифровкой малоприятных сообщений об ошибках. Это усугубляется еще и тем, что из-за наличия расширенного синтаксиса вы не можете использовать обычные редакторы HTML.

Как и всегда, при решении новых проблем, сначала сформулируйте ваши требования. Из всех рассмотренных методов для вашего приложения, скорее всего, подойдет один. Для отбора того или иного метода в каждом конкретном случае мы рекомендуем три основных критерия: интенсивность интерактивного доступа к базе данных, потребность в транзакциях и возможность публикации разнообразных данных из СУБД. При наличии повышенных требований к одному из указанных критериев можно порекомендовать использование соответственно сценариев на языке Perl, встроенных запросов и динамической генерации таблиц. Но вовсе не обязательно ограничиваться использованием только одного метода. Если вы собираетесь применить, например, динамический генератор HTML-страниц, но задача оказалась достаточно сложной, ничто не мешает вам добавить программу на языке Perl.


распечатать статью

Вин лайн. Ставка размещения. Тотализатор спорт.




  
10 '1996
СОДЕРЖАНИЕ

колонка редактора

• Лучше меньше да лучше

локальные сети

• Гонки по дорогам Fast Ethernet: обзор коммутаторов и концентраторов

• Основы построения структурированной кабельной системы. Часть II

• Ручные анализаторы ЛВС

корпоративные сети

• Мосты, маршрутизаторы, коммутаторы: здравый смысл и “собака”, которая не лаяла

• На границе с АТМ

• Серверы протокола DHCP

• Когда мы едины, мы непобедимы

услуги сетей связи

• Сеть управления электросвязью (TMN)

• АТМ и Frame Relay: обещания и реалии

• Выбор технологии для сельской системы связи

интернет и интрасети

• Портативные аппаратные средства узла Web

• Совместное использование файлов в Windows 95 через Internet

приложения клиент-сервер

• Windows 95 и системы управления документами

• Организация доступа к СУБД через Web-сервер

защита данных

• Организация резервного копирования в локальных и корпоративных сетях

• Беспатные советы по защите от пиратов

• Защита данных в Windows 95

новые продукты

• Цифровая телефонная станция Introworks, Synthesis: “чистота” и эффективность, BusinessPhone фирмы Ericsson, SMC представляет новые продукты Fast Ethernet, Осенняя коллекция IBM, Новые продукты Cabletron



 Copyright © 1997-2007 ООО "Сети и Системы Связи". Тел. (495) 234-53-21. Факс (495) 974-7110. вверх