간단한 IIS 관리자 모듈을 만드는 방법
작성자: Carlos Aguilar Mares
새 IIS 7.0 이상 웹 관리 도구는 확장 가능한 개발자 플랫폼입니다. 타사에서는 도구에서 일류 기능으로 표시되는 자체 관리 기능을 개발하고 설치할 수 있습니다. 이 문서에 설명된 작업은 다음과 같습니다.
- InetMgr 내에서 라이브러리를 사용할 수 있도록 Microsoft Visual Studio 또는 Microsoft Visual C# Express에서 프로젝트 만들기
- 간단한 모듈 공급자 만들기
- 메시지 상자를 표시하는 간단한 모듈 만들기
작업 1: 프로젝트 만들기
InetMgr에 대한 확장성 모듈을 만들려면 클래스 라이브러리 프로젝트라고도 하는 DLL 프로젝트를 만들어야 합니다. 이 DLL은 InetMgr에서 사용하는 모듈에 대한 요구 사항인 GAC(전역 어셈블리 캐시)에 등록할 수 있도록 강력한 이름을 지정해야 합니다.
시작을 클릭하고 프로그램을 클릭하고 Microsoft Visual Studio 2005 또는 Microsoft Visual C# 2005 Express Edition을 실행합니다.
파일 메뉴에서새 프로젝트 옵션을 선택합니다.
새 프로젝트 대화 상자에서 클래스 라이브러리를 프로젝트 형식으로 선택하고 프로젝트의 이름으로 ExtensibilityDemo를 입력합니다. 확인을 클릭합니다.
솔루션 탐색기 상황에 맞는 메뉴 삭제 옵션을 사용하여 기본적으로 추가된 Class1.cs 파일을 제거합니다(해당 파일을 사용하지 않기 때문에).
프로젝트 메뉴의 참조 추가... 옵션을 사용하여 찾아보기 탭을 사용하여 Microsoft.Web.Management.dll 대한 참조를 추가하고 \Windows\system32\inetsrv 디렉터리에서 검색합니다. InetMgr용 모듈을 만드는 데 필요한 모든 확장성 클래스를 포함하는 DLL입니다.
코드를 사용하여 WinForms를 기반으로 UI를 만들므로 System.Windows.Forms.dll 대한 참조를 추가해야 합니다. 이를 위해 프로젝트 메뉴에서 참조 추가... 옵션을 사용하고 the.NET 어셈블리 목록에서System.Windows.Forms.dll선택합니다.
InetMgr 내에서 사용되는 라이브러리에 대한 요구 사항 중 하나는 GAC 내에 등록해야 한다는 것입니다. DLL 이름이 강력한지 확인합니다(서명됨이라고도 함). Visual Studio는 쉽게 새 이름을 만들 수 있는 방법을 제공합니다. 프로젝트 메뉴를 사용하여 ExtensibilityDemo 속성 옵션을 선택합니다.
서명 탭에서 어셈블리 검사 서명 상자를 검사.
콤보 상자에서 새로 만들기...> 옵션을 < 선택하여 새 키를 만듭니다. 강력한 이름 키 만들기 대화 상자에서 키 이름으로 DemoKey.snk를 입력하고 암호 검사 내 키 파일 보호 상자의 선택을 취소합니다. 확인을 클릭합니다.
서명 탭은 다음과 같이 표시됩니다.
어셈블리가 GAC에 있기를 원하기 때문에 컴파일할 때마다 어셈블리가 GAC에 자동으로 추가되도록 빌드 후 이벤트를 추가합니다. 이렇게 하면 디버깅을 쉽게 수행할 수 있을 뿐만 아니라 새 기능을 추가할 때 변경할 수 있습니다.
빌드 이벤트 탭을 선택하고 다음 빌드 후 이벤트 명령줄을 추가합니다.
CALL "%VS80COMNTOOLS%\vsvars32.bat" > NULL gacutil.exe /if "$(TargetPath)"
(선택 사항) Microsoft Visual Studio 2005를 사용하는 경우 F5 키를 사용하여 코드를 실행할 수 있도록 디버깅을 올바르게 설정하세요. 프로젝트 속성에서 디버그 탭을 선택하고 이 탭을 설정하여 \windows\system32\inetsrv\inetmgr.exe선택하는 외부 프로그램을 시작합니다.
프로젝트 속성을 닫고 파일 메뉴에서 모두 저장 옵션을 선택하고 위치를 d:\Demos로 설정합니다. 저장을 클릭합니다.
이제 빌드 메뉴 아래의빌드 솔루션을 사용하여 프로젝트를 컴파일할 수 있습니다. 이렇게 하면 DLL이 자동으로 빌드되고 GAC에 추가됩니다.
참고
vsvars32.bat 설정 명령이 오류 코드 9009에서 작동하지 않는 경우 gacutil.exe 전체 경로를 추가하여 8단계의 빌드 후 이벤트에 추가된 명령을 바꿉다. 예를 들면 다음과 같습니다.
"D:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\gacutil.exe" /if "$(TargetPath)"
작업 2: 모듈 공급자 만들기
이 작업에서는 모듈 공급자를 만듭니다. InetMgr에서 모듈 등록을 위한 기본 진입점입니다. 이러한 모듈 공급자는 Administration.config 나열됩니다.
프로젝트 메뉴에서 새 항목 추가 옵션을 선택합니다. 새 항목 추가 대화 상자에서 클래스 템플릿을 선택하고 DemoModuleProvider.cs 를 파일 이름으로 입력합니다.
다음과 같이 표시되도록 코드를 변경합니다.
using System; using System.Security; using Microsoft.Web.Management.Server; namespace ExtensibilityDemo { class DemoModuleProvider : ModuleProvider { public override Type ServiceType { get { return null; } } public override ModuleDefinition GetModuleDefinition(IManagementContext context) { return new ModuleDefinition(Name, typeof(DemoModule).AssemblyQualifiedName); } public override bool SupportsScope(ManagementScope scope) { return true; } } }
이 코드는 모든 유형의 연결(서버, 사이트 및 애플리케이션)을 지원하는 ModuleProvider를 만들고 DemoModule이라는 클라이언트 쪽 모듈을 등록합니다.
작업 3: 모듈 만들기
이 작업에서는 모듈을 만드는 방법을 알아봅니다. 모듈은 모든 확장성 개체에 대한 클라이언트의 기본 진입점입니다. Initialize라는 기본 메서드가 하나 있습니다. 모든 작업이 발생하는 메서드입니다.
프로젝트 메뉴에서 새 항목 추가 옵션을 선택합니다. 클래스 템플릿을 선택하고 DemoModule.cs를 파일 이름으로 입력합니다.
다음과 같이 표시되도록 코드를 변경합니다.
using System; using System.Windows.Forms; using Microsoft.Web.Management.Client; using Microsoft.Web.Management.Server; namespace ExtensibilityDemo { internal class DemoModule : Module { protected override void Initialize(IServiceProvider serviceProvider, ModuleInfo moduleInfo) { base.Initialize(serviceProvider, moduleInfo); MessageBox.Show("Hello World Inside InetMgr"); } } }
작업 4: 모듈 테스트
이 작업에서는 빌드한 새 모듈을 추가합니다. 이를 위해 moduleProviders 목록의 파일 administration.config 추가해야 합니다.
먼저 방금 만든 어셈블리의 전체 이름을 파악해야 합니다. "ExtensibilityDemo, Version=1.0.0.0, Culture=neutral, PublicKeyToken={YourKey}" 형식입니다. Windows Explorer 사용하여 찾을 수 있습니다.
Windows Explorer 열고 *Windows\Assembly* 폴더로 이동합니다.
어셈블리 목록에서 ExtensibilityDemo를 찾아 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 대화 상자에 공개 키 토큰이라는 필드가 표시됩니다. InetMgr에 등록하려면 이 값이 필요하므로 클립보드에 복사합니다.
Microsoft Visual C# 2005 Express로 돌아가서 파일 열기... 옵션을 선택합니다. 파일 메뉴 아래에 있습니다. 파일 \Windows\System32\InetSrv\Administration.config 찾습니다.
<moduleProviders> 섹션을 검색하고 다음을 추가하지만 공개 키 토큰을 2단계에서 복사한 토큰으로 바꿔야 합니다.
<moduleProviders> <add name="ExtensibilityDemo" type="ExtensibilityDemo.DemoModuleProvider, ExtensibilityDemo, Version=1.0.0.0, Culture=neutral, PublicKeyToken=bed679b1975c7f97" /> <moduleProviders>
참고
moduleProviders 목록에만 추가하면 서버 연결에 대해서만 모듈을 등록합니다. 이 모듈을 사이트 연결 및 애플리케이션 연결에 사용하도록 설정하려면 다음 목록에 추가합니다.
<location path="."> <module> <add name="ExtensibilityDemo" /> </location>
파일을 저장하고 InetMgr을 실행하고 localhost에 연결하면 다음 메시지가 표시됩니다.
요약
이 문서에서는 Visual Studio 프로젝트를 만들어 새 IIS 관리 도구에 대한 확장성 모듈을 개발하는 방법을 설명했습니다. 메시지를 표시하기 위해 간단한 ModuleProvider 및 해당 모듈 대응 모듈을 만들었습니다.
IIS 관리 도구 모듈 만들기의 기본 사항을 이해했으므로 확장성을 위해 사용할 수 있는 더 흥미로운 기능을 살펴볼 수 있습니다.