Занятие 3. ASP
(Продолжительность занятия 50 минут)
Активные страницы сервера позволяют встраивать сценарии в HTML-документы. На этом занятии Вы познакомитесь с работой ASP и составляющими их компонентами.
Изучив материал этого занятия, Вы сможете:
Активные страницы сервера (ASP) позволяют комбинировать HTML, сценарии и повторно используемые серверные компоненты Microsoft ActiveX для создания динамических Web-узлов. ASP поддерживает выполнение сценариев Microsoft Visual Basic Scripting Edition и Microsoft JScript на сервере Internet Information Server. Вся обработка ASP осуществляется на сервере. В результате получается HTML-документ, адаптированный к возможностям Web-обозревателя конкретного пользователя.
Преимущества ASP
Основное достоинство ASP в том, что они позволяют Web-разработчику создавать динамическое наполнение узла. В результате Web-узел предоставит пользователю материалы, соответствующие его предпочтениям, демографическим данным или другим критериям (например, возможностям его Web-обозревателя).
Компонент ADO обеспечивает активным страницам средства доступа к некоторым источникам данньк. В состав Internet Information Server входят драйверы для баз данных Microsoft SQL Server, Microsoft Access и Oracle. Доступ к другим базам данным осуществляется средствами ODBC.
Интерфейс OLE DB расширяет возможности ODBC, обеспечивая доступ ко многим другим источникам данньк, включая файлы Microsoft Excel, текстовые файлы, файлы журналов, сообщения Microsoft Exchange Server, файлы индекснопоследовательного доступа (Indexed Sequential Access Method, ISAM), виртуальные хранилища, файлы AS/400 и т. д.
Все приложения Web-сервера Internet Information Server способны выполняться в одном адресном пространстве, что, безусловно, повышает эффективность и улучшает масштабируемость. По умолчанию приложения Internet Information Server реализуются в виде потоков в адресном пространстве Web-сервера;
новый процесс для каждого приложения не создается. С другой стороны, администратор может сконфигурировать любую программу для работы в отдельном адресном пространстве, чтобы изолировать ее от остальных Web-приложений на сервере (например, дабы гарантировать, что проблема в работе данного приложения не приведет к остановке сервера). Следует, однако, иметь в виду, что запуск приложений в отдельном адресном пространстве требует дополнительных затрат памяти.
Активные страницы сервера снабжены встроенными средствами отслеживания состояния и пользователей. Поскольку HTTP — протокол без постоянного соединения, стандартный Web-сервер не поддерживает информацию о работе клиентов. Однако для создания динамических приложений такая информация необходима, поэтому технология ASP обеспечивает ее поддержку с помощью объектов Application и Session. Состояние приложения доступно как в контексте приложения, так и в контексте сеанса. Объект Application представляет собой хранилище информации и объектов, доступных всем пользователям приложения, — в этом смысле он хранит глобальные объекты и данные. Объект Session содержит информацию об отдельных пользователях, причем для каждого из них создается своя копия объекта Session.
Кроме того, активные страницы сервера позволяют разработчикам повторно использовать программные компоненты и агрегировать их. Например, если компонент обеспечивает 85% функциональных возможностей приложения, разработчик вправе воспользоваться функциями компонента, а значит, самостоятельно ему придется разработать лишь оставшиеся 15% необходимых функций.
Составляющие элементы ASP
ASP состоят из трех основных элементов: сценариев, объектов и компонентов. Сценарии ASP совместимы с любым языком сценариев ActiveX и содержат серверные расширения, совместимые с HTML.
Объекты управляют состоянием приложения и предоставляют доступ к формам и параметрам HTTP-сообщений. Объекты бывают двух типов: встроенные и устанавливаемые.
Компоненты образуют хорошо известную программную модель; их можно создавать на любом языке и повторно использовать в других средах. Компоненты обеспечивают доступ к базам данных, расширяют возможности программ просмотра и улучшают средства навигации.
Сценарии
Сценарии ASP — это неотъемлемый элемент, необходимый для управления процессом работы страницы. По соображениям производительности и масштабируемое™ для реализации функциональных возможностей страниц следует применять не сценарии, а компоненты СОМ.
Активные страницы сервера основаны на механизме поддержки сценариев. Это позволяет им «понимать» различные языки написания сценариев, включая Microsoft Visual Basic Scripting Edition (VB Script), JScript и PERL. Разработчики могут создавать компоненты, взаимодействующие со средой выполнения сценариев, а значит, использовать новые сценарные языки.
Сценарии серверной части формируют структуру ASP. Разработчики приложений пользуются ими для обеспечения компонентов входной информацией, а также для реализации простых функций и выполнения вычислений.
ASP основаны на механизме поддержки сценариев, предоставляющем создателям Web-приложений объектную модель программирования. Язык VBScript — подмножество Visual Basic — включен в ASP, чтобы разработчики, знакомые с этой моделью, могли воспользоваться ее преимуществами.
Кроме того, в типовую установку ASP входит поддержка языка JScript — стандартного языка сценариев, который «понимает» большинство современных Web- обозревателей.
Доступ к компонентам с помощью свойств и методов
ASP обращается к компонентам с помощью свойств и методов. Свойства — это объекты данных, определяющие состояние объекта. Методы — функции, действующие над свойствами.
Для примера представьте себе компонент, который преобразует значение температуры по шкале Фаренгейта в значение по шкале Цельсия и наоборот. Два его свойства отвечают за значения температуры: одно по шкале Фаренгейта (Ftemp), a другое по шкале Цельсия (Ctemp).
Разработчик должен сначала создать объект — экземпляр компонента — и задать свойство, соответствующее преобразуемой температурной шкале. Помимо свойств, компонент из нашего примера имеет следующие методы:
Создав экземпляр объекта и задав температуру, подлежащую преобразованию, можно вызвать соответствующий метод — компонент преобразует температуру и поместит результат в соответствующее свойство, которое будет доступно из ASP и, следовательно, может быть использовано в Web-приложении.
Сценарий на VBScript для данного примера выглядит примерно так:
<%
Dim CelsiusTemp
Set-objconverter = Server. CreateObject("TempConv. Converter")
objconverter.Ftemp = 67
objconverter.Conv2Cels
CelsiusTemp = objconverter.Ctemp
Response.Write "Температура " & CelsiusTemp & " градусов по шкале Цельсия."
%>
Объекты ASP
Объекты — это компоненты языка программирования, обеспечивающие выполнение основных задач. Например, они обеспечивают доступ к управляющим элементам форм и параметрам состояния приложения. Объекты ASP делятся на встроенные и устанавливаемые.
Встроенные объекты
В архитектуре ASP имеется шесть встроенных объектов, которые не нужно создавать перед использованием в сценарии.
Server
Объект Server предоставляет доступ к ресурсам — методам и свойствам — сервера.
Application
Объект Application позволяет сделать какую-либо информацию доступной всем пользователям данного приложения. ASP-приложение определяется как совокупность .asp-файлов в виртуальном корне и вложенных в него каталогах. Так как с объектом Application могут совместно работать несколько пользователей, он снабжен методами lock и unlock, позволяющими избежать одновременного изменения свойств приложения.
Session
Здесь хранится информация о сеансе конкретного пользователя. Переменные, содержащиеся в объекте Session, не уничтожаются при переходе пользователя с одной страницы Web-приложения на другую, а, напротив, сохраняются на протяжении всего сеанса.
Web-сервер автоматически создает объект Session в начале сеанса, когда пользователь запрашивает какую-либо Web-страницу из состава приложения. Сервер уничтожает объект Session по завершении сеанса.
В объектах Session часто хранятся выбранные пользователем значения. Например, приложение может отслеживать элементы каталога продукции, которые выбрал посетитель во время «путешествия» по электронному магазину на Вашем узле.
Request
Объект Request содержит информацию, переданную клиентским обозревателем Web-серверу в HTTP-запросе.
Response
Объект Response передает информацию клиенту.
ObjectContext
Обьект ObjectContext служит для завершения или отмены транзакции, инициированной сценарием ASP. Объект ObjectContext содержит информацию о транзакциях, а также сведения о клиенте и о состоянии клиентского подключения к серверу. Это позволяет разработчику, например, отменить ресурсоемкую транзакцию, если пользователь закрыл страницу.
Устанавливаемые объекты
При создании ASP-файлов допустимо применение встроенных ActiveX-компонентов. Эти компоненты — повторно используемые, и Вы можете работать с ними в программе на любом языке. Компоненты реализуют удобную программную модель, которую применяют и при создании собственных компонентов.
Database Access
Компонент Database Access обеспечивает доступ к информации, хранящейся в базах данных или других табличных хранилищах данных, с помощью объектов данных ActiveX (ActiveX Data Objects, ADO). Он также использует средства создания пула подключений ODBC 3.0 для повышения эффективности доступа к базе данных.
Browser Capabilities
Компонент Browser Capabilities предоставляет Вашим сценариям описание возможностей клиентского Web-обозревателя.
Когда обозреватель подключается к Web-серверу, он автоматически посылает ему клиентский заголовок-агент HTTP. Последний представляет собой ASCII- строку, идентифицирующую обозреватель и номер его версии. Компонент Browser Capabilities сравнивает этот заголовок с элементами файла Browscap.ini.
Если соответствие найдено, компонент Browser Capabilities применяет список свойств обозревателя, соответствующий пользовательскому заголовку-агенту. Если же компонент не смог найти в файле Browscap.ini соответствие полученному от клиента заголовку, он считает, что обозреватель обладает лишь стандартными свойствами.
Вы вправе добавить отдельные свойства или даже описание нового обозревателя в этот компонент, модифицировав файл Browscap.ini.
Content Rotator
Каждый раз, когда пользователь открывает или перезагружает Web-страницу, компонент Content Rotator отображает новый материал, руководствуясь информацией из файла Content Schedule.
Например, средствами этого компонента Вы можете управлять процессом вывода рекламных сообщений. Кроме того, он позволяет узнать, сколько пользователей щелкнули каждое из сообщений: установите параметр Redirect в файле Content Schedule, и информация о каждом щелчке рекламного сообщения будет записываться в журнал Web-сервера.
Content Unking
Компонент Content Linking ведет список универсальных указателей ресурсов (Uniform Resource Locator, URL) на Вашем Web-узле. Он автоматически создает и обновляет таблицу содержимого и ссылок на предыдущие и последующие Web-страницы, что прекрасно подходит для таких приложений, как интерактивные газеты и группы новостей.
File Access
Компонент File Access использует объекты FileSystemObject и TextStream для чтения и изменения информации в файлах на Вашем Web-сервере.
Компоненты ASP
Существует несколько устанавливаемых компонентов ASP, предназначенных для упрощения разработки интерактивных и динамических Web-узлов. К ним относятся компоненты File Upload, Simple Mail Transfer Protocol (SMTP) Send Mail, Network News Transfer Protocol (NNTP) Discussions, Page Counter и Permission Checker.
Компонент File Upload реализует описанный в стандарте RFC 1867 метод загрузки файлов с клиентского компьютера на Web-сервер. Этот компонент взаимодействует с тэгом <INPUT TYPE=FILE> в обозревателях Netscape, а также с мастером Web-публикации (Web Publishing wizard) и ActiveX-элементом Upload.
Компонент SMTP Send Mail позволяет снабдить Web-страницы средствами отправки сообщений электронной почты через почтовый сервер SMTP (например, поставляемый в составе Microsoft Exchange 5.0 и последующих версий).
Нечто вроде группы новостей можно организовать с помощью компонента NNTP Discussion. Этот компонент позволяет создавать как открытые, так и закрытые NNTP-конференции. Доступ к группам новостей осуществляется средствами стандартной программы просмотра новостей NNTP (например Microsoft Outlook™ Express).
Компонент Page Counter предназначен для работы в контексте Web-приложения. Его принадлежность к глобальной области видимости значительно облегчает и ускоряет реализацию счетчика посещений страницы.
Компонент Permission Checker проверяет права пользователя на доступ к файлу или странице, позволяя настроить ASP-страницы для различных типов пользователей. Например, если Web-страница содержит ссылки на страницы, доступ к которым ограничен, воспользуйтесь компонентом Permission Checker для проверки полномочий данного пользователя и уберите (или сделайте недоступными) ссылки на страницы, для доступа к которым у пользователя нет полномочий.
Создание компонентов
Серверные ActiveX-компоненты предназначены для расширения функциональных возможностей ASP и в этом смысле являются логическим развитием сценариев. В случае, когда в конструкции ASP-страницы есть периодически повторяющаяся процедура (например, реализующая бизнес-логику), приложение становится лучше масштабируемым и более целостным, если код будет реализован серверным ActiveX- компонентом, а не сценарием ActiveX.
Вы вправе написать свой компонент на любом языке, позволяющем создавать компоненты сервера автоматизации. Выбор языка зависит от множества факторов: знания языка, наличия инструментальной поддержки, производительности результирующего продукта, необходимости поддержки потоковой модели, сложности и размера кода. К языкам и продуктам, поддерживающим разработку компонентов сервера автоматизации, относятся Microsoft Visual C++, Microsoft Visual Basic и Java.
Компоненты, создаваемые для ASP, отвечают модели компонентных объектов (Component Object Model, СОМ). Они загружаются в память и предоставляют другим процессам — в частности, активным страницам сервера — свои методы и свойства.
Это, по сути, ActiveX-компоненты без пользовательского интерфейса. Разрабатывая компоненты для ASP, пользуйтесь предоставляемыми ASP интерфейсами, чтобы Ваши разработки отвечали стандарту СОМ.
Серверные ActiveX-компоненты устанавливаются и запускаются на Web-сервере. Доступ к ним возможен средствами любого Web-обозревателя.
Сервер на базе компонентов ActiveX расширяем, что позволяет разработчики создавать серверные ActiveX-компоненты различного назначения, используемые в Интернете и интрасетях.
Использование тэга Script
Текст, заключенный в тэге Script, не отображается обозревателем, а интерпретируется. Этот тэг предназначен для обозначения и клиентских, и серверных сценариев.
Клиентские сценарии не являются частью ASP и зависят от реализации языка сценариев в обозревателе. Разные обозреватели (иногда даже разные версии одного обозревателя) могут неодинаково реализовывать поддержку языков сценариев. Клиентские сценарии упомянуты здесь только для того, чтобы указать на их отличие от ASP и серверных сценариев.
Тэг Script для клиентов
Тэг Script, предназначенный для работы в обозревателях, выглядит следующим образом:
<SCRIPT LANGUAGE=XXX> <!-команды сценария -!> </SCRIPT>
Поддерживаемые языки сценариев, как и объектная модель, зависят от используемого обозревателя.
Тэг Script в ASP
Активные страницы на сервере используют тэг, имеющий небольшие отличиям. Прежде всего, он должен указывать, что сценарий следует запустить на сервере, а не передавать клиенту.
Сценарий в ASP обрамляется следующими тэгами:
<SCRIPT LANGUAGE=XXX RUNAT=SERVER> ' <!-Сценарий серверной части
-! > </SCRIPT>
Для удобства или чтобы уменьшить сложность страниц, содержащих сценарии, можно воспользоваться альтернативным, более простым тэгом для сценариев серверной части:
<% <!-Сценарий серверной части
-!> %>
Заметьте, что сценарий в данном случае работает на сервере и, следовательно, не зависит от обозревателя. Результат его работы может быть представлен пользователю нужным образом и, в частности, адаптирован к возможностям конкретного обозревателя. Сценарии ASP позволяет даже создавать сценарии клиентской части во время работы.
Упражнение
В этом упражнении Вы создадите ASP, обработаете введенную в форму информацию, используете на Web-странице элемент управления Microsoft ActiveX и определите возможности обозревателя, обращающегося к странице.
Примечание Эти упражнения содержатся также в интерактивной документации Internet Information Server (с небольшими отличиями в именах файлов и папок). Чтобы воспользоваться интерактивной версией этих упражнений, в меню Start выберите команды Microsoft Internet Information Server, Web Applications, ASP Tutorial, Creating ASP Pages, Using ActiveX Components.
Приступая к выполнению упражнения, создайте на своем сервере папку C:\LabFiles\Lab08, а затем скопируйте в нее файлы из папки Iis\Practice\Asp прилагаемого к книге компакт-диска. Эту папку следует предоставить в совместное использование для службы World Wide Web (WWW) под сетевым именем /Lab8 и разрешить для нее операции чтения/записи.
В первой части упражнения Вы сконфигурируете виртуальный каталог и настроите обозреватель.
> Конфигурирование виртуального каталога
> Изменение уровня безопасности в Internet Explorer
В следующей части упражнения Вы создадите ASP, взяв за основу простую HTML-страницу и добавив в нее сценарий.
> Создание ASP из HTML-файла
Примечание Если Вы не сделаете этого, то не сможете продолжить упражнение.
<%.For I = 3 То 7 %>
<FONT SIZE=<%= I %»
Примечание Чтобы Notepad сохранил Ваш файл с надлежащим расширением, в диалоговом окне File Save As введите полное имя файла — Hello.asp
Многие Web-узлы позволяют пользователям вводить информацию с помощью форм. В этой части упражнения Вы обработаете форму средствами ASP.
> Обработка формы средствами ASP
<%
Title = Request. Form( "title") LastName = Request.Form("lname") If Title = "mr" Then %>
Mr. <%= LastName %> <% ElseIf Title = "ms" Then %> Ms. <%= LastName %> <%Else %>
<%= Request.Form("fname") & " " & LastName %> <% End If %>
Теперь Вы воспользуетесь элементом управления ActiveX под названием Ad Rotator, чтобы поместить на Web-страницу рекламу. Элемент Ad Rotator предназначен для отображения последовательных изображений (этим он и отличается от элемента Content Rotator, который отображает последовательность строк).
> Добавление компонента ActiveX в активную страницу
<% Set Ad = Server.CreateObject("MSWC.Adrotator") %> <%= Ad.GetAdvertisement("adrot.txt") %>
В окне Internet Explorer появится другая реклама.
Просматривая результирующую страницу, Вы заметите, что она каждый раз содержит один из нескольких различных рекламных клипов, перечисленных в файле Adrot.txt. Они отображаются циклически в порядке их следования в этом файле.
Один из серверных объектов ActiveX, входящих в состав Internet Information Server, позволяет серверу определять возможности обозревателя, который запрашивает страницу.
> Выяснение возможностей обозревателя
Резюме
ASP-файлы — это обычные HTML-документы, в код которых включены сценарии, написанные на специальном языке. ASP поддерживают целый ряд языков написания сценариев, каждый из которых позволяет использовать компоненты. Активные страницы сервера состоят из сценариев, объектов и компонентов.