Опубликован: 24.01.2007 | Доступ: свободный | Студентов: 1253 / 82 | Оценка: 4.37 / 4.17 | Длительность: 14:27:00
ISBN: 978-5-94774-627-3
Лекция 4:

Настроечные параметры System.Web

Ключевые моменты <browserCaps>

Раздел <browserCaps> делает возможным настройку вывода HTML для большого количества браузеров и мобильных устройств. Скорее всего, при выполнении повседневных задач не придется использовать этот раздел, но важно знать его роль и то, как его информацию обновлять в будущем для учета возможностей новых браузеров и мобильных устройств. Вот ключевые моменты, относящиеся к этому разделу.

  • Раздел <browserCaps> настраивает вывод HTML на основе браузера или мобильного устройства, который получает доступ к ресурсу.
  • Раздел <browserCaps> использует для определения того, какой браузер или мобильное устройство получает доступ к ресурсу, доступные для него серверные переменные из заголовка запроса HTTP.
  • Для выделения из запрошенных переменных строк, по которым определяется, помимо всего прочего, версия браузера и его возможности, используются регулярные выражения.
  • Обновления этой информации скоро должны быть доступны на сайте http://www.cyscape.com/browserCaps

Работа с разделом <clientTarget>

Для большинства страниц, которые вы создаете с помощью ASP.NET, можно положиться на идентификацию браузера, выполняемую ASP.NET и разделом <browserCaps>, но иногда возникает ситуация, когда нужно предназначить страницу для определенного браузера. Здесь на сцену выходит раздел <clientTarget>. Раздел <clientTarget> содержит определенное количество псевдонимов браузеров, которые используются для генерации содержимого, предназначенного для конкретного браузера. Каждый псевдоним содержит значение userAgent, представляющее целевой браузер. Значение userAgent – это строка, которая находится в серверной переменной userAgent при доступе пользователя к приложению. Этот раздел по своей работе похож на разделы <appSettings> и <configSections>, и вы можете добавлять сюда новые псевдонимы, удалять их и очищать весь раздел. Ниже приведен раздел <clientTarget> по умолчанию из файла machine.config.

<clientTarget>
  <add alias="ie5" userAgent=
    "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 4.0)" />
  <add alias="ie4" userAgent=
    "Mozilla/4.0 (compatible; MSIE 4.0; Windows NT 4.0)" />
  <add alias="uplevel" userAgent=
    "Mozilla/4.0 (compatible; MSIE 4.0; Windows NT 4.0)" />
  <add alias="downlevel" userAgent="Unknown" />
</clientTarget>

Каждый псевдоним добавляет в коллекцию и связывается с конкретным значением userAgent. Первые два псевдонима относятся к браузерам класса Internet Explorer 4 или 5. Эти целевые браузеры очень похожи, если не одинаковы, так как используют высокоуровневый псевдоним целевого браузера. Высокоуровневый псевдоним заставляет страницу отображать элементы управления ASP.NET с помощью высокоуровневых настроек. Следующим типом псевдонимов является низкоуровневый псевдоним, который заставляет страницу отображать элементы управления ASP.NET в низкоуровневом режиме.

Высокоуровневые и низкоуровневые псевдонимы

В зависимости от того, установлен ли параметр clientTarget в значение uplevel или downlevel, различается отображение элементов управления ASP.NET. Низкоуровневый браузер понимает только HTML версии 3.2. Если вы предназначаете страницу для низкоуровневого псевдонима, страница при отправке HTML в браузер будет использовать только HTML 3.2. Высокоуровневый браузер или устройство должны уметь обрабатывать следующие технологии.

  • ECMAScript версии 1.2 (JScript, JavaScript)
  • HTML 4.0
  • CSS
  • The Microsoft Document Object Model (MSDOM)

Когда вы назначаете страницу для высокоуровневого браузера, страница будет отображаться с использованием CSS, HTML 4.0, ECMAScript 1.2 и MSDOM, извлекая все возможные преимущества от применения целевого браузера. Примерами высокоуровневых браузеров являются Internet Explorer 4.0 и выше.

Использование целевых клиентов в своих страницах

Предназначить свои страницы для конкретного целевого псевдонима очень просто. Каждая страница ASP.NET имеет вверху директиву @page, а директива @page имеет свойство clientTarget. Это свойство можно установить в значение псевдонима, который имеется в коллекции <clientTarget>, и страница будет отображаться с использованием этого псевдонима. Ниже показан пример использования свойства clientTarget.

<% @Page language="C#" clientTarget="downlevel" %>

Страница будет отображаться с использованием только низкоуровневых технологий – HTML 3.2. Данный параметр переопределяет любую идентификацию браузера, выполняемую ASP.NET и разделом <browserCaps>.

