Дата публикации: 3/11/01
Механизм
действия ASP (Active Server Pages) в чем-то схож
с CGI - сам сценарий выполняется на сервере, а
не на клиентской машине, клиент же получает уже
готовую сгенерированную HTML-страницу.
Основное же отличие этих двух интерфейсов
состоит в том, что CGI выполняется сервером при
помощи интерпретатора соответствующего языка, на
котором написан скрипт (ведь CGI скрипты пишутся
не только на Perl). Тогда как ASP-скрипт
выполняется в одном адресном пространстве с
интернет-сервером. То есть при этом не
задействуются внешние интерпретаторы, а
используются динамические библиотеки, в
результате чего скрипт выполняется в несколько
раз быстрей.
Во всех учебниках по ASP почему-то
подразумевается, что ASP-скрипт должен писаться
на VB Script. Мало того, что VB Script для
многих - не очень знакомый язык, но он к тому
же, с моей точки зрения, еще и менее
функционален, чем всем привычный JavaScript. Так
вот, история здесь примерно та же что и в случае
с CGI, когда сам интерфейс для многих
ассоциируется с наиболее популярным языком Perl.
Точно так же ASP ассоциируется с VB Script, хотя
для него с таким же успехом может применяться и
JavaScript (что я, как правило, и делаю - уж
очень мне недостает некоторых возможностей
JavaScript в VB Script'е). Простейшее применение
ASP состоит в переносе скриптов, отвечающих за
динамическое генерирование потока вывода, с
клиентской машины на сервер, что позволяет
уменьшить нагрузку на клиента, не передавать ему
излишнюю информацию и, возможно, скрыть от него
сам код скрипта. Например, необходимо, чтобы на
странице появлялось приветствие пользователю. Но
оно должно быть различным, в зависимости от
времени суток. Эту задачу можно решить с помощью
динамической генерации потока вывода на
клиентской машине:
<html>
<head>
<title>Пример
1 - генерация потока
вывода</title>
</head>
<body>
<script
language="javascript"
type="text/javascript">
<!--
var
strGreeting ="Доброе утро!";
var objDate =
new Date();
if ((objDate.getHours() > 11)
&& (objDate.getHours() < 18))
strGreeting ="Добрый день!";
if
(objDate.getHours() > 17) strGreeting
="Добрый
вечер!";
document.write('<h1>' +
strGreeting +
'</h1>');
//-->
</script>
</body>
</html>
Или
тоже самое на VB Script:
<html>
<head>
<title>Пример
1 - генерация потока
вывода</title>
</head>
<body>
<script
language="VBscript"
type="text/VBscript">
<!--
dim
strGreeting
strGreeting ="Доброе
утро"
If Hour(Now) > 11 And Hour(Now)
< 18 Then
strGreeting ="Добрый
день"
ElseIf Hour(Now) > 17
Then
strGreeting ="Добрый вечер"
End
If
document.write(strGreeting)
//-->
</script>
</body>
</html>
Но
если у пользователя отключена поддержка скриптов
или (что правда сейчас менее вероятно) браузер
настолько старый, что скрипты понимать не
способен, то пользователь не увидит вообще
ничего! И здесь может спасти как раз ASP. Пример
этой же задачи выполненной в ASP будет выглядеть
так:
<%@ language="VBscript"
%>
<html>
<head>
<title>Пример
2 - генерация
ASP-страницы</title>
</head>
<body>
<%
dim strGreeting
strGreeting ="Доброе
утро"
If Hour(Now) > 11 And Hour(Now)
< 18 Then
strGreeting ="Добрый
день"
ElseIf Hour(Now) > 17
Then
strGreeting ="Добрый вечер"
End
If
%>
<h1><%= strGreeting
%></h1>
</body>
</html>
При чем то же самое можно было выполнить и в
JavaScript. Следует обратить внимание на то, что
в начале файла появляется конструкция:
<%@ language="VBscript"
%>
Она определяет, какой язык сценария
используется для данной страницы. Для каждой
страницы язык может быть своим. А сами фрагменты
серверного кода обозначаются угловыми скобками
со знаком процента: <%
%>
В результате
выполнения сервером данного скрипта пользователь
получит следующий HTML-код (предполагая что на
дворе уже больше 6 часов вечера):
<html>
<head>
<title>Пример
2 - генерация
ASP-страницы</title>
</head>
<body>
<h1>Добрый
вечер</h1>
</body>
</html>
Очевидно, что с таким кодом ни у одного
пользователя проблем не возникнет! Но это
настолько простое и даже примитивное
использование технологии ASP, что сравнить его
можно лишь, как это ни банально звучит, с
забиванием гвоздей микроскопом. На самом деле
сфера применения ASP достаточно широка. И я,
пожалуй, не смог бы представить такой задачи в
Интернете, которую нельзя было бы решить при
помощи средств ASP.
[ ЧАСТЬ 1. ASP - Что за зверь, этот ASP? ]
[ ЧАСТЬ 2. ASP - Где этот зверь водится? ]
[ ЧАСТЬ 3. ASP - Откуда у ASP ноги растут? ]