О WEB технологиях

03 февраля 2000 09:58
 9410

Если вы профессионально занимаетесь поддержкой WEB-сервера, то наверняка согласитесь, что современный
сайт должен иметь три важнейших свойства: регулярную обновляемость, интерактивность и необозримость.
«Волшебная» WEB-страница, обладающая перечисленными качествами, в идеале уникальна для каждого
посетителя, поскольку содержит информацию, наиболее интересную в данный момент именно ему, и
сверстана таким образом, чтобы у клиента не возникло проблем с воспроизведением. В то же время должно
создаваться впечатление, что совсем рядом имеется гигантская онлайновая библиотека, любая часть которой
легко доступна, хотя полное ее содержимое за конечное время скопировать невозможно.

Тот, кто начинает заниматься WEB-дизайном, составляя собственную бесплатную страничку, испытывает
немалые затруднения, когда сталкивается с необходимостью наладить работу полноценного сервера. Хорошо
освоив язык HTML и привыкнув решать все проблемы, расставляя теги в том или ином порядке, он пробует
создать некое подобие активного сайта, состоящее из огромного количества статических страниц. При этом он
использует либо «самопальные» программы, либо специальные средства «малой механизации» типа Latte
(http://www.latte.org) или HTML Plain (http://artho.com/webtools/plain/). При этом возникает множество довольно
неприятных затруднений. Небольшое, но кардинальное изменение в содержимом сайта приводит к
«перелопачиванию» всех имеющихся страниц. Далее, как правило, тысяча файлов размером 1 Кб каждый
занимают на диске значительно больше, чем 1 Мб, из-за эффекта фрагментации, и для малобюджетных сайтов
эта проблема может встать довольно остро. Кроме того, сам процесс копирования большого количества
страниц с локального вебмастерского компьютера на Internet-сервер грозит довольно сильно затянуться,
особенно если в вашем распоряжении только FTP-доступ. В статическом варианте вы можете добиться
некоторого подобия интерактивности, запуская на стороне клиента апплеты Java или сценарии JavaScript, но
ни в коем случае не стоит делать такие технологии основой вашего сайта. Оставьте, пожалуйста, клиенту
право отключить все, кроме отрисовки HTML-страниц.

На самом деле нормальный живой сайт должен состоять из базы данных, содержащей актуальные сведения, и
WEB-сервера, осуществляющего их интерактивную публикацию «на лету», согласно уникальному запросу
пользователя. Давайте сравним несколько вариантов организации такого сервера.

В древнейшие времена (года 3 назад) активными серверами были почти что исключительно поисковые
машины. Работали они в подавляющем большинстве на UNIX-образных платформах, и взаимодействие
«БД—WEB» осуществлялось по следующей схеме: WEB-сервер получает атрибуты запроса (искомые слова,
номер тематического раздела, прочие опции) и запускает с соответствующими параметрами специальную
программу, которая обращается к базе данных и формирует результирующий HTML-текст, передаваемый
WEB-сервером клиенту. Единственной стандартной составляющей этого процесса был и остается формат
передачи параметров: CGI (Common Gateway Interface), остающийся в силе до наших дней. Программа же,
принимающая параметры и формирующая ответ — это просто исполнимый бинарный файл, такой же, как
системные утилиты. Не-дай-вам-бог разрабатывать CGI-программы на C++, Pascal-е и т. п.

Впрочем, уже юниксоиды-ветераны догадались, что стоит несколько унифицировать и стандартизировать
процесс генерации WEB-страниц «на лету», причем желательно использовать для этой цели язык
программирования, ориентированный на работу с текстами. Их выбор пал на Perl (http://www.perl.com) —
замечательный, невероятно мощный язык программирования, близкий к семейству командных процессоров
UNIX (*sh, awk, sed и т.п.). Perl содержит уникальные средства, позволяющие реализовать сложнейшие
алгоритмы по поиску/замене текста в файлах неограниченного размера при помощи считанных строк
программного кода. Кроме того, для Perl существует огромное количество библиотек-расширений. Perl —
интерпретируемый язык программирования, поэтому с точки зрения операционной системы все Perl-CGI
отрабатываются в рамках одного процесса (интерпретатора). Сам же Perl-интерпретатор может работать либо
как отдельная программа, либо как один из модулей популярнейшего WEB-сервера Apache
(http://www.apache.org).

Фактически Perl-интерпретатор представляет собой виртуальную машину для исполнения программ на
C++-подобном языке, имеет подсистему динамической памяти с «умной» сборкой мусора… Ничего не
напоминает? Ну, конечно же, Java Virtual Machine. Альянс Sun/Oracle не был бы самим собой, если бы не
предложил Java-технологию для активных WEB-серверов. CGI-программы, написанные на Java, называются
сервлетами (серверными апплетами). Они исполняются либо на независимой JVM, либо на JVM, встроенной
в WEB-сервер, например Apache JServ (http://java.apache.org). К слову сказать, сейчас появляется множество
независимых вариантов JVM с весьма близкими областями применения. Например, для того же Apache,
помимо JServ, обслуживающего только сервлеты, разрабатывается еще и более универсальный компонент
mod-java для реализации модулей Apache, написанных на Java. С другой стороны, существует абсолютный
аналог JServ — JRun, разработанный коммерческой фирмой Live Software (http://www.livesoft.com) и работающий
в комплексе с WEB-серверами от Netscape, Novell и др. Если вы хотите побольше узнать о сервлетах, то
почитайте http://www.servletcentral.com/. Строго говоря, преимущества сервлетов по сравнению с Perl-CGI
немногочисленны и неочевидны. Разве только совместимость… Perl, к сожалению, не имеет стандарта на
грамматику и развивается совершенно непредсказуемо. Например, интерпретаторы Perl 5.x не «переваривают»
большинство программ, написанных на Perl 4.x. В этом смысле Java выглядит намного привлекательнее.

Правда, отладка исходного текста сервлета — занятие, видимо, весьма трудоемкое и скучное. Ведь все
HTML-теги (а они занимают большую часть объема выходного файла) приходится генерировать функциями
вывода. Можно воспользоваться и специализированной библиотечкой Element Construction Set
(http://java.apache.org/ecs/index.html) или Java HTML Generator (http://www.website2u.com/htmlgen/), но при этом дело
просто сводится к замене элементов HTML на Java-классы, что только усложняет процесс разработки. Кроме
того, по-хорошему HTML-код вообще желательно не перемежать никакими Java- или иными операторами, во
всяком случае не на каждой строке — так было бы гораздо удобнее разделять работу дизайнера и программиста
при поддержке сайта.

Реализовала эту идею корпорация Microsoft, введя в третью версию своего WEB-сервера (MS Internet
Information Server) поддержку «Активных серверных страниц» (Active Server Pages, ASP). ASP — это HTML-файл,
в который в качестве псевдотегов вставлены фрагменты программного кода на VBScript или JScript.
Поддержка сайта, построенного на ASP, — дело простое, вполне доступное человеку с минимальными
программистскими и дизайнерскими навыками. Однако, как всегда, обогнав конкурентов в области
пользовательского комфорта, MS не особенно позаботилась об обеспечении надежности. Поведение сервера,
функционирующего на базе NT/IIS, плохо предсказуемо, а из-за закрытости MS-продуктов разобраться в
причинах периодических зависаний довольно сложно. Существуют реализации ASP для не-MS серверов
(http://www.chilisoft.com/chiliasp/), но там не эмулируется библиотека MS ADO, так что использование ASP от
Chili!Soft существенно ограничено невозможностью подключения баз данных.

Короче говоря, хотелось бы иметь нечто удобное, как ASP, стандартное, как Java, а также надежное и
открытое, как Apache и Linux. Такая вещь существует — это клон ASP на базе Java, иначе говоря, Java Server
Pages (JSP). Спецификацию JSP (http://java.sun.com/products/jsp/) предложила, естественно, корпорация Sun,
однако до программной реализации этого в общем-то несложного проекта у них дело не дошло. Зато нашлись
люди (http://www.klomp.org/gnujsp/), которые воплотили идею JSP в жизнь под флагом Свободного
программного обеспечения — этот проект называется GNUJSP. С технической точки зрения, GNUJSP — это
сервлет. Он работает, будучи загруженным, к примеру, в Apache JServ, перерабатывает «на лету» JSP-файлы во
временные сервлеты и инициирует их обработку той же виртуальной машиной, в которую загружен сам. Есть
и коммерческая реализация JSP — New Atlanta ServletExec 2.0 (http://www.newatlanta.com/).

JSP, мягко говоря, не самая быстрая платформа для активного сайта. То ли по этой причине, то ли по какой
другой, но данная технология широкого распространения не имеет. Кроме того, у проекта JSP непрерывно
появляются довольно странные конкуренты. К примеру, Locomotive (http://www.locomotive.org) — еще один
промежуточный сервер для обслуживания HTML-«болванок» с возможностью подключения к БД,
построенный на базе сервлетов. Совершенно непонятно, зачем его авторам понадобилось изобретать
собственный язык программирования Steam и чем он лучше Java.

Пожалуй, все эти «инкубаторы сервлетов» — не более чем тупиковые ветви эволюции ПО, возникшие на волне
интереса к активным серверам. Чего не скажешь о гипертекстовом препроцессоре PHP (http://www.php.net). Это
независимый проект-ветеран, появление которого можно объяснить паталогической неприязнью группы
программистов до-Java-эры к языку Perl. Первые версии PHP представляли собой интерпретаторы
C++-подобного языка, работающие в качестве CGI-программ. Используемый сегодня PHP3 может работать как
модуль Apache и допускает встраивание своих программ в HTML-текст, подобно ASP. Для PHP разработано
множество дополнительных библиотек, в том числе для работы с БД, генерации графики и PDF-файлов,
аутентификации пользователей и многого другого. На базе PHP функционирует более полумиллиона серверов,
в числе которых сайты Audi TT, Miss USA 1999, First USA Bank, US Army Publishing Agency и многие другие. И
это число продолжает расти. Во втором квартале сего года ожидается выход четвертой версии ядра PHP,
значительно более эффективной, чем распространенный сегодня вариант.

Так что же выбрать? Вероятно, наиболее реальными вариантами на сегодня являются Perl-CGI, ASP и PHP.
Выбор одного из них определяется, в основном, вашей программистской квалификацией. Впрочем, в любом
случае стоит иметь в виду возможность перехода на иную платформу. В информационном обществе
наибольшего успеха будет добиваться тот, кто все время использует самую эффективную технологию и
параллельно перестраивается на самую перспективную.

Константин Ефименко (webmaster@mobile.ru)

Источник: нет источника

Для комментирования войдите через любую соц-сеть:
Комментарии
Мнения

Вы пойдете на выборы 9 сентября?

Просмотреть результаты

Загрузка ... Загрузка ...

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: