ASP - Возможности клиента
Одно из наиболее важных проектных решений состоит в обработке приложением различных возможностей клиентов. Например, для пользователей наиболее важным вопросом является скорость подключения. Если приложение может определить эту скорость, можно подобрать ответ, чтобы он совпадал с этой пропускной способностью. Единственный способ для приложения узнать текущую скорость соединения состоит во включении клиентом этих сведений в запрос.
Проблема возможностей клиента может решаться на стороне клиента или на стороне сервера. Решение на стороне клиента связано с использованием динамического HTML (DHTML) для включения текущей конфигурации клиента частью запроса, как изображено на приведенном ниже рисунке.
Возможности обозревателя
Преимущества данного подхода состоят в:
- Уменьшении передачи данных между клиентом и сервером.
- Уменьшении загрузки сервера.
- Улучшении скорости отклика приложения благодаря технологии кэширования прокси-сервера.
Существует ряд ситуаций, когда написание сценариев на стороне клиента невозможно. Например, приложения, представленные в Интернете, не могут гарантировать поддержку клиентом сценариев, что означает возможность сбоя приложений для некоторых клиентов. Кроме того, ресурсы сервера могут быть недоступны со стороны клиента, поскольку клиент может находиться в сети, в которой сценарии запрещены из соображений безопасности.
Серверный подход связан с компонентом Browser Capabilities. Этот компонент считывает HTTP-заголовок «Агент пользователя», включенный в запрос, для определения возможностей клиента. Версия компонента Browser Capabilities, поставляемая с IIS 3.0 и 4.0, определяля возможности клиента, находя их в статическом списке. Приведенный ниже рисунок показывает последовательность событий.
Возможности обозревателя
Этот подход порождает трудности для проектировщика приложения, когда список устаревает. Более важно, что этот прием не учитывает конфигурируемые аспекты возможностей клиента и не предоставляет параметры, которые были включены во время выполнения запроса.
В IIS версии 5.0 компонент Browser Capabilities был улучшен для преодоления этих ограничений проектирования. Теперь его можно изменять для отдельного запроса путем возврата клиентом модуля настройки, описывающего возможности обозревателя этого клиента. Кроме того, если первоначальный запрос .asp-файла не включает модуль настройки, то для его создания можно выполнить обратный вызов сценария, выполняющегося на клиенте. Приведенный ниже рисунок показывает последовательность событий.
Возможности обозревателя
Это улучшение компонента Browser Capabilities создает другую альтернативу серверному решению. Этот прием использует специальный код состояния для возврата к клиенту, если пришедший запрос не включал модуля настройки. Этот код состояния можно сгенерировать, поместив специальный метатег в первой строке файла .asp. Например:
<!-- METADATA TYPE="Cookie" NAME="BrowsCap" SRC="sendcook.htm" -->
указывает IIS послать специальный код состояния —код состояния HTTP 449 — обозревателю Internet Explorer 5; затем командует обозревателю Internet Explorer 5 запустить сценарий в файле Sendcook.htm, который сгенерирует модуль настройки, описывающий возможности клиента. Когда сервер получает модуль настройки, он будет использовать его вместе с компонентом Browser Capabilities для определения способа передачи ответа пользователю.
Важно! Если метатег METADATA существует в файле, запрошенном клиентом в результате перенаправления с помощью методов Server.Transfer или Server.Execute, IIS проигнорирует этот тег. Теги METADATA в файле, который действительно содержит перенаправление, однако, будут обработаны нормально.
Более подробные сведения об использовании этой возможности см. в разделе Получение сведений о поддерживаемых обозревателем возможностях с помощью модуля настройки клиента.
Дополнительные сведения о возможностях клиентов DHTML см. в справочнике по DHTML на веб-узле MSDN Online. Примеры новых функциональных возможностей компонента Client Capabilities см. в разделах Компонент Browser Capabilities и Примеры ASP.