다음을 통해 공유


IIS 7.0용 MWA 및 MWM 개요

작성자 : Janani Ravi

요약

IIS 7.0 이상 서버에서 사용자 지정 구성(분산 구성 파일)을 관리하기 위해 IIS 관리자 도구를 확장하려면 서로 다른 두 어셈블리인 Microsoft.Web.Administration.dll 및 Microsoft.Web.Management.dll API를 사용해야 합니다. 이러한 API는 매우 다른 작업에 사용해야 하며 근본적으로 다른 용도로 사용해야 합니다. 이 문서에서는 이러한 API가 제공하는 기능과 API 간의 관계에 대한 간략한 개요를 제공합니다.

소개

IIS 관리자(InetMgr)에 UI를 추가하여 서버 구성 파일에서 사용자 지정 설정을 관리하려는 경우 Microsoft.Web.Administration.dll 및 Microsoft.Web.Management.dll API를 사용합니다. 이러한 어셈블리에서 API에서 제공하는 기능은 근본적으로 다르며 개발자가 처음으로 사용하는 것이 혼란스러울 수 있습니다. 이 문서에서는 이러한 각 어셈블리가 제공하는 기능에 대한 간략한 개요를 제공합니다.

Microsoft.Web.Administration 및 Microsoft.Web.Management란?

이 섹션에서는 이러한 각 항목에 대해 간략하게 소개합니다.

Microsoft.Web.Administration

MWA(Microsoft.Web.Administration) API는 네이티브 코드 인터페이스 라이브러리인 AHADMIN(애플리케이션 호스트 관리 API)을 통해 관리 코드 래퍼로 빌드됩니다. 웹 서버 구성 및 관리 정보에 액세스하고 업데이트하는 프로그래밍 방식도 제공합니다.

Microsoft.Web.Administration.dll 사용자가 서버의 설정을 쉽게 조정할 수 있는 방법입니다. UI 확장성 또는 기능 추가 는 지원하지 않습니다 . 실제로 IIS Manager의 여러 UI 기능은 이 API를 사용하여 백 엔드의 구성 설정을 관리합니다.

MWA API는 개발자가 관리 코드(C#, VB 등)로 프로그램을 작성하여 특정 방식으로 순서대로 서버를 구성하려는 경우에 사용됩니다. 이 API는 독립 실행형 콘솔 애플리케이션 또는 IIS 관리자의 UI 기능 내에서 사용됩니다.

또한 이러한 API는 런타임 시(예: IIS 파이프라인의 관리되는 모듈에서) 구성에 액세스할 수 있도록 지원합니다.

Microsoft.Web.Management

Microsoft.Web.Management.dll IIS 관리자 도구에 새 UI 기능을 추가하는 프레임워크가 있습니다. 프레임워크는 새로운 기능을 개발할 수 있는 확장성을 가지며 기본 클래스 및 기타 기능을 제공합니다. 이를 통해 사용자 정의 확장은 UI에서 일류 시민이 될 수 있으며 기본 제공 IIS 및 ASP.Net 기능과 동일한 모양과 느낌을 가집니다.

IIS 관리자에는 모든 UI 기능이 자체 엔터티이며 도구에 개별적으로 등록되어야 하는 모듈식 인프라가 있습니다. IIS Manager의 클라이언트-서버 아키텍처는 코드에서 서버 설정을 조작하는 논리를 구분합니다. 이렇게 하면 사용자에게 친숙한 방식으로 이러한 설정이 표시됩니다. 도구의 각 기능은 이 클라이언트-서버 패러다임을 따릅니다. 이는 IIS 관리자에서 서버 쪽 및 클라이언트 UI 코드에 대해 잘 정의된 기본 클래스를 제공하여 적용됩니다.

또한 이 API는 목록, 속성 표, 사용자 지정 디자인 작업 창, 모달 마법사 및 대화 상자로 표현되는 UI 기능을 개발하는 확장성 메커니즘을 제공합니다(몇 가지 이름 지정).

도구와 함께 제공되는 대부분의 기존 UI 기능은 MWA API(서버 쪽 코드)를 사용하여 구성에 액세스합니다.

Microsoft.Web.Administration

앞에서 설명한 대로 MWA API를 사용하여 서버의 설정을 조작할 수 있습니다. IIS용으로 구성된 사이트, 애플리케이션 및 가상 디렉터리에 대한 강력한 형식의 기본 제공 액세스를 제공합니다. 또한 이러한 API를 사용하면 사용자가 특정 구성 섹션을 나타내는 강력한 형식의 클래스를 생성할 수 있으므로 이 섹션에 저장된 속성 및 기타 정보에 쉽게 액세스할 수 있습니다.

이것은 포괄적인 목록이 아니며 이 어셈블리는 여기에 설명된 것보다 훨씬 더 많은 것을 제공합니다.

ServerManager 및 사이트, 애플리케이션 및 가상 디렉터리

서버 속성을 관리하는 진입점은 ServerManager 클래스입니다. ServerManager에는 IIS 서버의 모든 사이트 목록에 대한 참조가 있으며 사이트 모음으로 인덱싱하여 개별 사이트에 액세스합니다.

애플리케이션 및 가상 디렉터리도 비슷한 방식으로 액세스됩니다. 또한 이러한 엔터티는 런타임 상태 정보(예: 사이트가 시작/중지되었는지 여부)를 제공합니다. 업데이트 전체 서버의 기본 설정 또는 개별 엔터티에 속하는 속성(예: 특정 사이트 업데이트)에 적용됩니다.

ServerManager에서 CommitChanges가 호출되면 서버 설정이 업데이트됩니다.

다음은 이 어셈블리에서 제공하는 강력한 형식의 클래스에 대한 개요입니다.

ServerManager 클래스와 다른 클래스 간의 연결을 보여 주는 다이어그램

개별 구성 파일 액세스

IIS에서 사용하는 분산 구성 파일 모델을 사용하면 사이트, 애플리케이션, 가상 디렉터리 또는 폴더가 web.config 파일에 해당 구성을 가질 수 있습니다.

특정 엔터티에 대한 설정을 조정하기 위해 개별 구성 파일에 액세스할 수 있습니다. ServerManager 메서드 GetApplicationHostConfiguration은 applicationHost.config 액세스하는 데 사용되고 GetWebConfiguration 메서드는 특정 구성 파일을 가져오기 위한 매개 변수를 허용합니다.

확장성을 위한 제네릭 기본 클래스

IIS 구성 시스템을 사용하면 애플리케이션과 관련된 속성을 지정하는 섹션을 만들 수 있습니다. MWA API를 사용하여 관리 코드에서 강력한 형식의 클래스를 만들어 이러한 설정을 조작합니다. 이를 용이하게 하는 기본 클래스 중 일부는 다음과 같습니다.

  • 구성: 단일 구성 파일(applicationHost.config 또는 사이트 및 애플리케이션에 대한 web.config 파일)을 나타냅니다.
  • ConfigurationElement: 구성 파일의 요소를 나타내는 데 사용되는 제네릭 엔터티입니다. 구성 섹션, 컬렉션 항목, 섹션의 중첩된 요소 등에 대한 기본 클래스입니다.
  • ConfigurationAttribute: ConfigurationElement 내의 속성을 나타냅니다.
  • ConfigurationSection: ConfigurationElement에서 파생되고 IIS 스키마 파일에 정의된 섹션을 나타냅니다. 섹션의 다양한 속성에 액세스하는 데 사용됩니다.
  • ConfigurationElementCollection: ConfigurationElements로 구성된 컬렉션 클래스입니다. ConfigurationElement에서도 파생됩니다.

일반 구성 확장성에 대한 간단한 개요는 다음과 같습니다.

일반 구성의 연결을 보여 주는 다이어그램

구성에 대한 런타임 액세스

WebConfigurationManager는 서버의 구성 설정에 대한 런타임 액세스에 사용됩니다. IIS 파이프라인에 로드된 관리되는 모듈은 이 클래스를 참조하여 특정 컨텍스트(예: 특정 사이트에 대한 요청)의 구성 설정에 액세스합니다.

Microsoft.Web.Management

MWM(Microsoft.Web.Management) API는 관리 설정 및 클라이언트 쪽 사용자 인터페이스 기능을 조작하는 서버 쪽 코드를 개발하기 위한 구성 요소입니다(사용자가 친숙한 방식으로 이러한 설정을 보고 조작할 수 있도록 허용).

각 네임스페이스의 몇 가지 중요한 클래스에 대한 간략한 설명은 다음과 같습니다. 다시 말하지만, 이것은 포괄적 인 목록이 아니며이 어셈블리는 여기에서 논의 된 것을 훨씬 더 많이 제공합니다.

이 어셈블리에서 제공하는 내용에 대한 개략적인 보기:

네임스페이스의 클래스 목록을 보여 주는 스크린샷

Microsoft.Web.Management.Server

ModuleProvider 기본 클래스에서 파생된 클래스는 IIS 관리자가 UI 모듈을 식별하는 진입점을 형성합니다. IIS 관리자가 기능 집합의 일부로 표시하려면 administration.config 등록해야 하는 클래스입니다.

ModuleService 기본 클래스에서 파생되는 클래스는 서버 쪽 관리의 육류를 형성합니다. 이러한 클래스는 실제 서버 설정 조작을 수행합니다. UI 클라이언트에 표시되어야 하는 클래스의 메서드는 ModuleServiceMethod 특성으로 표시됩니다.

ManagementUnit은 개발자에게 서버가 관리되는 컨텍스트를 제공합니다. 예를 들어 SiteManagementUnit 및 ApplicationManagementUnit은 IIS 관리자 도구의 사이트 연결 및 애플리케이션 연결에 해당합니다. ModuleService 기본 클래스는 현재 컨텍스트에 대한 정보에 액세스하는 데 사용할 수 있는 현재 ManagementUnit을 노출합니다.

ManagementConfigurationPath 는 경로(현재 서버, 사이트, 애플리케이션 또는 폴더)를 나타내는 클래스입니다. 사이트를 관리하는 경우 사이트 이름 및 사이트에 대한 기타 관련 정보를 보유합니다. ManagementUnit은 현재 ManagementConfigurationPath를 노출합니다.

ManagementConfiguration은 서버에서 구성 설정에 액세스하고 조작하는 도우미 클래스입니다. 이는 앞에서 정의한 MWA API의 Configuration 클래스에 대한 매우 강력한 추상화이며 이러한 섹션이 applicationHost.config 또는 루트 web.config 정의되어 있는지 여부에 대해 걱정하지 않고 섹션을 쿼리할 수 있습니다.

PropertyBag은 클라이언트와 서버 간에 전송되는 정보를 보관하는 데 사용되는 일종의 컨테이너입니다. 제네릭 사전으로 구현됩니다. 서버가 원격으로 관리되는 시나리오에서 데이터를 전송하는 동안 사전이 문자열로 직렬화됩니다.

Microsoft.Web.Management.Client

모듈 기본 클래스에서 파생된 클래스는 해당 UI 구성 요소를 등록하는 기능의 진입점을 형성합니다. 이 모듈의 UI가 페이지(IIS 관리자의 가운데 창에 표시됨), 트리의 노드인지 아니면 작업 창의 작업(몇 가지 예제 나열)인지 여부를 나타냅니다.

ModuleServiceProxy는 서버의 ModuleService에 지정된 실제 서비스 메서드에 액세스하는 데 사용되는 메서드 스텁의 기본 클래스입니다.

HierarchyInfo는 트리 뷰의 노드를 나타내며 노드에서 여러 작업을 지원합니다.

Connection 클래스에는 현재 관리 세션(서버, 사이트 또는 애플리케이션에 대한 연결을 정의하는 관리 세션)에 대한 모든 컨텍스트 정보가 있습니다. 서비스에 액세스하고 프록시를 만드는 등의 도우미를 제공합니다.

TaskItem은 IIS 관리자의 작업 창에 추가된 작업의 기본 클래스입니다. MethodTaskItem, TextTaskItem 등과 같은 클래스 는 이 기본 클래스에서 파생되고 작업 창에 링크, 레이블, 경고 및 기타 정보를 표시합니다. 개발자는 이러한 작업을 표시하기 위해 추가 UI 코드를 작성할 필요가 없습니다.

Microsoft.Web.Management.Client.Win32

ModulePage는 IIS 관리자 도구의 가운데 창에 "페이지"를 표시하는 모든 기능에 대한 기본 클래스입니다. ModuleListPage, ModuleDialogPage 및 ModulePropertiesPage와 같은 클래스는 모두 ModulePage에서 파생됩니다. 목록, 대화 상자 및 속성 그리드를 표시하는 페이지를 쉽게 개발할 수 있는 기본 클래스입니다.

TaskForm 기본 클래스를 사용하면 개발자가 모달 대화 상자로 표시되는 양식을 만들 수 있습니다.

WizardForm은 모든 대화 상자의 기본 클래스를 형성합니다. 개발자는 마법사에 연결할 여러 WizardPage 파생 클래스를 지정할 수 있습니다.

Microsoft.Web.Management.Client.Extensions

이 네임스페이스의 클래스는 IExtensibilityManager를 사용하여 클라이언트 쪽 확장성을 제공합니다. 예를 들어 AuthenticationFeature에는 InetMgr 도구의 인증 기능의 모든 항목에 대한 작업이 있습니다.

Microsoft.Web.Administration 및 Microsoft.Web.Management API가 구성 및 UI를 확장하여 고유한 기능을 추가하려는 개발자에게 제공하는 기능에 대한 간략한 개요입니다. 구성 확장성 및 UI 확장성의 작동 방식에 대한 자세한 설명은 이러한 topics 다루는 개별 문서를 참조하세요.