Поделиться через


Обзор MWA и MWM для IIS 7.0

Автор : Джанани Рави

Краткие сведения

Расширение средства диспетчера IIS для управления пользовательской конфигурацией (в файлах распределенной конфигурации) на сервере IIS 7.0 и более поздних версий предполагает использование API из двух разных сборок: Microsoft.Web.Administration.dll и Microsoft.Web.Management.dll. Эти API следует использовать для совершенно разных действий и иметь принципиально разные цели. В этом документе представлен краткий обзор функциональных возможностей этих API и связи между ними.

Введение

Если вы планируете добавить пользовательский интерфейс в диспетчер IIS (InetMgr) для управления пользовательскими параметрами в файлах конфигурации сервера, вы будете использовать API из Microsoft.Web.Administration.dll и Microsoft.Web.Management.dll. Функциональные возможности, предоставляемые API из этих сборок, принципиально отличаются и могут быть запутанными для разработчиков, использующих их в первый раз. В этой статье представлен краткий обзор возможностей каждой из этих сборок.

Что такое Microsoft.Web.Administration и Microsoft.Web.Management?

В этом разделе содержатся краткие сведения о каждом из них.

Microsoft.Web.Administration

API Microsoft.Web.Administration (MWA) создаются как оболочка управляемого кода через API администрирования узла приложения (AHADMIN), который является машинной библиотекой интерфейса кода. Она предоставляет программный способ доступа и обновления сведений о конфигурации и администрировании веб-сервера.

Microsoft.Web.Administration.dll — это простой способ настройки параметров на сервере. Он не поддерживает добавление расширяемости или функциональных возможностей пользовательского интерфейса. На самом деле некоторые функции пользовательского интерфейса в диспетчере IIS используют этот API для управления параметрами конфигурации на серверной части.

