Источник: http://www.hardline.ru/4/86/3177/



Новый рынок, новые средства

Отбирая продукты для этого обзора, мы обнаружили четкие признаки того, что внезапно возникший спрос на системы разработки, ориентированные на Web, застал врасплох многих изготовителей. Восемь инструментальных пакетов, которые мы в конце концов испытали, образуют эклектическую смесь изделий, сильно различающихся по степени зрелости. Некоторые из них, например NetDynamics фирмы Spider Technologies, HahtSite компании Haht Software и WebObjects фирмы NeXT, были специально разработаны для Web, и в них решены многие проблемы, присущие только приложениям СУБД для Web. Другие, такие как Delphi Client/Server компании Borland, JAM WEB Toolkit фирмы JYACC и VisualWave компании ParcPlace-Digitalk, явно относятся к краткосрочным решениям, предназначенным для того, чтобы предоставить разработчикам временный способ перехода в среду Web.
Кажется, что кое-кто из ведущих поставщиков опоздал с предложением изделий для этого рынка. Корпорации Oracle и Microsoft отказались принять участие в подготовке данного обзора. Пакеты PowerBuilder и Optima++ компании Sybase не были поставлены вовремя для полноценного анализа, хотя мы смогли рассмотреть бета-версии этих многообещающих инструментальных средств (подробности можно найти во врезке "Средства разработки фирмы Sybase и Internet").
Мы ожидаем, что на протяжении последующих шести месяцев рынок станет значительно более насыщенным по мере того, как эти поставщики выйдут на сцену и начнут появляться другие инструментальные средства второго поколения. Несколько превосходных средств доступны уже в настоящее время. Для небольших узлов и некоторых приложений интрасетей (intranet) решения, основанные на СУБД для ПК, также могут быть вполне подходящими (врезка "СУБД для ПК: решения меньшего масштаба").

Новое мышление

Процесс разработки баз данных Web сопряжен с преодолением большого числа технических барьеров и требует, чтобы разработчики кардинальным образом изменили свое мышление. Например, прикладная программа клиент-сервер в ЛВС может пользоваться ресурсами ПК-клиента для раздельного выполнения задач по обработке и хранению данных. В отличие от этого, СУБД для Web напоминает старинную программу для универсальных ЭВМ, где браузер играет роль маломощного клиента, аналогичного неинтеллектуальному терминалу. В то время как разработчики программ для ЛВС свободны в использовании всех вычислительных ресурсов машины клиента и функциональных возможностей ее многооконной системы, их коллеги, программирующие для Web, вынуждены работать в рамках ограничений стандарта HTML, если только они не хотят ориентироваться на конкретную локальную конфигурацию пользовательской системы.
Возможно, наиболее значительная проблема, с которой сталкиваются разработчики, - неструктурированная природа Web. Web-сервер реагирует на запрос страницы, либо отсылая страницу HTML, либо запуская внешнюю прикладную программу посредством сервера API. Как только предоставлена страница или выполнено приложение, транзакция завершена и связь разрывается. Сервер не обеспечивает хранения жизненно важной информации о прикладной программе и пользователе в рамках самой программы. Такой подход хорош при распространении гипертекстовых документов, но вызывает серьезные проблемы у всякого, кто пытается создать компактную программу для работы с многостраничной базой данных.
Для разрешения этих проблем Web-программе нужно иметь средства обслуживания информации о сеансе или средства обмена данными о состоянии системы с пользователем посредством встраивания информации в HTML-формы. В любом случае уникальный идентификатор сеанса обычно генерируется на сервере. От того, какую информацию обслуживает приложение базы данных Web и насколько прост доступ к нему со стороны разработчика базы данных, во многом зависит выбор системы разработки.
Другая сложная проблема заключается в непредсказуемой нагрузке, с которой может столкнуться Web-приложение. Управление нагрузкой в Web предусматривает множество факторов, причем необходимо учитывать их все. Первый - это способность сервера приложений управлять большим числом одновременных подключений. В наиболее сложных изделиях используется архитектура распределенной обработки, которая дает возможность перенаправлять запросы приложения на несколько физических машин. Однако большинство разработчиков при ограничении числа одновременно поддерживаемых подключений просто рассчитывают на Web-сервер. Другое соображение касается числа одновременно требуемых подключений к базам данных: Web-СУБД, которая может экономно использовать канал связи с базой данных, - это реальный плюс. В то время как одни изделия обеспечивают кэширование и совместное подключение к базе данных для различных Web-сеансов, другим требуется отдельное подключение для каждого создаваемого прикладной программой процесса.
Еще одна проблема - неэффективность традиционных CGI-сценариев. Хотя интерфейс CGI - стандартный компонент большинства Web-серверов, это не очень удачное решение, когда речь идет об управлении памятью. Каждое обращение через CGI порождает отдельный процесс, выгружаемый по завершении выполнения запроса. Это увеличивает нагрузку на память и снижает производительность. Более эффективный способ подключения внешней СУБД к Web-серверу - использование интерфейсов NSAPI фирмы Netscape или ISAPI корпорации Microsoft - патентованных API, которые позволяют прикладным программам работать с отдельными процессами в рамках собственного адресного пространства Web-сервера и обеспечивают лучшее управление самим Web-сервером. В одном из таких средств - пакете NetDynamics - использует в качестве основы прикладных программ служит язык Java, имеющийся на сервере.
Ввиду многообразия предложений, незрелости инструментальных средств и противоречивой природы архитектуры Web выбор подходящего решения для разработки Web-СУБД представляет собой непростую задачу. Восемь изделий, описания которых приводятся ниже, позволят вам почувствовать преимущества и недостатки существующих вариантов выбора.

