IIS 7 이상과의 메타베이스 호환성

작성자: Saad Ladki

소개

IIS 7 이상의 구성 시스템은 API 수준의 레거시 구성 인터페이스와 호환됩니다. IMSAdminBase라고도 하는 관리 ABO(기본 개체) 인터페이스와 IIS 6.0에서 ABO를 기반으로 빌드된 ADSI 및 WMI 공급자를 지원합니다. 기존 애플리케이션 및 스크립트는 IIS 7.0 이상에서 이러한 프로그래밍 인터페이스를 호출하고 IIS의 메타베이스 호환성 구성 요소가 설치된 한 계속 작동할 수 있습니다.

참고

기본적으로 이 구성 요소는 설치되지 않습니다.

메타베이스 호환성 지원 설치

인터넷 정보 서비스->웹 관리 도구 -> IIS 6.0 관리 기능 기능에서 설정에서 이 구성 요소를 찾을 수 있습니다.

IIS는 처음에 사용하도록 설정되지 않았기 때문에 이 구성 요소는 기본적으로 설치되지 않습니다. 레거시 인터페이스에는 몇 가지 제한 사항이 있으며 분산 구성 파일 작업에 적합하지 않습니다(아래 제한 사항 섹션 참조). 따라서 시간이 지남에 따라 특히 점점 더 많은 위임을 위해 구성 시스템을 열 때(즉, IIS 설정이 있는 파일이 점점 더 web.config 시스템에 있음) 고객은 레거시 스크립트 및 애플리케이션을 새 시스템 및 해당 인터페이스로 포팅하는 것을 고려하는 것이 좋습니다.

또한 새 인터페이스를 사용하여 새 스크립트와 애플리케이션을 개발하는 것이 좋습니다. 따라서 새 시스템에서 이상적으로 작동하며 구성 시스템의 새 속성, 개념 및 구조에 액세스할 수 있습니다.

모든 레거시 스크립트 및 애플리케이션이 새 인터페이스로 포팅되는 경우 메타베이스 호환성 기능을 제거하는 것이 좋습니다.

메타베이스 호환성 작동 방식

메타베이스 호환성 기능은 메타베이스 서비스(IISADMIN) 내에서 실행됩니다. ABO에 대한 모든 메서드 호출을 가로챌 수 있습니다. 메서드 호출의 정보가 웹 서버 구성과 관련된 경우 새 시스템에 매핑됩니다. FTP 또는 SMTP 또는 NNTP 구성과 관련된 경우 메타베이스 시스템의 일반 논리를 따르고 메타베이스 파일로 끝납니다.

웹 서버 구성에 있는 사용자 지정 속성도 새 시스템에 매핑되고 유지됩니다.

매핑 결정은 문제의 메타베이스 노드를 기반으로 합니다. 웹 서버 구성은 일반적으로 사용자 지정 속성을 포함하여 LM/W3SVC 아래에 있으며 Mime Maps와 같은 몇 가지 추가가 있습니다.

매핑은 ABO 보기와 새 시스템 보기 간에 앞뒤로 변환하기 위해 수행됩니다. 예를 들어 새 시스템에는 각 사이트 및 모든 가상 디렉터리에서 애플리케이션의 개념이 있습니다. 레거시 시스템은 애플리케이션을 다르게 처리합니다. 애플리케이션을 애플리케이션(AppIsolated 또는 AppRoot)으로 표시하는 특수 속성이 있는 가상 디렉터리일 뿐입니다.

ABO를 호출하여 웹 서버 구성을 작성할 때 메타베이스 호환성 구성 요소는 데이터를 applicationHost.config 유지합니다. 정보를 메모리에 보관하지 않으므로 이를 "쓰기 통과"라고 합니다. ABO를 호출하여 웹 서버 구성을 읽을 때 메타베이스 호환성 구성 요소는 applicationHost.config 읽습니다. 정보를 메모리에서 다시 가져오지 않기 때문에 이를 "읽기-통과"라고 합니다.

서버 런타임에서 사용할 준비가 되지 않은 불완전한 데이터는 customMetadata라는 applicationHost.config 특수 섹션에 유지됩니다. 이 섹션은 메타베이스 호환성 기능의 영구 저장소로 사용되며 고객은 콘텐츠를 수정해서는 안 됩니다. 불완전한 데이터의 예는 레거시 스크립트가 사이트 ID를 설정하지만 사이트 바인딩은 설정하지 않는 경우입니다. IIS 6.0에서 이러한 호출은 구성에서 잘못된 사이트 개체를 만들었을 것입니다. IIS 7.0 이상에서는 서버에서 사용하지 않는 섹션에 보관됩니다. 사이트 바인딩을 설정하기 위해 후속 호출을 수행하면 사이트 개체가 완료된 것으로 간주되고 전체 섹션에서 서버 런타임에 의해 선택됩니다. 이 시점에서 임시 데이터가 제거되므로 사용자는 시스템에서 남은 데이터를 정리할 필요가 없습니다. 이러한 후속 호출이 수행되지 않으면 서버 런타임에 이 잘못된 사이트가 표시되지 않지만 레거시 스크립트는 IIS 6.0에서와 마찬가지로 ABO 보기에 있습니다. 레거시 스크립트 관점에서 시스템은 IIS 6.0과 완벽하게 호환됩니다.

