КОНСТАНТИН НАГАЕВ,
Опубликовано: 18.5.1998
Датой рождения технологии Active Server Pages (далее ASP) можно считать ноябрь 1996 года, когда Microsoft Corporation на конференциях "Site Builders" и "Professional Developers" впервые представила новую технологию Active Platform.
И поэтому мне непонятно, почему через полтора года эта технология присутствует в Сети все еще в столь младенческом состоянии (чтобы убедиться в этом, достаточно, "скользя" по сайтам, обращать внимание на расширение файлов в URL: не так уж часто встретишь .asp). Мне кажется, что появление ASP среди Интернет-технологий можно сравнить с появлением Visual Basic для разработки Windows-приложений (постараюсь убедить в этом, чтобы не показаться апологетом "Большого Брата Б.Г.").
Так, широко провозглашенный лозунг "Активного Интернета", кроме "активных" обсуждений, практически ничего с собой не принес. Если не считать изредка всплывавших на некоторых сайтах CGI-скриптов, которые в основном были просто "фенечками" для увеличения количества хитов. Не скажу, что это плохо, скорее, это детская болезнь всех Интернет-технологий. Даже Java не избежала этой участи: пока что ничего серьезного, написанного на этом языке, не наблюдается (в Сети), а вот "бегущих строк", красивых подпрыгивающих и вертящихся на все лады картинок и ремиксов из классического прошлого (тетрис, puzzle и т. п.) более чем достаточно (да, еще часы забыл - этих просто море). Может быть, именно из-за этого Java не воспринимается как настоящая рабочая лошадка?
А вот ASP сразу заработали всерьез. Это решение было гениально просто: обычный ISAPI-фильтр , работающий в контексте процесса MS Internet Information Server, начиная с версии 3.0 (хотя уже давно есть ASP и для других серверов), представляющий собой почти обычный препроцессор, но насколько мощный и гибкий! И отличие от препроцессора в возможности работы с COM-объектами (в контексте ASP их называют Installable components), они-то и добавляют львиную долю мощности. Проект под названием Denali почти идеально вписывается в технологию "клиент-сервер", теперь уже не настолько популярную. Хотя, что может лучше подходить для Сети, чем технология создания приложений "логически централизованных - физически децентрализованных". Говоря простым языком, логически централизованные - это распределенные вычислительные системы, доступные и управляемые из любой точки, а физическая децентрализация - это возможность расширения, масштабирования, повышения надежности.
В первую очередь, ASP имеет достаточно развитый командный язык. И даже не один, а как минимум два: VBScript и JScript. "Как минимум", потому что объектная модель OLE для скриптовых машин позволяет легко встраивать в среду другие языки. Поэтому разработчикам на Perl или REXX можно не переучиваться, а использовать свой накопленный непосильным трудом опыт. И все же языком "по умолчанию" для ASP является VBScript, фактически подмножество Visual Basic, и в этом, конечно же, нет ничего удивительного - продукт Microsoft Corporation. JScript, с другой стороны, - подмножество Java и так же похож на С++. И у той, и другой скрипт-машины есть как свои преимущества, так и недостатки. Здесь (как, впрочем, и всегда) "на вкус и цвет…", но если вкратце, то JScript все-таки кажется помощнее и почти дотягивает по возможностям до "взрослых" (нескриптовых) языков. Это далеко не ассемблер, практически невозможно поковыряться в потрохах у системы, но, по всей видимости, разработчики ASP посчитали это дополнительной защитой от вторжения извне.
Что касается самого кодирования, то оно не требует никаких дополнительных затрат в виде специальных сред разработки. Microsoft рекомендует использовать MS InterDev, почти во всех современных версиях HTML-редакторов (например, Allaire HomeSite) есть поддержка тегов ASP, но, к примеру, я использую обычный (правда, очень хороший) текстовый редактор TextPad версии 3.2.2 от компании Helios Software Solutions. Код "вставляется" прямо в HTML-текст в окружении специального тега
<% ASP-код %>,
после этого файл нужно дать с расширением .asp, чтобы он был передан на вход ASP-фильтра для переработки в обычный HTML и выдачи IIS-серверу, который уже и отдаст результат браузеру. Причем любому, не имеет значения, MS IE это, Netscape Navigator или браузер "третьего мира". Главное, чтобы он понимал HTML, а это ведь вообще-то первостепенная задача браузера. Чем не универсальная платформа, к которой долго и упорно стремятся все, кому ни лень? Конечно, все же есть отличия в браузерах, то есть в их интерпретации стандартного HTML. Всем это знакомо: одни и те же странички, написанные на самом что ни на есть стандартнейшем HTML, смотрятся иногда совершенно по-разному в IE и NN. Так что можно даже вешать на них не "Best viewed with…", а "Viewed only with…" (что-то навеяло "Only white", не правда ли?). Но по этому поводу недавно в "Компьютерре" была небольшая, но интересная заметка по поводу "невидимок" 1. А вообще-то ASP имеет возможность справиться и с этой "проблемой". Просто определяется тип браузера, с которым пришли, и навигация идет по страницам, написанным для этого типа.
Происхождение одной из труднейших проблем при создании Интернет-приложений в самой природе Сети. Это отсутствие гарантированной постоянной связи, и, отсюда, невозможность создания непрерывного канала для отслеживания действий конкретного клиента. Единственный выход из этой ситуации - если клиент при каждом обращении будет "представляться". Именно это и сделано при помощи "куки". Немало копий было поломано по поводу безопасности "кук", но на данный момент, вроде бы, решили, что они достаточно безвредны, если не считать нескольких десятков байт, съедаемых на диске. Зато пользы от них, как можно увидеть, гораздо больше. После старта сервер выдает каждому пришедшему клиенту уникальный идентификатор (SessionID) в виде "куки" и в течение сессии может понимать "кто - где". Я не зря написал "после старта", потому что ID уникальны только в период непрерывной работы сервера. Если остановить и снова перезапустить сервер, то можно получить значения такие же, как до перезапуска. Поэтому применять SessionID в приложениях в виде уникального идентификатора не рекомендуется - лучше формировать свои.
Для настройки сессии можно использовать два объекта: Application и Session, каждый из которых имеет по два обрабатываемых события OnStart и OnEnd. Первый клиент, пришедший на сервер, вызывает создание объектов Application и Session и отработку для них своих процедур OnStart. Каждый последующий вызывает создание объекта Session для себя и отработку OnStart для своего объекта. После ухода клиента для соответствующего объекта Session отрабатывается процедура OnEnd, и объект уничтожается. С уходом последнего, кроме того, вызывается процедура OnEnd для объекта Application, и уничтожается объект Application. Уход клиента происходит либо по тайм-ауту, период которого задается в минутах свойством Timeout объекта Session (по умолчанию 30 минут), либо силовым методом Abandon того же самого объекта. Фактически, объект Session нужен для персонализации, то есть хранения переменных среды конкретного клиента, а Application - для хранения глобальной информации всего приложения. Процедуры для обработки событий OnStart и OnEnd описываются в файле Global.asa, который должен лежать в корне виртуального каталога.
Все усилия для создания активного Интернет-приложения пропадут впустую, если не будет механизма приема-передачи данных. ASP выполняет это с помощью двух встроенных объектов: Request и Response. Используя свойства и методы этих объектов, можно добиться настоящей интерактивности, единственным неудобством остается необходимость закачки новой страницы каждый раз при исполнении какого-нибудь действия. Но тут не стоит забывать, что ASP - это именно серверная часть в клиент-серверной модели, а для клиентской части существуют другие решения.
Как уже было сказано выше, COM-объекты играют важную роль в жизни ASP. Вы можете использовать собственноручно созданные компоненты, но можно обойтись и набором предустановленных. За достаточно длительный период использования ASP нам понадобился всего один самодельный компонент, который занимается отправкой почтовых сообщений (большое спасибо за это Леониду Агранонику). Но вот без одного COM-объекта почти невозможно обойтись - это Database Access. Он обеспечивает доступ к данным, используя ActiveX Data Objects (ADO). Все, что для этого нужно, это создать объект Database Access, указать ему Data Source Name (DSN), соединиться с источником данных, и дальше возможности ограничиваются практически только вашей фантазией. Так как используется ODBC, источник данных может быть любым: сегодня драйверы ODBC написаны для всевозможных вариантов и не ограничиваются системами управления базами данных. Более того, с выходом объектной файловой системы (Object File System), которую Microsoft обещает продемонстрировать в NT 5.0, ADO будут способны управлять файловой системой в стиле баз данных. Как прямой потомок Data Access Objects (DAO) и Remote Data Objects (RDO), модель ADO очень похожа на своих предшественников, вплоть до того, что программист, имеющий опыт работы с DAO или RDO, способен практически сразу использовать все возможности ADO. Разработчики утверждают, что внешне единственное отличие от старых моделей - это только ускорение, упрощение и увеличение надежности работы приложений, и представляют ADO как ядро новой технологии универсального доступа к данным (Universal Data Access).
Одним из перспективных направлений будет Windows Scripting Host, который появится в NT 5.0 и Win98. Это одна из стратегий, направленных на снижение усилий по администрированию (ZAW). Действительно, администраторы могут удаленно (из любой точки Сети) переконфигурировать системы или использовать скрипты для их автоматической настройки в зависимости от условий. Мне кажется, это начинание благородное, и давайте оценим его по достоинству.
Microsoft технологию ASP продвигает достаточно активно. Об этом говорит хотя бы то, что в MS Internet Information Server 4.0 она уже входит составной частью, в отличие от IIS 3.0, где ASP представляли собой продукт, который было нужно инсталлировать отдельно. Кроме того, MS Site Server и MS Site Server Commerce Edition, позиционируемые как универсальные инструменты для строительства активных Веб-сайтов, являются теми же самыми ASP с огромным набором специализированных компонентов. Говоря иными словами, их можно написать самому. Или дописывать по мере необходимости, развивая свой сайт не только "вширь", но и "вглубь". Напоминает что-то вроде серверного тамагочи.
Вот, вкратце, и все. Если стало интересно (или есть проблемы, связанные с использованием ASP), многое можно найти по адресам www.activeserverpages.com, www.ASPhole.com, www.15seconds.com и, конечно же, www.microsoft.com/iis/. Или обращайтесь ко мне konstn@quarta.com, чем смогу - помогу.
Сайт-невидимка получил первую премию. #14 (242). - Прим. ред.