Редакция советует:

NetDynamics 2.0,
WebObjects Enterprise 2.0
Наши победители выходят далеко за рамки обычных технологий клиент-сервер, чтобы соответствовать специальным требованиям разработки СУБД для Web. Пакет NetDynamics 2.0 компании Spider Technologies бесспорно наиболее претенциозный инструментальный пакет на основе языка Java среди существующих. Прикладные программы генерируются на языке Java для сервера, а сервер приложений NetDynamics элегантно управляет доступом к данным, балансировкой нагрузки и служебной информацией. Рабочая среда предоставляет превосходные средства управления безопасностью, от координализации потоков приложений до настройки привилегий для доступа к базе данных. NetDynamics Studio - это эффективная среда разработки ГИП, "мастера" которой помогают с легкостью создавать страницы и SQL-запросы. NetDynamics - серьезный инструмент для сетевых узлов на уровне предприятия, но простота его применения и цена будут привлекательны для сетей любого масштаба.
Пакет WebObjects Enterprise 2.0 компании NeXT, основанный на использовании объектно-ориентированных структур NeXT, содержит удивительно мощное собрание инструментов для разработки прикладных программ Web-СУБД на уровне предприятия. Его модуль Enterprise Object Modeler предоставляет все необходимые возможности для моделирования программ и данных, тогда как модуль Enterprise Objects Framework обеспечивает способность абстрагировать деловую логику от внутренней базы данных и интерфейса приложения. WebObjects предназначен также для решения задач управления состоянием системы и обработкой транзакций. Пакет WebObjects Enterprise - это сложный инструмент, но для построения узлов с большой нагрузкой он подходит лучше всех рассмотренных нами изделий.

Соответствие решаемой задаче: настольные системы управления

Разработка интерфейса. Для получения этого показателя мы оценивали любые имеющиеся функциональные возможности генерирования HTML-форм, которые выводятся на экран браузером конечного пользователя. Инструментальные средства, при работе с которыми нам приходилось программировать описания экранных форм вручную, здесь оценивались как неудачные. Помогает ли инструмент графически проектировать экранные формы? Предоставляет ли он высокоуровневые программируемые объекты интерфейса? Можно ли генерировать HTML-страницы из экранных образов существующих прикладных программ? Наличие инструментальных средств, использующих знания о лежащей в основе СУБД или модели для генерации экранных форм, приносило дополнительные баллы. Возможность усовершенствований на стороне клиента с применением языка Java оценивалась положительно наряду со средствами создания сложных отчетов.
Соединение с базами данных. Этот показатель характеризует взаимодействие между базой данных, приложением, запущенным на сервере, Web-сервером и клиентом. Мы рассчитывали найти средства, которые наряду с CGI обеспечивают работу с ISAPI и NSAPI. Нам было важно, насколько хорошо этот инструмент управляет сеансом и обеспечивает ли он реальную обработку транзакций. Предоставляются ли собственные и ODBC-драйверы для SQL СУБД? Инструментальные средства, позволяющие развертывать прикладные программы на различных платформах серверов, заслужили дополнительные баллы.
Распределение приложений. Этот показатель оценивает степень, до которой инструмент обеспечивает поуровневое распределение прикладных программ. Можно ли логически разбивать прикладные программы на уровни интерфейса, деловой логики и доступа к данным? Можно ли физически разбить прикладную программу на разделы?
Разработка баз данных. Данный параметр характеризует эффективность инструментария при реконструкции существующих баз данных или разработке новых. Предоставляет ли он графический, объектно-ориентированный интерфейс пользователя, который обеспечивает общее представление об объектах приложения и базы данных? Можно ли работать с высокоуровневыми объектами доступа к данным? Имеются ли в пакете возможности моделирования данных? Мы также высоко оценивали наличие мощного стандартного языка программирования, расширяемой модели данных и хорошего выбора заготовок программных объектов.
Пакет Delphi компании Borland International имеет заслуженно высокую репутацию как средство для создания систем клиент-сервер в среде ЛВС. Если вы собираетесь создавать прикладные программы клиент-сервер для World-Wide Web, то обнаружите, что текущая редакция Delphi Client/Server Suite 2.0 - мощное, хотя в чем-то грубоватое решение, которое требует значительных вложений в программирование библиотек DLL на языке Паскаль и конструирование страниц Web вручную.
Однако, несмотря на то что этому подходу не хватает простоты и элегантности, присущих RAD-средствам, он имеет преимущества благодаря быстродействию и гибкости развертываемого узла. Теперь в дополнение к интерфейсу CGI в Delphi встроены средства обеспечения работы как с ISAPI, так и с NSAPI. Это наряду со способностью Delphi генерировать DLL предоставляет разработчикам необыкновенно гибкие возможности и обеспечивает высокую производительность. Прикладные программы Delphi должны распространяться на платформе Windows-серверов, обычно Windows NT, и использоваться с Web-сервером основанным на Windows.
Благодаря лицензионным соглашениям в Delphi теперь входят два мощных средства, ориентированные на Web: QuickSite фирмы DeltaPoint - полнофункциональный HTML-редактор и пакет Internet Solutions Pack компании NetManage - набор элементов управления ActiveX, хорошо приспособленных для разработки заказных программ, предназначенных для работы в интрасетях.

