Разработка Web-приложений с помощью мощных CGI-инструментов

 

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

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

Для обозначения Web-среды, в которой на основе разработанных вами сценариев можно создавать динамические HTML-тексты, мы выбрали термин "мощный CGI-инструмент" (Fat CGI), поскольку каждый из этих продуктов является программой общего назначения, определяющей язык сценариев для создания динамических HTML-страниц. Мощный CGI-сценарий всегда выполняется не на клиентской стороне, а на стороне сервера. Такие сценарии просты в написании, запускаются на центральном узле (Web-сервере) и предоставляют пользователям возможность вводить данные через Web-браузер в интерактивном режиме. Язык сценариев также обеспечивает доступ к СУБД, например таким, как Oracle, SQL Server, Paradox, Access и др., посредством обращения к ним на языке их собственных средств или через интерфейс Open Database Connectivity (ODBC).

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

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

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

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

Самые, самые

С помощью таких инструментов, как IntraBuilder фирмы Borland International, HTMLScript фирмы HTMLScript, Cold Fusion и WebMate/Foundation фирмы Allaire и CGI Toolkit фирмы Pictorius, интерактивные Web-приложения могут использовать способность Web-браузера действовать как простая клиентская программа для ввода и вывода данных. Некоторые продукты, например CICS Gateway фирмы IBM, транслируют HTML в другие языки описания страниц (CICS Gateway транслирует HTML-текст в поток данных для терминала 3270), а следовательно, не подходят под наше определение мощных CGI-инструментов.

Для исследования технологии мощных CGI-инструментов мы разрабатывали одно и то же приложение в трех средах: IntraBuilder, HTMLScript и WebMate/Foundation. Мы выбрали эти продукты потому, что они отражают текущий уровень развития мощных CGI-инструментов. И хотя для организации доступа к базе данных пакет Cold Fusion фирмы Allaire предоставляет встроенный удобный HTML-подобный язык сценариев Database Markup Language (DBML), возможности для создания Web-страницы с динамически меняющимися содержанием и внешним видом у него отсутствуют. Однако следует отметить, что с помощью Cold Fusion можно выводить на экран браузера разные Web-страницы в зависимости от того, как выполняется то или иное логическое условие, включенное в HTML-текст. Недавно был анонсирован продукт CGI Toolkit фирмы Pictorius, представляющий собой специализированную версию фирменного языка визуального программирования ProGraph и ориентированный на создание CGI-сценариев и асинхронных CGI-программ для компьютеров Macintosh.

По нашему мнению, пакет IntraBuilder обещает стать чем-то вроде системы Turbo Pascal для интрасетей: его интерфейс, основанный на буксировке объектов мышью, и простота использования могут быть столь же эффективными при работе в интрасетях, как и Turbo Pascal в свое время при работе с ПК с MS DOS. В противоположность ему WebMate/Foundation - это продукт для управления Web-узлом на базе языка создания сценариев. В чистом виде HTMLScript представляет собой мощную среду разработки CGI, которой, однако, недостает визуальных средств и программ-"мастеров", имеющихся в IntraBuilder.

Мощные CGI-инструменты позволяют вам создавать интерактивные приложения с целью использования их в сфере бизнеса. В качестве простого примера возьмем базу данных, с помощью которой фирма по продаже автомобилей классифицирует своих заказчиков в соответствии с полом и доходами. Так, если известно, что клиент купил автомобиль Lincoln Town Car, то CGI-программа дополнительно может предложить покупателю в виде поощрения на выбор бесплатную поездку в Европу или ее стоимость наличными. При покупке же более дешевого автомобиля Ford Escort эта же программа задаст уже другие вопросы о клиенте, и покупатель данного автомобиля не получит предложения о поощрении в виде бесплатного отдыха.

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

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

Результаты испытаний

Наши исследования мощных CGI-инструментов показали, что с их помощью можно разрабатывать сложные, ориентированные на обработку транзакций приложения. Последние, разработанные в каждой из трех выбранных сред, в окне браузера выглядят и "ведут" себя во многом одинаково. Однако разработка их в визуальной среде IntraBuilder фирмы Borland дала колоссальную экономию времени. Еще один плюс пакета IntraBuilder - использование JavaScript в качестве основного языка сценариев. WebMate/ Foundation и HTMLScript предлагают полноценный, но отличный от JavaScript встроенный язык сценариев, который можно использовать непосредственно в HTML-текстах. Главным компонентом здесь является препроцессорный программный модуль, устанавливаемый на Web-сервере для перехвата поступающих на браузер и исходящих от него потоков данных.