API MWA используется, когда разработчик хочет написать программу в управляемом коде (C#, VB и т. д.) для настройки сервера в определенном порядке. Этот API используется из автономных консольных приложений или из компонента пользовательского интерфейса в диспетчере IIS.

Эти API также поддерживают доступ к конфигурации во время выполнения (например, из управляемого модуля в конвейере IIS).

Microsoft.Web.Management

В Microsoft.Web.Management.dll есть платформа для добавления новых функций пользовательского интерфейса в средство диспетчера IIS. Платформа обладает расширяемостью для разработки новых функций и предоставляет базовые классы и другие функциональные возможности. Это позволяет пользовательским расширениям быть первоклассными пользователями в пользовательском интерфейсе, а их внешний вид и интерфейсы идентичны встроенным функциям IIS и ASP.Net.

Диспетчер IIS имеет модульную инфраструктуру, в которой каждая функция пользовательского интерфейса является собственной сущностью и должна быть отдельно зарегистрирована в средстве. Архитектура клиента и сервера диспетчера IIS отделяет логику, которая управляет параметрами сервера от кода. Эти параметры отображаются в удобной для пользователя форме. Каждая функция в средстве соответствует этой парадигме "клиент—сервер". Это обеспечивается путем предоставления четко определенных базовых классов для кода пользовательского интерфейса на стороне сервера и клиента в диспетчере IIS.

Этот API также предоставляет механизм расширяемости для разработки функций пользовательского интерфейса, представленных в виде списков, сетки свойств, настраиваемых областей действий, модальных мастеров и диалоговых окон (например, некоторые из них).

Многие из существующих функций пользовательского интерфейса, которые поставляются вместе с инструментом, используют API MWA (в коде на стороне сервера) для доступа к конфигурации.

Microsoft.Web.Administration

Как упоминалось ранее, API MWA можно использовать для управления параметрами на сервере. Они обеспечивают встроенный строго типизированный доступ к сайтам, приложениям и виртуальным каталогам, настроенным для IIS. Эти API также позволяют пользователям создавать собственные строго типизированные классы, представляющие определенные разделы конфигурации, и таким образом создавать простой способ доступа к свойствам и другой информации, хранящейся в этих разделах.

Это ни в коем случае не полный список, и эта сборка предлагает гораздо больше, чем описано здесь.

ServerManager и сайты, приложения и виртуальные каталоги

Точкой входа для администрирования свойств сервера является класс ServerManager. ServerManager содержит ссылку на список всех сайтов на этом сервере IIS, а доступ к отдельным сайтам можно получить путем индексирования в семействе сайтов.

Доступ к приложениям и виртуальным каталогам аналогичен. Эти сущности также предоставляют сведения о состоянии среды выполнения (например, о том, запущен ли или остановлен сайт). Обновления вносятся в параметры по умолчанию для всего сервера или свойства, принадлежащие отдельной сущности (например, обновления определенного сайта).

Параметры сервера обновляются при вызове CommitChanges в ServerManager.

Ниже приведен обзор некоторых строго типизированных классов, предлагаемых этой сборкой:

Схема, показывающая подключения между классом ServerManager и другими классами.

Доступ к отдельным файлам конфигурации

Модель распределенного файла конфигурации, которая используется службами IIS, позволяет сайту, приложению, виртуальному каталогу или даже папке иметь свою конфигурацию в web.config файле.

Вы можете получить доступ к отдельным файлам конфигурации, чтобы настроить параметры для конкретной сущности. Метод ServerManager GetApplicationHostConfiguration используется для доступа к applicationHost.config, а метод GetWebConfiguration принимает параметры для получения определенных файлов конфигурации.

Универсальные базовые классы для расширяемости

Система конфигурации IIS позволяет создать раздел, в котором указываются свойства, относящиеся к приложению. С помощью API MWA создайте строго типизированные классы в управляемом коде, чтобы управлять этими параметрами. Ниже приведены некоторые базовые классы, которые упрощают эту настройку.

  • Конфигурация: представляет один файл конфигурации (applicationHost.config или файлы web.config для сайтов и приложений).
  • ConfigurationElement: универсальная сущность, используемая для представления элемента в файле конфигурации. Это базовый класс для разделов конфигурации, записей коллекций, вложенных элементов в разделе и т. д.
  • ConfigurationAttribute: представляет свойство в ConfigurationElement.
  • ConfigurationSection: является производным от ConfigurationElement и представляет раздел, определенный в файлах схемы IIS. Используется для доступа к различным свойствам раздела.
  • ConfigurationElementCollection: Класс коллекции, состоящий из ConfigurationElements. Также является производным от ConfigurationElement.

Ниже приведен простой обзор расширяемости универсальной конфигурации.

Схема, показывающая подключения в универсальной конфигурации.

Доступ среды выполнения к конфигурации

WebConfigurationManager используется для доступа среды выполнения к параметрам конфигурации сервера. Управляемый модуль, загруженный в конвейер IIS, обращается к параметрам конфигурации в определенном контексте (например, запрос к определенному сайту), ссылаясь на этот класс.

Microsoft.Web.Management

API Microsoft.Web.Management (MWM) — это стандартные блоки для разработки кода на стороне сервера для управления параметрами администрирования и функциями пользовательского интерфейса на стороне клиента (которые позволяют пользователям просматривать эти параметры и управлять ими понятным образом).

Ниже приведены краткие описания некоторых важных классов в каждом пространстве имен. Опять же, этот список не является исчерпывающим, и эта сборка предлагает гораздо больше того, что обсуждается здесь.

Высокоуровневое представление о том, что предлагает эта сборка:

Снимок экрана: списки классов в пространствах имен.

Microsoft.Web.Management.Server

Классы, производные от базового класса ModuleProvider , образуют точку входа для диспетчера IIS для идентификации модуля пользовательского интерфейса. Это класс, который должен быть зарегистрирован в administration.config, чтобы диспетчер IIS отображал его как часть набора функций.

Классы, производные от базового класса ModuleService , образуют основу администрирования на стороне сервера. Эти классы выполняют фактические операции с параметрами сервера. Методы в классе, которые должны быть видимы клиенту пользовательского интерфейса, помечаются атрибутом ModuleServiceMethod .

ManagementUnit предоставляет разработчику контекст администрирования сервера. Например, SiteManagementUnit и ApplicationManagementUnit соответствуют подключениям сайтов и приложениям в средстве диспетчера IIS. Базовый класс ModuleService предоставляет текущий объект ManagementUnit, который можно использовать для доступа к сведениям о текущем контексте.

ManagementConfigurationPath — это класс, представляющий путь (к текущему серверу, сайту, приложению или папке). Если вы администрируете сайт, он содержит имя сайта и другие важные сведения о сайте. ManagementUnit предоставляет текущий объект ManagementConfigurationPath.

ManagementConfiguration — это вспомогательный класс для доступа к параметрам конфигурации на сервере и управления ими. Это очень мощная абстракция для класса Configuration в API MWA, определенном ранее, и позволяет запрашивать разделы, не беспокоясь о том, определены ли эти разделы в applicationHost.config или в корневом web.config.

PropertyBag — это своего рода контейнер, используемый для хранения данных, передаваемых между клиентом и сервером. Это реализовано в виде универсального словаря. Словарь сериализуется в строку при передаче данных в сценариях, в которых сервер администрируется удаленно.

Microsoft.Web.Management.Client

Классы, производные от базового класса Module , образуют точку входа для функции для регистрации компонентов пользовательского интерфейса. Это указывает, является ли пользовательский интерфейс для этого модуля страницей (отображается в центральной области диспетчера IIS), узлом в дереве или просто задачей в области Действия (для перечисления нескольких примеров).

ModuleServiceProxy — это базовый класс для заглушек метода, используемых для доступа к фактическим методам службы, указанным в ModuleService на сервере.

HierarchyInfo представляет узел в представлении дерева и поддерживает несколько действий на узле.

Класс Connection содержит все сведения о контексте для текущего сеанса управления (сеанс управления, определяющий подключение к серверу, сайту или приложению). Он предоставляет вспомогательные функции для доступа к службам, создания прокси-серверов и т. д.

TaskItem — это базовый класс для задач, добавленных в область Действия в диспетчере IIS. Такие классы, как MethodTaskItem, TextTaskItem и т. д. Производные от этого базового класса и отображение ссылок, меток, оповещений и других сведений в области Действия. Разработчику не нужно писать дополнительный код пользовательского интерфейса для отображения этих действий.

Microsoft.Web.Management.Client.Win32

ModulePage — это базовый класс для всех функций, которые отображают "страницу" в центральной области средства диспетчера IIS. Классы, такие как ModuleListPage, ModuleDialogPage и ModulePropertiesPage, являются производными от ModulePage. Это базовые классы, которые предоставляют простой способ разработки страниц, на которых отображаются списки, диалоговые окна и сетки свойств.

Базовый класс TaskForm позволяет разработчикам создавать формы, которые отображаются в модальном диалоговом окне.

WizardForm формирует базовые классы всех диалогов. Разработчики могут указать несколько производных классов WizardPage для подключения к мастеру.

Microsoft.Web.Management.Client.Extensions

Классы в этом пространстве имен обеспечивают расширяемость на стороне клиента с помощью IExtensibilityManager. Например, AuthenticationFeature содержит задачи для каждой записи в функции проверки подлинности в средстве InetMgr.

Это краткий обзор функциональных возможностей, которые API Microsoft.Web.Administration и Microsoft.Web.Management предлагают разработчику, который хочет расширить конфигурацию и пользовательский интерфейс для добавления собственных функций. Дополнительные сведения о том, как работают расширяемость конфигурации и расширяемость пользовательского интерфейса, см. в отдельных статьях, посвященных этим темам.