268
Аналогом сервлетов в .NET являются объекты, реализующие интерфейсы
System.Web.IHttpHandler и System.Web.IHttpAsyncHandler. Оба они являются частью
программного интерфейса Web-сервера Microsoft (Internet Server Application Program Interface,
ISAPI). Первый интерфейс предназначен для синхронной обработки запросов, с блокированием на
время обработки вызвавшего ее потока Web-сервера. Второй интерфейс позволяет реализовывать
такую обработку в отдельном потоке.
Единственный метод первого интерфейса —
void ProcessRequest (System.Web.HttpContext
context)
. Все данные, связанные с запросом, ответом на него, приложением и контекстом, в
котором работает данный обработчик, можно получить, используя различные свойства параметра
этого метода.
Интерфейс
IHttpAsyncHandler имеет два метода — IAsyncResult BeginProcessRequest(
HttpContext context, AsyncCallback cb, object extraData)
и void EndProcessRequest(
IAsyncResult result)
. Первый вызывается при передаче запроса данному обработчику, второй
— для прекращения обработки.
Web-формы .NET являются аналогом серверных страниц Java. Они так же оформляются в виде
документов, содержащих конструкции как HTML, так и одного из языков программирования,
используемых в рамках .NET, и специальные конструкции, аналогичные директивам, тегам и
скриптовым элементам JSP.
Специальные конструкции Web-форм включают директивы, имеющие
тот же самый смысл,
что и для серверных страниц Java, объявления, аналогичные JSP-объявлениям, конструкции
встроенного кода (code render) и конструкции привязки к данным (data binding expressions).
Директивы Web-форм имеют в целом точно такой же синтаксис, как и директивы JSP:
<%@
directive attribute1="value1" ... attributeN="valueN" %>
. Список директив шире, чем в
JSP: имеется директива
Page, аналог page в JSP, но с несколько отличающимся списком
атрибутов, директива Import, аналог include, директива Control для описания пользовательских
элементов управления, директива Register для определения синонимов (алиасов), и пр.
Объявления полей данных и методов в Web-формах обрамляются в тег <script> … </script>.
Такой тег должен иметь атрибут runat со значением server и атрибут language, который
определяет язык кода, написанного внутри тега. Он может также иметь атрибут src для указания
URL файла, код из которого должен быть вставлен перед содержимым тега.
Конструкции встроенного кода обрамляются в тег
<% … %>. Как и в JSP, могут использоваться
выражения в виде
<%=… %>. Комментарии тоже оформляются, как и в JSP, в виде тегов <%-- … --
%>
.
Конструкции привязки к данным имеют синтаксис <%# expression %> и работают примерно
так же, как и выражения встроенного кода. Они могут использоваться и в значениях атрибутов
элементов управления.
Конфигурационные файлы компонентов .NET, являющиеся аналогами дескрипторов
развертывания в J2EE, оформляются в виде XML-документов специального вида и размещаются в
различных директориях Web-приложения. В качестве корневого тега таких документов всегда
выступает тег
configuration. Он может содержать теги location, которые определяют
конфигурацию для ресурсов, путь к которым указывается в атрибуте
path таких тегов. Теги
location для компонентов ASP.NET содержат тег system.web, который, в свою очередь, может
содержать следующие теги (перечислены не все возможные, более полную информацию см.
в [11]).
•
authentication
Определяет используемый вид аутентификации — атрибут
mode задает используемый
механизм (Windows, Forms, Passport или None), вложенные теги forms описывают свойства
отдельных форм, используемых для аутентификации.
•
authorization
Определяет права доступа для пользователей, ролей и отдельных методов HTTP-запросов.