IntraBuilder содержит набор модулей визуальной разработки Designer, средства связи для Web-сервера (так называемые программы-брокеры), средства для работы с базой данных Borland Database Engine и программы-агенты. Брокеры поддерживают протоколы сервера и прикладные программные интерфейсы, включая Netscape Application Programming Interface (NSAPI) фирмы Netscape Communications, Internet Server API (ISAPI) фирмы Microsoft и CGI, а агенты создают динамический HTML-код из форм и отчетов, реализованных на языке JavaScript. Этот язык проще для изучения, чем язык Java, и включен в самые последние версии Netscape Navigator и Microsoft Internet Explorer.

Язык JavaScript основан на динамической объектной модели (позволяющей создавать классы и объекты посредством одиночного наследования) и предоставляет возможность автоматически преобразовать типы данных (при написании программ на JavaScript вам не надо беспокоиться о них). В IntraBuilder к JavaScript добавлены некоторые программные расширения. С их помощью вы можете использовать массивы литералов и программные блоки, обеспечить обработку исключительных ситуаций. При обмене информацией с базами данных пакет IntraBuilder работает либо с ODBC, либо с API-функциями самой системы управления базой данных. Визуальные вспомогательные средства разработки, называемые "мастерами" (wizards), определяют содержание и внешний вид ваших Web-страниц. Если вы не хотите воспользоваться ими и предпочитаете создавать визуальные элементы прямо на JavaScript, пакет IntraBuilder предоставит вам и такую возможность.

Главный исполняемый файл пакета HTMLScript представляет собой стандартное CGI-приложение и совместим с любым Web-сервером, имеющим CGI-интерфейс. HTMLScript способен работать с интерфейсом NSAPI, так как включает в себя разделяемую библиотеку, с помощью которой возможно обращение к функциям NSAPI прямо из сценария. Для каждого элемента оформления Web-страницы, будь то кнопка, поле для ввода текста или поле типа checkbox, ниспадающее меню либо список, ваша HTMLScript-программа может использовать именованные ссылки. Язык HTMLScript похож на язык BASIC, и в нем содержится богатый набор средств для формулировки условий и обработки данных.

Пакет WebMate/Foundation также представляет собой стандартный исполняемый CGI-модуль. Его язык WebScript основан на языках Perl и Cи++, а не на языке BASIC и позволяет использовать объектно-ориентированные программные конструкции. Это дает вам возможность разрабатывать приложение в виде набора объектов, которые могут быть повторно использованы в других программах.

IntraBuilder предназначен для работы в средах ОС Windows NT и Windows 95, а HTMLScript - в различных версиях Unix. По утверждению представителей фирмы, сейчас ведется работа над переносом HTMLScript в среду Windows NT. Пакет WebMate/Foundation работает как в Unix, так и в Windows NT.

Где лучше использовать мощные CGI-инструменты

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

Кроме того, в случаях более сложных, чем приведенный нами пример, в частности при работе с базой данных, вам трудно обойтись без мощных CGI-инструментов. Хорошей альтернативой реализации подобных приложений может быть мини-приложение Java (или их группа). Но, как известно, программисты и администраторы интрасетей пока не готовы работать с ними и поэтому использование CGI-инструментов все еще носит широкомасштабный характер.

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

Java (или традиционная клиент-серверная среда с мощным клиентом) позволяет производить проверку правильности содержимого поля на клиентской стороне немедленно, тогда как выполняющееся на сервере приложение, разработанное с помощью мощных или обычных CGI-инструментов, для проверки корректности введенных данных требует, чтобы пользователь нажал кнопку submit. Мы также наблюдали, как при наличии большого числа редактируемых полей ввода мощные клиенты сталкивались с возникающими проблемами. Так, размещение на клиентской машине программного кода, содержащего множество редактируемых полей ввода, основанных на создании подклассов управляющих элементов, очень часто приводит к тому, что программное обеспечение работает совсем не так, как было задумано. Программы "ведут себя" странным образом и в самый неподходящий момент могут редактировать совсем не те данные или вызывать общее нарушение защиты (General Protection Fault) прямо во время ввода данных. Кроме того, редко удается сделать такие программы кроссплатформенными.

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

***

Рассмотренные инструментальные средства позволяют организовать сложный и независимый от используемой платформы ввод и вывод данных, и для этого не надо становиться экспертом по HTML или CGI. Но такие средства работают не на каждой серверной платформе; при выборе последней вам придется прийти к компромиссу между производительностью и возможностями инструментальных средств и проявить свою способность мыслить как программист, чтобы разумно использовать их возможности.

Мощные CGI-инструменты, скорее всего, принесут мало пользы тем Web-администраторам, которые хорошо представляют себе, чтоў должно быть отображено на экране, но не способны свободно выразить свои желания на языке программирования. Со временем у этих инструментов появится больше возможностей и они станут проще в использовании. И, хотя мини-приложения Java непременно приобретут широкую популярность, сложные CGI-приложения еще долго будут "оставаться" сетевой "рабочей лошадкой".