Пример из практики. Примером полезности свойства clientTarget является работа с элементом веб-управления TabStrip. При использовании высокоуровневого браузера эти элементы управления отображаются с помощью слоев, которые при нажатии на закладку переключаются, не требуя пересылок данных. Если данный элемент управления предназначен для низкоуровневого браузера, он посылает в браузер только один слой, а при нажатии на закладках отправляет другие страницы. Хотя высокоуровневая версия элемента управления быстрее, она требует загрузки всех страниц вне зависимости от того, какая из закладок просматривается в данный момент. По этой причине я, как и многие другие люди, использовал свойство clientTarget, чтобы заставить данный элемент управления отображаться в низкоуровневом режиме. Это дает неожиданный эффект, заключающийся в том, что вся страница начинает отображаться в низкоуровневом режиме.

Добавление и удаление псевдонимов

Добавлять и удалять псевдонимы в раздел <clientTarget> очень просто, так как для этого используются те же элементы, что и для раздела <appSettings>. Ниже приведен синтаксис добавления в раздел <clientTarget> псевдонимов.

<clientTarget>
  <add alias="alias name" userAgent="User Agent Text" />
</clientTarget>

Свойство alias используется в свойстве clientTarget страницы ASP.NET. Свойство userAgent отражает серверную переменную userAgent, которая должна отправляться браузером. Если вы хотите добавить новый псевдоним для какого-либо браузера, вы получаете серверную переменную userAgent при доступе браузера к вашему сайту, а затем используете ее значение для добавления псевдонима для целевого браузера. Ниже показано, как удалять псевдоним, ранее определенный в разделе <clientTarget>.

<clientTarget>
  <remove alias="alias name" />
</clientTarget>

Удаление псевдонима из коллекции сделает этот псевдоним недоступным для всех страниц, на которые распространяется этот настроечный файл. Аналогично разделу <appSettings>, можно также использовать элемент <clear>, который удаляет все ранее добавленные в этот раздел псевдонимы. Ниже приведен синтаксис элемента <clear>.

<clientTarget>
  <clear />
</clientTarget>

Ключевые моменты <clientTarget>

Раздел <clientTarget> позволяет обходить обнаружение браузера ASP.NET по умолчанию и предназначать свои страницы для конкретного браузера или группы браузеров. Ниже приведены ключевые моменты, относящиеся к разделу <clientTarget>.

  • Раздел <clientTarget> работает аналогично разделу <appSettings> в том, что вы можете использовать элементы <add>, <remove> и <clear> для добавления, удаления псевдонимов и полной очистки коллекции.
  • Вы можете использовать свойство clientTarget директивы @page, чтобы страница отображалась в конкретном браузере, отличном от того, который определила система ASP.NET.

Работа с разделом <compilation>

Раздел <compilation> включает несколько параметров и элементов для настройки способа компиляции ASP.NET. Можно использовать различные элементы для добавления новых компиляторов языков подготовки сценариев ASP.NET и собственных сборок и настраивать различные параметры компиляции. Раздел <compilation> имеет несколько подразделов, но сначала рассмотрим свойства, устанавливаемые для элемента <compilation>. Ниже приведен синтаксис элемента <compilation>.

<compilation debug="true | false" batch="true | false"
  batchTimeout="amount of seconds" defaultLanguage="language"
  explicit="true | false" maxBatchSize="max number of pages"
  maxBatchGeneratedFileSize="max size in KiloBytes"
  numRecompilesBeforeAppRestart="number of recompiles"
  strict="true | false" tempDirectory="directory location">
</compilation>

Таблица 4.5 содержит перечень свойств элемента <compilation>.

Таблица 4.5. Свойства <compilation>
Свойство Описание
batch

Управляет поддержкой пакетной компиляции.

true Пакетная компиляция поддерживается.

false Пакетная компиляция не поддерживается.

batchTimeout Определяет период времени завершения пакетной компиляции. Если компиляция не завершается за это время, компилятор переводится в режим компиляции только текущей страницы.
debug

Определяет, компилируется ли отладочный вариант двоичных файлов.

true Отладка включена.

false Компилируются окончательные версии двоичных файлов.

defaultLanguage Определяет язык программирования, используемый ASP.NET по умолчанию. Это имя должно соответствовать одному из имен, объявленных в подтэге <compilers>. Значением по умолчанию является vb.
explicit Определяет включение опции Visual Basic explicit. Эта опция требует, чтобы каждая используемая переменная была обязательно объявлена с помощью оператора Dim, Private, Public или ReDim.

true Опция включена.

false Опция отключена.

maxBatchSize Определяет максимальное количество файлов, включаемых в пакетную компиляцию.
maxBatchGenerated FileSize Определяет максимальный размер (Кб) генерируемого исходного файла для каждой пакетной компиляции.
numRecompilesBeforeAppRestart Определяет число динамических перекомпиляций, которое может произойти перед перезапуском всего приложения.
tempDirectory Определяет директорию для хранения временных файлов в процессе компиляции.
strict Определяет включение опции Visual Basic strict. Эта опция гарантирует использование наилучших методов программирования, генерируя ошибки при выполнении не рекомендуемых операций, таких как неявное преобразование типов, которое может привести к потере данных.

