IIS 7.0 Побудова рішень веб-сервера з використанням наскрізної розширюваності, Різне, Програмування, статті

Веб-платформа IIS 7.0 підтримує більше число технологій інфраструктури додатків для розміщення багатофункціональних додатків, ніж будь-яка попередня версія IIS, вона буквально напхана функціями, які можна використовувати для розгортання цих додатків відразу ж після установки. Однак у той же час ви бачите (в установці Windows ®) не обов’язково те, що завжди отримуєте.
Архітектура IIS 7.0 виконана таким чином, що дозволяє їй бути розширюваної зверху до низу, це дає можливість замінювати будь-яку частину вбудованого набору функцій на власні розробки, які найкращим чином відповідають вашим вимогам. В результаті цього замість латання клаптикової ковдри з модулів IIS 7.0 дає абсолютно унікальні можливості по розширюваності шляхом реалізації всіх власних функцій поверх загальнодоступній моделі розширюваності. Ця конструкція простежується по всій платформі, починаючи від самого модульного механізму веб-сервера і до системи налаштування консолі диспетчера IIS.
У цій статті я постараюся зануритися в тонкощі моделі розширення IIS 7.0, розглянувши для цього вихідний код загального користування проекту модуля зміни відповіді, який дозволяє отримувати відгуки додатків IIS і змінювати їх “на льоту”, використовуючи для цього настроюються правила зміни відгуків. Спочатку я побудую модуль веб-сервера, скориставшись вбудованою в сервервозможностью розширення ASP.NET. Потім я створю функції розгортання та управління для модуля, розробивши розділ для користувача настройки і створивши спеціальну сторінку управління для диспетчера IIS.


Розширення веб-сервера


Модульна архітектура IIS 7.0 надає можливість повністю перебудувати веб-сервер під необхідну робоче навантаження. Найчастіше це може бути виконано просто шляхом установки тільки тих функцій, які необхідні для вашого додатки, в результаті чого з’являється веб-сервер з урізаною функціональністю, що дозволяє робити тільки те, що необхідно, і нічого більше.
Однак це тільки перший крок. Найчастіше потрібна робоча навантаження вимагає наявності додаткових функцій, які можуть не входити у вбудований набір функцій IIS. Або ж у деяких випадках додатків може знадобитися спеціальний набір функцій, для виконання яких вбудовані функції недостатньо пристосовані. Оскільки всі функції IIS 7.0 побудовані на загальнодоступних інтерфейсах розширюваності API, ви можете замінити будь-який з них власною розробкою, яка найкращим чином відповідає вашим вимогам.
IIS 7.0 надає два способи розробки модулів веб-сервера. По-перше, можна використовувати новий інтерфейс API для модулів на C + +, на якому заснована велика частина вбудованих функцій. Інтерфейс API модулів замінює розширення ISAPI і інтерфейс API фільтра, що застосовувалися в попередніх версіях IIS. Цей інтерфейс API є суттєвим удосконаленням у порівнянні з ISAPI, оскільки він здатний підтримувати всі функції IIS 7.0 і набагато простіше для використання в програмуванні. Дізнатися детальніше про вдосконалення в цьому інтерефейса API можна за адресою:
По-друге, в IIS 7.0 введена інтеграція з ASP.NET, яка дозволяє розробляти модулі IIS 7.0 з використанням добре знайомих інтерфейсів API модулів в ASP.NET. В об’єднаному режимі ASP.NET ці модулі стають повноправними учасниками конвеєрної обробки запитів IIS, як видно з рис. 1. Це дозволяє модулям ASP.NET отримувати доступ до вбудованих об’єктів IIS, таким як запити та відповіді, на всіх стадіях обробки і обробляти запити для всіх типів ресурсів – не тільки для тих, які обробляються платформою ASP.NET.


Рис. 11. Використання модуля зміни відповідей для зміни відповідей


Модуль зміни відповідей може бути також використаний для виконання будь-якої кількості призначених для користувача вставок, підстановок гіперпосилань та інших схем зміни відповідей за допомогою фільтрів замін. Ці фільтри можуть бути розгорнуті глобально або разом з додатком і налаштовані за допомогою правил настройки в розділі настройки responseModification.


Створюйте самі


Є не так багато корисних способів використання функції зміни відповіді, а саме всякий раз, коли неможливо домогтися такого ж результату шляхом зміни вихідного коду програми (що завжди більш ефективно, ніж зміна відповіді “на льоту”). Наприклад, я завжди використовую її для впровадження невеликого сценарію в відповіді формату HTML, що змінює теги зображень для використання варіантів зображень з високим ступенем стиснення і потім “на льоту” заміняє їх варіснатмі більш високої якості, в результаті забезпечується більш швидкий огляд при використанні повільних клієнтів. При цьому також використовується обробник зображень, який дозволяє отримати зображення формату JPEG з будь-якою необхідною ступенем стиснення для статичних зображень за допомогою інтерфейсів API компонента роботи із зображеннями Microsoft Windows. На рис. 11 показаний результат роботи, включаючи верхній і нижній колонтитули та попередньо завантажені зображення з низьким дозволом (перед тим, як вони автоматично будуть заміщені якісними зображеннями).
Зміна відповідей “на льоту” може бути досить дорогим механізмом як з точки зору завантаження ЦП, так і потреб в пам’яті, оскільки для зберігання змінних відповідей має бути виділено безліч буферів великого розміру. Така додаткове навантаження може виявитися неприйнятною для робітників веб-вузлів в залежності від типу використовуваних фільтрів зміни відповідей, їх числа і вимог до продуктивності додатки.
Щоб отримати додаткові відомості про використання модуля зміни відповідей, слід завантажити сам модуль і його вихідний текст з веб-сайту розробників модуля зміни відповідей: (www.mvolo.com / responsemod). Коли ви ознайомитеся з роботою фільтрів відповідей і зможете спланувати їх застосування при наявності обмежень продуктивності для їх використання, вивчіть приклади, наведені на веб-сайті розробників модуля зміни відповідей. Для отримання додаткових відомостей про розширення IIS 7.0 настійно рекомендуємо відвідати веб-сайт за адресою: iis.net і мій блог mvolo.com, який присвячений розробці і використанню IIS 7.0.

Майк Володарський (Mike Volodarsky) є технічним керівником програми в групі “Web Platform and Tools” корпорації Майкрософт. Протягом останніх чотирьох років він керував розробкою і створенням основної функціональності для ASP.NET 2.0 і IIS 7.0. В даний час його зусилля зосереджені на тому, щоб допомогти користувачам використовувати можливості цих технологій в середовищі Windows Server 2008.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*