`

СПЕЦІАЛЬНІ
ПАРТНЕРИ
ПРОЕКТУ

Чи використовує ваша компанія ChatGPT в роботі?

BEST CIO

Определение наиболее профессиональных ИТ-управленцев, лидеров и экспертов в своих отраслях

Человек года

Кто внес наибольший вклад в развитие украинского ИТ-рынка.

Продукт года

Награды «Продукт года» еженедельника «Компьютерное обозрение» за наиболее выдающиеся ИТ-товары

 

IIS: от Web-сервера к серверу Web-приложений

0 
 

Продукту Microsoft IIS уже около восьми лет -- Internet Information Server 1.0 был разработан в 1995 г. еще для Windows NT 3.51. За это время Internet очень сильно изменился, стал "живым" -- статические документы заменились программами, которые по сложности и своим функциональным возможностям сравнялись, а во многом и превзошли традиционное ПО. Не стоял на месте и IIS. Пройдя путь от первой до шестой версии, он превратился из средства "раздачи" Web-страниц в сервер приложений и теперь занимает ключевое место в новой стратегии Microsoft.NET.
Втечение последнего года, в особенности летом, продукту Microsoft Internet Information Services (IIS) перепала изрядная доля внимания компьютерной общественности. И, скажем так, внимания в плохом смысле слова. Некоторые особенности архитектуры и "дыры" в системе безопасности IIS позволили целому ряду Internet-вирусов за считанные недели или даже дни заразить тысячи и тысячи Web-серверов, работающих под его управлением.

IIS от Web-сервера к серверу Web-приложений
Новая архитектура IIS 6.0
С одной стороны, такая ситуация вокруг IIS, пристальный интерес к нему вирусописателей и прочих "деструктивных элементов" околокомпьютерного сообщества продемонстрировали (и для многих -- совершенно неожиданно) довольно высокую популярность Web-сервера от Microsoft. С другой -- сравнительно низкий уровень надежности и проблемы другого характера, кажется, уже не могли обещать IIS дальнейших успехов в столь привлекательном Internet-пространстве. Однако с учетом всевозрастающих темпов тотальной "web'изации" всех и вся Web-сервер становится одним из ключевых элементов любой серверной платформы, от которого в немалой степени зависит популярность и самой ОС.

Вне всякого сомнения, Microsoft, выпуская на рынок новую версию своей серверной операционной системы, отлично понимает текущую ситуацию и то, что Windows Server 2003 должен предложить какие-то веские аргументы и эффективные решения, дабы упрочить положение компании на Web-рынке. Кстати сказать, выделение в серверной линейке специализированной редакции Web Edition -- лишнее тому подтверждение.

Поэтому IIS 6.0, входящий в состав Windows Server 2003, был, по заявлениям Microsoft, серьезно переработан, а некоторые его компоненты практически полностью переделаны. Сами разработчики выделяют три направления, в которых были произведены основные изменения, -- это надежность и масштабируемость, безопасность и управляемость, а также удобство разработки Web-приложений и поддержка интернациональных особенностей. Как видите, данное перечисление покрывает практически все основные функции любого Web-сервера, поэтому давайте попробуем разобраться, что же действительно нового может предложить IIS 6.0.


Администрирование

IIS от Web-сервера к серверу Web-приложений
Панель администрирования IIS 6.0 -- ISAPI-расширения теперь называются Web Service Extensions
Начнем с того, что при инициализации всех редакций Windows Server 2003, кроме Web Edition, по умолчанию IIS не инсталлируется -- это нужно выполнить отдельно. Довольно простое правило предосторожности, но, по всей видимости, не лишнее -- "непроизвольная" установка IIS без последующего его администрирования и обновления почти гарантированно приводила к заражению каким-нибудь вирусом (часто и не одним). Еще одна профилактическая мера -- сразу после установки IIS способен обслуживать только статические HTML-страницы. Поддержку динамических Web-приложений (скажем, Active Server Pages) опять же нужно включать вручную.

Очень важным усовершенствованием с точки зрения администрирования IIS стало изменение формата файла метаданных Web-сервера (где описываются конфигурация сервера, виртуальные каталоги и развернутые приложения). Во всех версиях до IIS 6.0 он был бинарным, теперь же хранится в формате XML. Примечательно, что внесенные изменения через некоторое время после закрытия файла автоматически вступают в силу. При этом если при редактировании конфигурации сервера допущена ошибка, например, синтаксическая, файл метаданных автоматически будет восстановлен до последней рабочей версии.

Способов администрирования IIS в новой версии осталось три: с помощью Microsoft Management Console, через Web-интерфейс и из командной строки -- но в каждом из этих вариантов появились дополнительные удобства. Текстовый конфигурационный файл в сочетании с существенно расширившимся набором административных сценариев позволяют теперь полностью обслуживать IIS из командной строки.

Еще одним плюсом IIS 6.0 является возможность автоматического обновления -- его можно настроить так, что он будет самостоятельно проверять наличие свежих "заплаток", загружать их и устанавливать. По утверждению Microsoft, такие операции практически всегда можно будет выполнить "на лету" без перезапуска Web-сервера.


Изменения механизма обработки запросов

Пожалуй, наиболее существенным отличием IIS 6.0 от предшественников является новый механизм обработки запросов. В предыдущей, пятой, версии IIS центральным процессом Web-сервера был inetinfo.exe. Он выполнял все основные функции: прослушивал порты, принимал HTTP-запросы, осуществлял их начальную обработку и направлял соответствующим Web-приложениям. В стандартной конфигурации все Web-приложения запускались в pooled-режиме -- в отдельном от inetinfo.exe, но общем для всех процессе. Таким образом, сбой одного приложения нередко приводил к отказу и всех остальных. Можно было настроить приложение как isolated, чтобы оно выполнялось в собственном процессе, но при этом падала производительность из-за необходимости трансляции запросов.

Третьим вариантом был режим IIS Process -- Web-приложение исполнялось в рамках того же inetinfo.exe. Несмотря на то что при этом обеспечивалась максимальная производительность, присутствовал и серьезный риск -- сбой такого пользовательского приложения мог вывести из строя весь Web-сервер. Кроме того, поскольку сам inetinfo.exe запускался с системными полномочиями, аналогичные права получали и все пользовательские приложения, а следовательно, взлом любого из них потенциально давал злоумышленнику полный контроль над компьютером.

В IIS 6.0 механизм обработки запросов существенно изменен. Ключевым компонентом новой схемы является драйвер http.sys, который работает на уровне ядра ОС и реализует собственно HTTP-сервер, т. е. он прослушивает порты, принимает и анализирует HTTP-запросы, распределяет их между пользовательскими Web-приложениями. Кроме того, http.sys автоматически "отлавливает" некорректные HTTP-запросы, а также осуществляет кэширование. Поскольку весь этот процесс выполняется в режиме ядра операционной системы, на него никак не влияют установленные на Web-сервере приложения (ограниченные пользовательским режимом), т. е. по крайней мере теоретически его нельзя взломать через HTTP.

Все остальные архитектурные элементы IIS 6.0 и Web-приложения опираются на функциональность http.sys. Inetinfo.exe является менеджером рабочих процессов, в которых выполняются все пользовательские Web-приложения. Он умеет их запускать, следить за их "здоровьем", в случае проявления всякого рода проблем (например, утечки памяти) либо просто через заданное время или количество обработанных запросов -- останавливать, перезапускать и т. п. Рабочих процессов (или пулов) может быть сколько угодно (они создаются через административный интерфейс), и приложения между ними распределяются произвольным образом -- в одном пуле могут исполняться несколько Web-приложений, а при необходимости одно Web-приложение может задействовать несколько рабочих процессов (такая технология получила название "Web garden", по аналогии с "Web farm").

Собственно, кроме дополнительной функциональности по управлению рабочими процессами, особой новизны в такой организации выполнения Web-приложений нет -- как видите, это просто усовершенствование прежних режимов pooled и isolated. Однако в новом подходе сделаны два существенных изменения. Во-первых, оптимизирована передача HTTP-запросов -- каждый процесс сам извлекает относящиеся к нему запросы из соответствующей очереди в http.sys. Во-вторых, каждый пул загружает собственную копию всех ISAPI-фильтров и ISAPI-расширений -- в IIS 5 они существовали в единственном экземпляре и работали в рамках процесса inetinfo.exe. Таким образом, новый подход, конечно, увеличивает производительность и надежность, однако платой за это оказывается повышенный расход памяти при большом числе рабочих процессов.

Следует также отметить, что, хотя реализованный в IIS 6.0 новый механизм обработки запросов кажется органичным развитием технологий, используемых в предыдущих версиях, с ним будут корректно работать далеко не все уже существующие Web-приложения (скажем, написанные на том же ASP). Согласно документации, в некоторых случаях полная совместимость с IIS 6.0 потребует определенной доработки старого кода. А поскольку не всегда это осуществимо, в IIS 6.0 оставлен режим, обеспечивающий совместимость с IIS 5. Однако он может быть включен только для Web-сервера в целом, что, соответственно, исключает возможность использования нового, "родного" для IIS 6.0 механизма обработки запросов.


Дополнительные сервисы

IIS от Web-сервера к серверу Web-приложений
Администрирование POP3-сервера -- только необходимый минимум
До сих пор мы говорили об IIS 6.0 исключительно как о Web-сервере, однако хотя данная функция и является для него основной, в продукт Internet Information Services входит целый набор дополнительных компонентов, в новых версиях которых также появились определенные усовершенствования.

Поскольку .NET Framework стал частью операционной системы, то, естественно, поддержка ASP.NET в IIS 6.0 встроена изначально. Правда, несмотря на свою ключевую роль как главного средства разработки Web-приложений и Web-служб, ASP.NET -- это "просто" ISAPI-расширение IIS 6.0, которое можно при желании совершенно безболезненно отключить или деинсталлировать. Более тесно связывать между собой эти технологии разработчики не стали.

В ftp-сервере появилась долгожданная возможность ограничивать пользователей рамками их собственных домашних каталогов. Этой функции особенно не хватало при хостинге нескольких Web-сайтов на одном сервере. Улучшена также поддержка режима "пассивного" ftp-сервера. Полноценным компонентом IIS 6.0 стали сервисы BITS (Background Intelligent Transfer Service), которые позволяют клиентам загружать и передавать файлы в фоновом режиме, сохраняя соединение при отключении и даже перезагрузке как сервера, так и клиента, и продолжая при первой возможности этот процесс точно с того места, на котором он прервался. Данная технология применялась до сих пор в Windows Update, и при желании ею можно было воспользоваться еще в IIS 5, но в IIS 6.0 это стало базовой функциональностью, доступной всем разработчикам Web-приложений.

Вдобавок к SMTP-серверу, входящему в состав IIS с версии 4, в Windows Server 2003 наконец-то появился простой POP3-сервер. Функциональность его минимальна: он позволяет регистрировать почтовые домены, а в них -- почтовые ящики. На жестком диске каждый почтовый ящик представлен отдельным каталогом (в котором хранятся .eml-файлы сообщений) -- соответственно, для них можно назначать квоты. Никаких, даже самых скромных, дополнительных удобств, разве что утилита для администрирования POP3-сервера из командной строки. Однако, несмотря на такую "спартанскую" реализацию, встроенный в ОС почтовый сервер вполне удовлетворит нужды не особенно взыскательных пользователей, тем более что и системных ресурсов он требует небольших.

Отдельно хотелось бы упомянуть еще один новый компонент Windows Server 2003. Какое-то время тому назад мы знакомили читателей с технологиями и продуктами SharePoint ("Компьютерное Обозрение", # 32, 2001). Примерно тогда же было объявлено, что обновленная версия SharePoint Team Services будет включена в новую ОС Microsoft. На сегодняшний день Windows SharePoint Services (именно так теперь называется этот компонент) еще не готов и, вероятнее всего, увидит свет лишь одновременно с новой версией Microsoft Office. Тем не менее включение средств обеспечения групповой работы в стандартную поставку серверной платформы может только приветствоваться.


Заключение

Подводя итог, можно констатировать, что разработчики серьезно потрудились над IIS 6.0. Удалось ли им действительно решить принципиальные проблемы, мы, по всей видимости, узнаем довольно скоро, как только накопится критическая масса инсталляций ОС Windows Server 2003, и пользователи начнут ее (в первую очередь IIS) реально эксплуатировать, а хакеры -- "проверять на прочность". Однако, на наш взгляд, не стоит ограничивать "поле зрения" только конкретными переменами, произошедшими внутри IIS, -- не менее важным является изменение места и роли, отводимых этому компоненту в Windows Server 2003. Ведь IIS 6.0 и ASP.NET (плюс вспомогательные службы) формируют сервер Web-приложений и Web-служб, которые в недалеком будущем должны стать основным видом программного обеспечения.

Таким образом, решение о выборе того или иного Web-сервера будет приниматься не столько системными администраторами (которым, вполне вероятно, IIS 6.0 также придется по душе -- благодаря рассмотренным нами усовершенствованиям), сколько Web-разработчиками. А в качестве сервера приложений очень важным (стратегическим) достоинством IIS становится его окружение -- вся инфраструктура операционной системы, богатство ее функциональных возможностей, интеграция компонентов. И в этом смысле Microsoft, безусловно, создала весьма достойный продукт.

Ready, set, buy! Посібник для початківців - як придбати Copilot для Microsoft 365

0 
 

Напечатать Отправить другу

Читайте также

 

Ukraine

 

  •  Home  •  Ринок  •  IТ-директор  •  CloudComputing  •  Hard  •  Soft  •  Мережі  •  Безпека  •  Наука  •  IoT