Программирование в IIS

       

Параметры сервера в мастере проекта сервера ATL


Во вкладке Server Options (Параметры сервера) мастера проекта сервера ATL (см. рис. 4.8) устанавливается поддержка дополнительной интеграции со службами узла сервера и управление сеансами. Следует отметить, что сеанс может записываться в источник данных, имеющий провайдера OLE-DB. Это относится к разработке веб-кластера, когда требуется размещение данных сеанса внутри источника данных, если другие серверы, участвующие в поддержке веб-решения, должны иметь доступ к сеансу.


Рис. 4.8.  Вкладка Server Options (Параметры сервера) мастера проекта сервера ATL

Если проект сервера ATL создан для функционирования на одном сервере, или если не требуется взаимодействие с другими веб-серверами, использующими сеанс, выберите опцию Memory-Backed Session State Services (Службы состояния сеанса, хранимые в памяти) для обеспечения более высокой производительности. Опция OLE DB-Backed Session State Services (Службы состояния сеанса, хранимые в OLE DB) позволяет расширять программное решение, т.е. установить его в распределенной аппаратной среде без изменения кода. Если программное решение требует поддержки сеансов, отметьте опцию Session Services (Службы сеансов). В зависимости от требуемого уровня поддержки выберите соответствующую опцию хранения: в OLE DB или в памяти.

При генерации мастером кода создается класс с таким же именем, как у проекта, к началу имени присоединяется символ "C", а к концу добавляется слово "Handler". Этот класс будет интерфейсом веб-приложения в IIS за счет включения в себя обработчиков тегов. Пусть проект называется atlServer4 ((см. рис. 4.7), тогда мастер для поддержки обработчиков тегов создаст класс CatlServer4Handler.

Включение любой из следующих опций во вкладке Server Options (Параметры сервера) мастера позволит добавить в класс обработчик кода, объявляющий и инициализирующий указатели на соответствующий класс поддержки.

  • Blob Cache. Добавляет указатель на экземпляр класса ImemoryCache для управления случайными участками памяти.
  • File Cache. Добавляет указатель на экземпляр класса IfileCache для управления именами файлов.
  • Data Source Cache. Добавляет классы в проект ATL Server и проект ISAPI для управления кэшированием подключений OLE DB каждого потока.
  • Predefined Performance Counters. Добавляет классы для интеграции проекта со счетчиками производительности perfmon.
  • Browser Capabilities Support. Добавляет указатель на экземпляр класса IbrowserCapsSvs для управления возможностями браузера.


Если в мастере выбраны опции File Cache (Кэш файлов), Blob Cache (Кэш памяти) и Browser Capabilities Support (Поддержка возможностей браузера), а проект называется SimpleATLServer, то будет сгенерирован класс CSimpleATLServerHandler и записан в заголовок SimpleATLServer.h. В частной секции класса CSimpleATLServerHandler будут сгенерированы следующие объявления с комментариями перед кодом:
// File cache support // CComPtr<IFileCache> m_spFileCache;
// Blob cache support // CComPtr<IMemoryCache> m_spBlobCache;
// Data Source cache support // CComPtr<IBrowserCapsSvc> m_spBrowserCaps;
Примечание. В приведенном коде указатель Browser Capabilities Support (Поддержка возможностей браузера) неправильно определен в комментарии как поддержка кэша источника данных, что привело к незначительной ошибке в шаблоне мастера проекта сервера ATL.
При использовании указателей на File Cache (Кэш файлов), Blob Cache (Кэш памяти) и Browser Capabilities Support (Поддержка возможностей браузера) с каждого из них нужно снять статус комментария. Указатели инициализируются в общей функции ValidateAndExchange. Она включается в каждый класс обработчика, генерируемый мастером проекта сервера ATL, если отмечена опция Validation Support (Поддержка подтверждения) во вкладке Application Options (Параметры приложения) (см. следующий раздел). С фрагментов кода, отвечающих за инициализацию соответствующего указателя, также нужно снять статус комментария.
Листинг 4.1.
(html, txt)
В ассоциированное расширение ISAPI следует добавить код для поддержки элементов, выбранных во вкладке Server Options (Параметры сервера) мастера. В отличие от кода класса обработчиков код поддержки в расширении ISAPI не является закомментированным, он входит в программное решение независимо от того, используется он или нет. Не включайте поддержку функциональности – это позволит сократить количество ресурсов.
Поддержка файлового кэширования добавляет указатель класса для поддержки функций управления указателями файлов, относящихся к чтению и записи файлов.


Если указатель на указатель класса IbrowserCaps передается функции GetCaps класса IbrowserCapsSvc вместе с указателем на контекст сервера, то экземпляр IbrowserCaps позволяет выполнить запрос возможностей браузера. Эта информация определяется экземпляром класса IbrowserCaps с помощью сравнения значения HTTP_USER_AGENT, отправленного веб-серверу с запросом HTTP, с соответствующим значением в файле browsercap.ini (он обычно находится в папке $(windows)\system32\inetsrv\). В файле browsercap.ini приведен HTTP User Agent и определены его параметры. Например, для браузера Internet Explorer (IE) 5 в файле browsercap.ini указано следующее:
Листинг 4.2.
(html, txt)
Опция Resource Language (Язык источника) во вкладке Server Options (Параметры сервера) обеспечивает поддержку использования других языков для генерирования текста копии в файлах источников проекта. Необходимо установить Visual Studio .NET с поддержкой языков для нужного ресурса, чтобы открыть доступ к этой опции.


// Get the IBrowserCapsSvc service from the ISAPI extension // if (FAILED (m_spServiceProvider->QueryService // (__uuidof(IBrowserCapsSvc), // &m_spBrowserCaps))) // return HTTP_FAIL;
return HTTP_SUCCESS; }
Листинг 4.1.
В ассоциированное расширение ISAPI следует добавить код для поддержки элементов, выбранных во вкладке Server Options (Параметры сервера) мастера. В отличие от кода класса обработчиков код поддержки в расширении ISAPI не является закомментированным, он входит в программное решение независимо от того, используется он или нет. Не включайте поддержку функциональности – это позволит сократить количество ресурсов.
Поддержка файлового кэширования добавляет указатель класса для поддержки функций управления указателями файлов, относящихся к чтению и записи файлов. Непосредственно содержимое файла не хранится в классе кэша; он содержит информацию о расположении файлов, их именах и размерах. При удалении элементов из кэша они удаляются с жесткого диска, поэтому кэширование файлов предназначено только для управления временными файлами.
Кэш памяти необходим для взаимодействия с фрагментами памяти переменного размера в отличии от других классов кэширования памяти ATL Server, поддерживающих фрагменты памяти определенного размера.
Кэш источника данных обеспечивает функциональность, присущую и другим классам кэширования, исключая хранение подключений к источникам данных.
При выборе опции Predefined Performance Counters (Предопределенные счетчики производительности) в расширении ISAPI размещается код, реализующий обновление счетчиков ISAPI для perfmon согласно взаимодействию веб-приложения с IIS. Разработчик не участвует в написании кода, весь код, необходимый для обеспечения функциональности, генерируется мастером в файле реализации расширения ISAPI.
Предопределенными счетчиками производительности являются следующие.
  • Active Threads (Активные потоки). Активные потоки, используемые процессом веб-приложения.
  • Average Response Time (Среднее время ответа). Усредненное время возврата HTTP-ответа веб-приложением.
  • Current Queued Requests (Текущие запросы в очереди).

    Содержание раздела