ASP - Где этот зверь водится?
ASP - детище Microsoft'a и, вполне
естественно, что и его
поддержка осуществляется Microsoft'овскими
же интернет-серверами. В первую
очередь Internet Information Server,
правда, начиная с 3-й версии. Так
что если вы работаете под IIS 3.0,
то можете смело использовать в
своих проектах ASP-технологию,
сервер поймет. Но далеко не у
всех стоит Windows NT Server. Но и это не
беда.
Технологию ASP поддерживают
также и Windows NT Workstation при
установленном Peer Web Services (одноранговые
веб-сервисы), а также и Windows 95/98
при установленном Personal Web Server'e.
Возможности у них чуть скромнее,
чем у IIS. Так Peer Web Services
обеспечивает подключение,
кажется, только до 10 клиентов, а
Personal Web Server не поддерживает
протокол Gopher. А в остальном, что
касается ASP, возможности их
почти аналогичны.
Как правило, IIS используется
по своему прямому назначению, т.е.
как веб-сервер, Peer Web Services на Windows
NT Workstation и Personal Web Server под Windows 95/98
- для разработки и тестирования
ASP-страниц.
Наверняка многие читатели
хотят поэкспериментировать с ASP,
и Personal Web Server (PWS) - наилучшая
платформа для таких
экспериментов. Все что вам
нужно, так это компьютер, Windows9x
или WindowsMe, и остается лишь
установить PWS. Интернет вам для
таких экспериментов не
потребуется… Так как для
большинства это актуально, то о
PWS подробнее сказано в конце
статьи (считайте это
приложением для тех, кто решил
установить себе этот сервер).
Как ASP размножается?
Точно так же, как и в случае HTML-сайтом,
папка с вашим проектом будет
находиться скорее всего в
каталоге \wwwroot, на который
будет проецироваться имя вашей
машины. Только, если для запуска
по умолчанию в HTML используется
файл index.htm, то в ASP это будет
файл default.asp.
Кроме того, в корневом
каталоге вашего сайта должен
находиться файл global.asa. Это
файл глобального окружения
вашего проекта. В нем можно
задавать необходимые действия,
которые должны быть выполнены
при инициализации интернет-приложения,
при начале новой сессии, а также
при закрытии сессии или
приложения.
Еще файл global.asa может
содержать объявления
глобальных переменных уровня
приложения или уровня сессии.
Хотя их можно создавать,
задавать и изменять и в
дальнейшем с других страниц
проекта.
Теперь немного подробнее о
том, что подразумевается под
терминами приложение и сессия.
Приложение - это отдельное
адресное пространство
создаваемое сервером для
работы ваших страниц. Оно
инициализируется при первом же
обращении к любой из страниц
вашего проекта и не закрывается
до тех пор, пока хоть одним их
пользователей, находящихся на
вашем сайте, открыта хоть одна
страница.
Сессия же создается, когда
новый пользователь входит на
ваш сайт, и существует до тех
пор, пока он здесь находится.
Вообще-то пользователь может
открыть страницу, и оставить ее
открытой, продолжая работать в
других окнах. На этот случай
существует временное
ограничение - если пользователь
в течении 20 минут (по умолчанию,
значение может быть изменено)
не производит никаких действий,
т.е. не обращается к другим
страницам, не передает каких
либо запросов или данных, то его
сессия закрывается. То есть все
переменные окружения,
созданные для его сессии
уничтожаются, освобождая
память. Это особенно важно для
проектов с большой
посещаемостью.
При разработке ASP-проекта в MS
Visual InterDev (основном средстве
разработки ASP-проектов) файл global.asa
создается автоматически вместе
с основными файлами и папками
проекта (об этом чуть позже). В
начале он выглядит так (комментарии
перевел я):
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
'В этом файле вы можете указать
специальные обработчики для
событий, которые будут
'запускаться автоматически при
наступлении соответствующего
события. Для создания
'обработчиков просто создайте
подпрограмму с именем из списка
внизу, соответствующим
'событию, для которого вы хотите
создать разработчик. Например,
для обработчика начала
'сессии вам надо поместить
следующий код в этом файле (без
знаков комментария):
'Sub Session_OnStart
'** Разместите здесь свой код **
'End Sub
'имя обработчика описание
'Session_OnStart Запускается, когда
пользователь в первый раз
запускает
' любую страницу вашего
приложения
'Session_OnEnd Запускается, когда
истекает время ожидания для
пользователя
' или когда он покидает
приложение
'Application_OnStart Запускается, когда
первая страница вашего
приложения
' запускается в первый раз кем-либо
из пользователей
'Application_OnEnd Запускается, как
только сервер прекращает
работу
</SCRIPT>
В общем и целом здесь все более-менее
очевидно. Весь файл состоит из
одного скрипта, выполняемого
также на сервере, о чем говорит
атрибут RUNAT=Server. Кстати в global.asa
лучше придерживаться VB Script, так
я, например, несколько раз имел
разные мелкие недоразумения с
JavaScript'ом , хотя причину их до
конца не смог понять - просто на
VB Script работало, а на JavaScript - нет (но
это не всегда). Скрипт в файле
global.asa может состоять и из
нескольких разделов. В таком
случае каждый раздел должен
быть заключен в теги скрипта:
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
...
</SCRIPT>
Переменные приложения и
сессии можно задавать и
изменять и с любых страниц
приложения:
<%@ language="VBscript" %>
<html>
<head></head>
<body>
<%
Application.Lock
Application("Time") = Now
Application.Unlock
%>
</body>
</html>
и в файле global.asa
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Session_OnStart
Session("Time") = Now
End Sub
</SCRIPT>
Методы Lock и Unlock
требуются в данном случае для
того, чтобы не происходило
накладок между различными
сессиями, ведь переменные
приложения могут
использоваться сразу
несколькими пользователями. |