Типовая архитектура
Архитектура INFORMIX-Universal Web Connect
Компоненты IUWC
Преимущества IUWC

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

По мере развития Web-технологии все больше компаний используют ее и для выполнения каждодневных деловых операций, например применяя интерактивные приложения электронной коммерции для продажи через Internet товаров и услуг. Благодаря такому использованию Web компании могут не только эффективнее работать на существующем рынке, но и распространять свою деятельность на новые сегменты рынка, увеличивая прибыль и отдачу от вложенных средств.

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

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

Компания Informix, которая входит в число ведущих производителей корпоративных систем управления базами данных, одна из первых начала разрабатывать специальные расширения для своего сервера баз данных, ориентированные на работу в среде Web. Разработанные ею технологии и продукты, получившие название Informix Universal Web Architecture, дают возможность создавать интерактивные Web-приложения корпоративного уровня.

В отличие от большинства конкурирующих решений, в которых Web-приложения хранятся в виде "плоских" файлов и сценариев в каталогах файловой системы Web-сервера, Informix Universal Web Architecture позволяет хранить все содержимое Web-приложения - включая HTML-файлы, шаблоны приложения и мультимедийные данные - в базе данных Informix. Благодаря этому упрощается управление приложениями по мере их расширения и усложнения, обеспечивается динамическая доставка информации пользователям. Одна из ключевых возможностей архитектуры Informix Universal Web Architecture - формирование Web-приложений, которые способны осуществлять динамический доступ к информации, хранящейся в любых базах данных Informix. Эта функция реализуется с помощью технологии INFORMIX-Universal Web Connect (IUWC), которая обеспечивает средства разработки и компоненты среды выполнения приложений, с чьей помощью осуществляется интеграция Web-сервера с серверами баз данных Informix.

Прежде чем описывать особенности технологии IUWC, рассмотрим типовую архитектуру Web-ориентированной прикладной системы управления базами данных.

Типовая архитектура