Конструирование узла

Построение испытательного узла Web для этого обзора предусматривало два различных процесса. Мы начали с создания страниц HTML и средств управления ими - внешнего интерфейса пользователя на основе QuickSite. Эти HTML-страницы играют роль шаблонов и содержат специально вставленные коды (мы применяли "%S") для идентификации полей данных, которые будут использоваться позднее. Хотя формирование страниц в QuickSite выполняется непосредственно, система Delphi не может генерировать HTML-формы автоматически, запрашивая описания колонок в вашей базе данных.
Следующий шаг заключался в создании библиотек DLL для страниц, управляемых данными (при желании одна DLL может запускать несколько страниц). В процессе работы браузер фактически открывает не саму HTML-страницу, а библиотеку DLL с помощью интерфейса ISAPI или NSAPI. Эта DLL считывает типовой HTML-файл и заполняет предварительно определенные коды значениями, извлекаемыми в ходе запроса к базе данных, который выполняется через DLL. Затем она передает полученную HTML-строку назад, в интерфейс ISAPI, и в конце концов браузеру пользователя через службу HTTP.
Одно из преимуществ подхода, основанного на применении DLL, заключается в том, что это позволяет программировать Web-узел для выполнения почти любых задач. Другое состоит в том, что собственные 32-разрядные DLL изначально позволяют использовать многопотоковость Windows NT и управление ресурсами Web-сервера.
Однако построение таких DLL может отнимать много времени. И, поскольку для них не требуются визуальные компоненты, вам не придется воспользоваться возможностями прекрасных графических оформителей Delphi (помните, что стандартному браузеру можно пересылать только строки на языке HTML). По большей части разработка прикладных программ для Web воспринимается как шаг назад к временам, когда еще не было таких средств, как Delphi. Большая часть рабочего времени уходит на программирование на языке Паскаль, для чего необходим огромный опыт.
Главное преимущество языка Object Pascal компании Borland заключается в том, что он позволяет быстро создавать библиотеку объектов, а это ускоряет дальнейшую разработку. В качестве примера приведем такой факт: представителю Borland потребовалось всего несколько часов для создания HTTP-модуля для этого обзора на языке Паскаль с возможностью компоновки с вашей DLL. Эта библиотека скрывает реальные HTML-коды от разработчика, замещая такие функции, как способность представлять раскрывающиеся списки на странице с запросом к базе данных. Borland сделает эту библиотеку доступной бесплатно на своем Web-сервере.

Подключения баз данных

Работа с базами данных обеспечивается благодаря применению процессора Borland Database Engine (BDE), который должен быть установлен и настроен на Web-сервере, позволяя осуществлять доступ ко всем СУБД, совместимым со средой Delphi. В этот обширный перечень входят IBM DB2 (только 16-разрядная версия), Informix, Interbase, Microsoft SQL Server, Oracle и Sybase SQL Server. Можно также использовать источники данных ODBC и IDAPI, причем процессор BDE способен обслуживать гетерогенные запросы к базам данных.
Процессор BDE загружается в память при первом обращении Web-сервера к ISAPI или NSAPI. С этого момента он становится доступным и управляет подключениями к базам данных. Оставаясь резидентным до тех пор, пока Web-сервер работает, он обеспечивает устойчивые подключения к базам данных для многочисленных пользователей - в отличие от обычных прикладных программ, основанных на применении интерфейса CGI, которые подключаются и отключаются от базы данных при каждом запросе. BDE сводит к минимуму число требуемых подключений к базам данных и обеспечивает управление подключениями, создавая и удаляя связи в зависимости от нагрузки.
В пакете Delphi предложено совсем немного вариантов выбора, когда дело касается составления отчетов в ЛВС. Он выпускается в комплекте с полнофункциональным пакетом ReportSmith, а также с программой Quick Reports компании Quick Soft Development для менее сложных задач по подготовке отчетов. Однако ни одна из этих программ не подготовлена для применения в среде Web. Теоретически возможно представление любых данных, которые можно получить с помощью SQL-запроса, но подготовка сложных отчетов, таких, как перекрестные таблицы, перекладывается на плечи программистов с опытом работы на языках SQL и Паскаль.