레거시 스크립트 및 애플리케이션을 통해 설정된 사용자 지정 웹 서버 속성은 항상 섹션에 유지됩니다. IIS 6.0과 마찬가지로 레거시 인터페이스를 통해 검색할 수 있으므로 시스템이 완전히 호환됩니다. 분명히 이것은 IIS 구성 시스템을 확장하는 권장 방법과 매우 다르므로 시간이 지남에 따라 IIS 7.0 이상의 구성 시스템에서 제공하는 새로운 인터페이스와 새로운 기능을 사용하기 위해 이러한 애플리케이션을 포팅하는 것을 고려해야하는 또 다른 이유입니다.

기타 메타베이스 구성 데이터

FTP, SMTP 및 NNTP 구성은 메타베이스 시스템에 계속 유지되며 새 IIS 구성 시스템으로 이식되지 않았습니다. 이러한 구성 설정은 레거시 프로그래밍 인터페이스 및 metabase.xml 파일의 직접 편집을 통해 계속 관리할 수 있습니다.

개요

메타베이스 키 및 속성에 대한 대부분의 작업은 원활하게 작동하며 사용자는 구성 섹션 및 명명된 속성과 같은 새로운 IIS 개념이 아닌 이러한 레거시 개념과 이름을 제공합니다(ABO는 속성 ID로 계속 작동합니다. ADSI는 레거시 속성 이름으로 계속 작동합니다.)

레거시 사용자는 여전히 ADSI 스키마를 사용하고 IIS 6.0에서 사용하던 것처럼 확장할 수도 있습니다.

XML 파일 호환성

웹 서버를 확장하는 사용자 지정 구성을 포함한 웹 서버 구성은 metabase.xml 않고 system32\inetsrv\applicationHost.config 유지됩니다. 따라서 레거시 지원은 파일 형식 수준이 아닌 API 수준에 있습니다(일부 레거시 기능이 지원되지 않는 이유이기도 함). 레거시 인터페이스 호출자는 새 파일 형식이나 명명 또는 개념이 아닌 IIS 6.0에서와 마찬가지로 구성의 "ABO 보기"를 가져옵니다.

한 가지 의미는 메타베이스 ACL과 같은 개념은 지원되지 않는다는 것입니다. 메타베이스 파일 형식과 밀접하게 관련되어 있기 때문입니다. IIS 구성 시스템은 구성 파일의 표준 파일 ACL을 활용합니다. 시스템에서 메타베이스 ACL과 표준 파일 ACL 간의 매핑을 제공하지 않습니다.

기록 파일, 백업/복원 및 가져오기/내보내기와 같은 기능은 새 구성 시스템에 의존하기 때문에 다르게 작동합니다. 따라서 백업 구성에 대한 ABO 호출은 무시됩니다.

레거시 메타베이스 기능

구성 감사가 Windows Server® 2003 서비스 팩 1의 IIS 6.0에 추가되었습니다. 새 구성 시스템이 매우 다르게 설계되었기 때문에 현재 IIS 7.0 이상에서 지원되지 않습니다(예: IIS 7.0 이상에서는 in-proc 구성 시스템을 사용하며 IIS 6.0은 다른 프로세스의 사용자 코드에서 캡슐화된 전용 NT 서비스를 사용함).

레거시 메타베이스 속성

레거시 속성만 지원됩니다. IIS 7.0 이상 구성 속성은 레거시 사용자에게 반환되지 않으며 .NET Framework 구성 속성도 반환되지 않습니다.

매핑 제한 사항

매핑 알고리즘은 IIS 6.0과 IIS 7.0 이상의 구성 시스템 간의 차이를 처리해야 합니다. 예를 들어 IIS 6.0에서는 사이트에 이름이 필요하지 않았습니다("서버 주석"). 이름을 지정한 경우 이러한 이름을 고유하게 지정해야 할 필요가 없었습니다. IIS 7.0 이상에서는 모든 사이트에 고유한 이름이 있어야 합니다. 따라서 이전 ServerComment 속성을 새 Name 속성에 매핑하는 것은 간단하지 않습니다. 매핑 알고리즘은 IIS 7.0 이상의 구성 시스템의 요구 사항이므로 사이트당 고유한 이름을 강제로 지정합니다. 서버 주석에 숫자를 추가하여 고유성을 만듭니다. 결과적으로 서버 주석에 대해 실제로 설정된 값이 스크립트에서 지정한 값과 다릅니다.

분산 구성

메타베이스 호환성 기능은 applicationHost.config만 지원됩니다. web.config 파일의 구성은 레거시 사용자에게 반환되지 않습니다. 위치 태그는 URL별 구성을 지원하기 위해 applicationHost.config 사용됩니다.