true Опция включена.

false Опция отключена.

Таблица 4.5 включает большой объем новой информации, так что давайте опишем ее более подробно.

  • Visual Basic explicit. По умолчанию Visual Basic позволяет использовать переменные, которые не были явно объявлены, но это считается плохим стилем. Опция Visual Basic Explicit гарантирует, что каждая используемая переменная объявлена с помощью операторов Dim, ReDim, Private или Public. Если вы используете Visual Basic .NET, я крайне рекомендую оставить эту опцию в настроечном файле включенной.
  • Visual Basic strict. По умолчанию Visual Basic позволяет выполнять некоторые сомнительные операции программирования. При включении опции strict Visual Basic генерирует сообщение об ошибке, если выполняется одна из следующих процедур:
    • неявное преобразование типов, которое может привести к потере данных;
    • позднее связывание, состоящее в присвоении переменной, которая объявлена как объект.
  • Пакетная компиляция. Страницы компилируются при первом доступе к ним, что приводит к небольшой задержке доступа к странице. Пакетная компиляция компилирует все еще не скомпилированные файлы из директории с файлом, к которому осуществляется доступ. Это означает, что доступ к первому файлу производится долго, но для последующих запросов таких задержек не будет.

Ниже приведен пример раздела <compilation>.

<compilation batch="true" batchTimeout="30" debug="false"
  defaultLanguage="c#" explicit="true" maxBatchSize="15"
  maxBatchGeneratedFileSize="3000"
  numRecompilesBeforeAppRestart="15"
  tempDirectory="c:\temp" strict="true">
</compilation>

Имеется несколько подразделов, используемых в разделе <compilation>. Раздел <compilers> объявляет программы для компиляции страниц ASP.NET. Имеется набор компиляторов по умолчанию, включаемых в ASP.NET, но можно добавить компиляторы для обработки других языков, включая Delphi. Ниже приведен синтаксис раздела <compilers>.

<compilers>
  <compiler language="language names" extension="file extension"
    type=".NET type" warningLevel="level number"
    compilerOptions="list of options" />
</compilers>

Свойства раздела <compilers> перечислены в табл. 4.6.

Таблица 4.6. Свойства <compilers>
Свойство Описание
language Разделенный точками с запятой список имен языков. Это имена, под которыми языки могут использоваться в свойстве language директивы @page.
extension Расширение файла, содержащего код на этом языке, например .cs для C# и .vb для Visual Basic.
type Класс, используемый для компиляции файлов, написанных на этом языке.
warningLevel Уровень предупреждений компилятора.
compilerOptions Список опций, передаваемых в компилятор при компиляции.

Ниже показан элемент <compiler> для языка C#.

<compiler language="c#;cs;csharp" extension=".cs" type=
  "Microsoft.CSharp.CSharpCodeProvider, System, Version=1.0. 5000.0,
  Culture=neutral, PublicKeyToken=b77a5c561934e089"
  warningLevel="1" />

Перечислив три разных имени языка (c#; cs; csharp), при указании в свойстве language директивы @page языка C# можете использовать любое из этих трех имен. Элемент <compiler> позволяет добавлять новые языки программирования для написания программ для ASP.NET.

Добавление сборок к компиляции

Если вы когда-нибудь использовали один из компиляторов командной строки .NET, то знаете, что нужно включать сборки, которые требуется использовать при компиляции приложения. Раздел <assemblies> добавляет сборки, которые должны быть подключены при компиляции приложений ASP.NET. Аналогично разделу <appSettings>, этот раздел содержит коллекцию сборок, предназначенных для использования при компиляции приложений ASP.NET. Ниже приведен пример того, как добавлять сборку в раздел <assemblies>.

<assemblies>
  <add assembly="System.Web, Version=1.0.5000.0, Culture=neutral,
    PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>

Эта сборка будет подключаться всегда при компиляции приложений ASP.NET. Вы также можете удалить сборки, используя элемент <remove>.

<assemblies>
  <remove assembly="System.Web, Version=1.0.5000.0,
    Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
</assemblies>

При удалении из коллекции сборка больше не подключается при компиляции страниц ASP.NET. И снова, аналогично другим разделам, основанным на коллекциях, вы можете использовать элемент <clear>.

<assemblies>
  <clear />
</assemblies>

Он удаляет из коллекции все ранее добавленные в нее сборки.

Геннадий Щербаков
Геннадий Щербаков

В начале года получил код dreamspark  H4RQ9-QJ6FD-YJWJT-P6FVF-HGXQZ. При  его вводе- сообщение что он просрочен.