При построении Web-ориентированного приложения для работы с базами данных обычно требуются следующие компоненты (рис. 1):

  • Web-клиент,
  • Web-сервер,
  • ПО промежуточного уровня,
  • сервер баз данных.
  • Picture_1

    Рисунок 1.
    Компоненты Web-ориентированных приложений, предназначенных для работы с базами данных.

    Web-клиентом обычно является Web-браузер, такой как Netscape Navigator или Microsoft Internet Explorer. Web-сервер - это любой основанный на HTML сервер, например FastTrack или Enterprise Server компании Netscape, Internet Information Server компании Microsoft. Приложение для работы с базами данных чаще всего работает на Web-сервере. Конечный пользователь обращается к этому приложению через Web-браузер, который взаимодействует с Web-сервером по Internet с помощью гипертекстового транспортного протокола HTTP.

    ПО промежуточного уровня (middleware) отвечает за обеспечение прикладных сервисов и управление коммуникациями между Web-сервером и сервером баз данных. Работая на Web-сервере, это ПО вызывает внешние программы, или "сценарии", которые действуют в качестве "транспортного механизма". Сценарии формируют запросы, передают их серверу баз данных, а затем форматируют полученные от него данные в виде HTML-страниц. Web-сервер передает HTML-страницы браузеру, а тот, в свою очередь, отображает их на экране пользователя. Сервер баз данных управляет информацией, хранящейся в базе данных.

    Сегодня на рынке представлены несколько решений, предназначенных для применения в качестве промежуточного ПО. Наиболее популярное из них основано на использовании интерфейса CGI (Common Gateway Interface); не менее известны интерфейсы ISAPI и NSAPI, разработанные соответственно компаниями Microsoft и Netscape.

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

    В первую очередь, CGI-приложения не являются постоянно действующими (persistent). При каждом обращении к CGI-программе через Web-сервер эта программа запускается, выполняет свои функции и завершает работу. Поскольку CGI-приложение перезапускается при любом запросе, соединение с базой данных всякий раз устанавливается заново. В результате разработчики приложений, которым необходимо постоянное соединение с базой данных, вынуждены использовать сложные методы, позволяющие поддерживать соединение в интервалах между запросами пользователей.

    Кроме того, CGI страдает невысокой производительностью, особенно в многопользовательских приложениях, которые требуют нескольких параллельных соединений с базами данных. CGI-приложения не могут совместно использоваться несколькими клиентскими запросами. Если при поступлении нового запроса CGI-программа уже работает, все равно запускается ее новая копия. Чем больше параллельных запросов обрабатываются в данный момент, тем больше копий CGI-приложения одновременно работают на сервере. Создание нового процесса для каждого запроса занимает процессорное время, требует больших ресурсов оперативной памяти, а также ограничивает ресурсы, выделяемые самому приложению, снижая его производительность и увеличивая время реакции на запросы.

    Еще одной проблемой является то, что с интерфейсом CGI не ассоциирован никакой конкретный язык программирования. Чтобы обеспечить для Web-приложения доступ к базе данных, его разработчик должен писать сценарий на языке Perl, Tcl, С или использовать HTML-файлы. Многие разработчики приложений просто не умеют создавать CGI-сценарии и HTML-файлы и не имеют достаточно времени на обучение.

    И наконец, один из главных недостатков CGI - плохая управляемость. Для связи с базами данных разработчики пишут отдельные сценарии и/или создают HTML-файлы, которые могут быть распределены по всей сети, поэтому их очень сложно контролировать. Кроме того, усложняется решение проблемы безопасности. Поскольку CGI-программы выполнются на корпоративном Web-сервере, в целях безопасности к ним должны применяться особые меры предосторожности (например, нужно хранить все CGI-программы в особой директории на сервере). Это требует дополнительных трудозатрат со стороны как Web-мастеров, так и программистов.

    Как указывалось выше, существуют и альтернативные решения, которые могут использоваться в качестве ПО промежуточного уровня, - интерфейсы ISAPI и NSAPI, разработанные Microsoft и Netscape. Эти API-интерфейсы обеспечивают более высокую производительность, лучшую защиту данных и программ, а также позволяют разработчикам быстрее создавать сложные приложения.

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

    Архитектура INFORMIX-Universal Web Connect

    Компания Informix разработала собственную технологию, призванную преодолеть указанные ограничения и недостатки интерфейсов CGI, ISAPI и NSAPI. Технология INFORMIX-Universal Web Connect (IUWC) поддерживает все популярные Web-серверы, операционные системы и Web-браузеры; она совместима и с другими решениями для промежуточного ПО, такими как ISAPI и NSAPI.

    IUWC позволяет разработчикам создавать интеллектуальные Web-приложения, которые предназначены для работы с данными, динамически извлекаемыми из баз данных Informix. Эти приложения могут работать с любыми типами данных, поддерживаемыми сервером баз данных Informix: с традиционными алфавитно-цифровыми данными, HTML-страницами, изображениями, документами, электронными таблицами, презентациями, графическими картами, аудиоданными, а также с любыми определенными пользователем типами данных.

    Уже говорилось, что при использовании интерфейса CGI разработчики должны писать сценарии на языке Perl, Tcl или С, служащие для формирования запросов, передачи их серверу базы данных и форматирования результатов в виде HTML-страницы. В свою очередь, IUWC не требует написания сложных сценариев. Разработчикам предоставляются средства для создания "интеллектуальных" HTML-страниц непосредственно внутри баз данных. Эти HTML-страницы, получившие название Application Pages (или AppPages), динамически выполняют SQL-команды, форматируют результаты поиска, а затем передаются конечному пользователю.

    Схема CGI-реализации технологии IUWC приведена на рис. 2. Хотя основой этой структуры является CGI, она не страдает присущими данному интерфейсу недостатками. Главная особенность IUWC с точки зрения архитектуры - наличие двух компонентов промежуточного уровня, WebDriver и IUWC Web Application.

    Picture_2

    Рисунок 2.
    Архитектура INFORMIX-Universal Web Connect.

    Напомним, что при использовании CGI для каждого соединения с клиентом/браузером должна создаваться новая копия CGI-приложения, что обычно происходит в ущерб производительности. Чтобы минимизировать ущерб, IUWC создает "облегченный" CGI-процесс, называемый WebDriver. Он запускается, когда от браузера поступает URL-запрос к Web-серверу. Получив запрос, WebDriver генерирует уникальный идентификатор сеанса и передает этот запрос IUWC Web Application - постоянно работающему приложению, которое не завершает свою работу после выполнения каждого запроса. Получив запрос от WebDriver, IUWC Web Application соединяется с базой данных и вызывает функцию WebExplode, которая выполняет запросы, записанные в SQL-командах (обрабатывая при необходимости встроенные в AppPages расширения тегов), и форматирует полученные результаты. Затем WebExplode возвращает полученную HTML-страницу программе WebDriver, а та пересылает результаты Web-браузеру.

    В IUWC Web Application используются интерфейсы IUWC API; обеспечиваются важные сервисы Web-приложений, такие как управление соединениями и сеансами. С помощью IUWC API компании, которым требуются специализированные сервисы приложений, могут создавать собственные заказные Web-приложения. Чтобы они действовали постоянно и обеспечивали максимально возможную производительность, IUWC API автоматически включает в них все Web-сервисы, имеющиеся в IUWC Web Application. В сочетании с WebDriver программа IUWC Web Application обеспечивает набор функций управления соединениями, сеансами и приложениями, которые описаны ниже.

    Управление соединениями и сеансами

    Поскольку IUWC Web Application - многопользовательское приложение, все запросы от клиентов обрабатываются одним или несколькими IUWC Web Application. Количество работающих приложений является настраиваемым параметром, который изменяется в зависимости от требований масштабируемости системы. Для управления взаимодействием пользователей с приложениями WebDriver генерирует для каждого клиента уникальный защищенный идентификатор сеанса. Он используется на протяжении всего сеанса связи с клиентом для распознавания поступающих от него запросов и передачи соответствующей информации программе IUWC Web Application. На основе этих сведений IUWC Web Application сохраняет в промежутке между двумя запросами Web-браузера необходимые значения применяемых в приложении переменных и соединения с базой данных.

    Управление приложениями

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

    Программа IUWC Web Application может быть приспособлена к реальным условиям работы. Например, информация о состоянии по запросам клиентов не должна храниться бесконечно долго. Администратор системы способен изменять применяемое по умолчанию значение тайм-аута для сеансов связи с браузером. Исходя из требований масштабируемости, администратор задает количество одновременно работающих приложений IUWC Web Application. Программа WebDriver передает запросы клиентов активным приложениям IUWC Web Application, используя специальный алгоритм распределения нагрузки, за счет чего обеспечиваются хорошая масштабируемость и высокая производительность.

    В целях повышения производительности также осуществляется кэширование в памяти часто запрашиваемых страниц и объектов. WebDriver и IUWC Web Application предоставляют такие функции управления приложениями, как обработка ошибок, регистрация действий и управление событиями. Функция WebExplode программы IUWC Web Application обеспечивает сервисы, необходимые для управления страницами AppPages. С их помощью эти страницы и объекты извлекаются из баз данных и производится обработка встроенных тегов для выполнения конкретных задач. WebExplode также реализует интерпретацию макроязыка AppPage и управление информационным наполнением, например HTML-страницами, документами, изображениями, пользовательскими тегами и т.д.

    Компоненты IUWC

    INFORMIX-Universal Web Connect включает в себя следующие компоненты, предназначенные для создания Web-приложений:

  • Web-DB Publisher,
  • расширения тегов HTML,
  • IUWC API,
  • средства интеграции с Web-серверами.
  • Web-DB Publisher

    Web-DB Publisher - простой "мастер", который может использоваться конечными пользователями или администраторами для создания в формате Web отчетов, основанных на информации из баз данных Informix. "Мастер" предлагает несколько экранных форм, которые пользователь заполняет в процессе формирования отчета. Полученные отчеты сохраняются в HTML-формате и становятся доступными для других пользователей через Web-сервер, причем они бывают как статическими, так и динамическими (последние отличаются тем, что при каждом обращении к ним пользователей через URL-адрес данного документа из базы данных извлекаются реальные значения). Web-DB Publisher также имеет механизм планирования, с помощью которого отчеты могут формироваться по заданному расписанию без вмешательства пользователей.

    Расширения тегов HTML

    Для создания динамических Web-приложений без помощи программирования разработчики и опытные Web-мастеры могут включать в страницы AppPages расширения тегов HTML. Они предоставляют разработчикам простой способ доступа к логике приложений и информации, хранящейся в базах данных Informix (например, динамически компонуемым или статическим HTML-документам, связанным с ними мультимедийным данным). Разработчики используют поставляемые компанией Informix специальные теги или создают свои собственные для решения конкретных задач. Например, специальный тег расширения HTML от Informix позволяет Web-мастерам временно передавать управление от AppPage приложению для выполнения специализированного кода, который требуется для реализации некоторой функции. Таким образом, обеспечивается необходимая гибкость при создании Web-страниц: какие-то их части могут генерироваться с помощью AppPage, а другие - из внешнего кода.

    IUWC API

    Создавая высокопроизводительные OLTP-приложения, которые нельзя реализовать только с помощью AppPages и расширений тегов HTML, программисты могут воспользоваться специальными библиотеками функций языка С, поставляемыми в составе IUWC API. Этот набор API-сервисов для управления сеансами и соединениями дает возможность разработчикам быстро переносить (или создавать) клиент-серверные приложения баз данных на Web. Благодаря данному интерфейсу приложения устанавливают соединения с другими распределенными брокерами объектов, такими как IIOP, DCOM и CORBA. Для разработки приложений с помощью IUWC API можно использовать многие популярные языки, например С, С++ и Java.

    Средства интеграции с Web-серверами

    IUWC содержит специальные драйверы для серверов SuiteSpot компании Netscape и Internet Information Server компании Microsoft. Интеграция с этими серверами позволяет выполнять авторизацию и аутентификацию пользователей через базы данных Informix, а соответственно - применять к Web-серверам их богатые возможности и средства защиты, такие как контрольные следы процессов (audit trails) и управление доступом.

    Преимущества IUWC

    К достоинствам архитектуры IUWC можно отнести:

  • централизованное управление, которое возможно благодаря хранению всего содержимого Web-приложения в базе данных;
  • объектно-реляционные расширения INFORMIX-Universal Server, позволяющие выполнять запросы к содержимому баз данных на уровне SQL3;
  • тесную интеграцию с сервером баз данных Informix, обеспечивающую высокую производительность и масштабируемость Web-приложений.
  • Централизованное управление

    Многие конкурирующие продукты хранят различные части Web-приложений разрозненно, например в различных частях файловой системы сервера или на разных серверах. Децентрализация содержимого Web-приложения усложняет поддержание его целостности. В результате разработчики вынуждены тратить лишнее время на управление и слежение за различными компонентами приложения. При использовании IUWC в базе данных хранится все содержимое Web-приложения (в том числе AppPages и любые мультимедийные данные - различные виды документов, изображения, аудио-, видеоданные и т.п.). Благодаря этому упрощается доступ разработчиков к Web-приложениям и управление ими.

    Объектно-реляционные расширения

    INFORMIX-Universal Server в сочетании с технологией DataBlade дают возможность пользователям "интеллектуально" управлять традиционными типами данных, а также обрабатывать сложные данные, такие как видео- и звуковые файлы, временные последовательности сигналов, двух- и трехмерная графика, тексты и данные в формате Web. Обеспечив подобную гибкость в управлении данными, компания Informix сделала еще один шаг вперед: она реализовала совместимость используемого ею языка SQL с проектом спецификации SQL3. Благодаря этому пользователям INFORMIX-Universal Server стали полностью доступны объектно-реляционные расширения баз данных, которые позволяют выполнять структурированные запросы к базам данным, хранящим информацию любого типа.

    С помощью модуля Web DataBlade можно создавать динамические Web-страницы, имеющие полный доступ к данным и функциям DataBlade, которые обеспечиваются механизмом базы данных (database engine). Пользователи, оснащенные Web-браузерами, получают возможность не только обращаться к стандартным реляционным или сложным типам данных, но и осуществлять контекстный поиск абстрактной информации - звуковых клипов, видеороликов, временных последовательностей сигналов или географических данных.

    Тесная интеграция с сервером баз данных

    Благодаря тесной интеграции IUWC с сервером баз данных INFORMIX-Universal Server компании Informix Web-приложения имеют высокие показатели производительности и масштабируемости (это достигается за счет использования для управления базами данных эффективной многопоточной архитектуры). Способность сервера баз данных обслуживать большое количество пользователей, процессов и разнородной информации весьма полезна для среды Web, где количество одновременно подключенных пользователей и объемы запрашиваемых данных являются трудно предсказуемыми. Многие конкурирующие продукты не обеспечивают такого высокого уровня интеграции и используют для связи с базами данных протокол ODBC, поэтому не способны достичь таких же производительности и масштабируемости.

    * * *

    Необходимо подчеркнуть, что описанная нами технология INFORMIX-Universal Web Connect, разработанная в качестве расширения передовой архитектуры управления базами данных компании Informix, строго ориентирована на использование в сочетании с серверами баз данных INFORMIX-Universal Server. Это можно рассматривать и как достоинство, и как недостаток.

    Если организация уже применяет базы данных Informix или корпоративная система создается "с нуля", на решение Informix, несомненно, следует обратить внимание как на одно из наиболее хорошо интегрированных, мощных и удобных для реализации сложных "интеллектуальных" Web-приложений. Если же в корпоративной сети уже используется другая СУБД, например компаний Oracle, Sybase, IBM или какая-то их смесь, то технология IUWC вряд ли станет жизнеспособным вариантом, поскольку не предоставляет удобного механизма связи с другими базами данных. В этом случае имеет смысл присмотреться к альтернативным технологиям и продуктам, обеспечивающим взаимодействие Web-приложений с базами данных на основе стандартных протоколов, таких как ODBC и JDBC. Причем поддержка протокола JDBC становится все более важной, поскольку языки Java и JavaScript начитают широко использоваться в корпоративных разработках для создания сложных интерактивных Web-приложений.