IIS 7 메타베이스 호환성

등록일시: 2006-10-04 10:42,  수정일시: 2013-12-09 09:56
조회수: 5,437
이 문서는 IIS 기술을 널리 알리고자 하는 개인적인 취지로 제공되는 번역문서입니다. 이 문서에 대한 모든 저작권은 마이크로소프트에 있으며 요청이 있을 경우 언제라도 게시가 중단될 수 있습니다. 번역 내용에 오역이 존재할 수 있고 주석은 번역자 개인의 의견일 뿐이며 마이크로소프트는 이에 관한 어떠한 보장도 하지 않습니다. 번역이 완료된 이후에도 대상 제품 및 기술이 개선되거나 변경됨에 따라 원문의 내용도 변경되거나 보완되었을 수 있으므로 주의하시기 바랍니다.

서론

IIS 7의 구성 설정 시스템은 레거시 구성 설정 인터페이스와 API 수준에서 호환됩니다. 그리고, IIS 6.0에서 ABO(Admin Base Objects)를 기반으로 동작하는 ADSI와 WMI 제공자뿐만 아니라 IMSAdminBase로 알려진 ABO 인터페이스 자체를 지원합니다. IIS 7에서 제공되는 메타베이스 호환성 구성 요소만 설치되어 있다면 기존 응용 프로그램과 스크립트는 IIS 7에서도 이런 프로그래밍 인터페이스를 호출할 수 있으며 정상적으로 동작될 것입니다.

노트: 메타베이스 호환성 구성 요소는 기본적으로 설치되지 않습니다.

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

메타베이스 호환성 구성 요소는 IIS 7 설치시 인터넷 정보 서비스 -> 웹 관리 도구 -> IIS 6 관리 호환성 하위에서 찾아볼 수 있습니다.

메타베이스 호환성 구성 요소는 IIS 7 자체에서는 사용되지 않기 때문에 기본으로 설치되지는 않습니다. IIS 7은 새로운 구성 설정 시스템과 새로운 인터페이스를 사용합니다. 레거시 인터페이스는 몇 가지 제약사항을 갖고 있으며 분산 구성 설정 파일을 대상으로 작업하기에는 적합하지 않습니다. (본문 하단의 제약사항 절 참고) 그러므로, 구성 설정 시스템을 점진적으로 대체해 나가기 위한 경우에만 한시적으로 사용하는 것이 바람직하며 (예: 시스템에 존재하는 IIS 설정들을 점차 web.config 파일로 이전하는 경우), 점차 레거시 스크립트와 응용 프로그램들을 새로운 시스템과 그 인터페이스로 이전할 것을 고려해야 합니다.

새로운 인터페이스를 사용해야 새로운 시스템과 이상적으로 동작하고, 새로운 속성과 개념 및 구성 설정 시스템 구조에 접근할 수 있으므로, 신규로 작성되는 스크립트와 응용 프로그램들은 새로운 인터페이스를 기반으로 작성되야 합니다.

모든 레거시 스크립트와 응용 프로그램들이 새로운 인터페이스를 사용하도록 전환되고 나면, 메타베이스 호환성 기능을 제거하는 것이 좋습니다.

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

메타베이스 호환성 기능은 메타베이스 서비스(IISADMIN) 내부에서 동작합니다. 그리고, ABO에 대한 모든 호출을 중간에서 가로채는데, 만약 메서드 호출 정보가 웹 서버 구성 설정과 관련된 것이라면 이 정보는 새로운 시스템으로 맵핑됩니다. 그러나, 정보가 FTP나 SMTP 또는 NNTP 구성 설정과 관련된 것이라면 이는 메타베이스 시스템의 정규 로직에 따라 처리되고, 결국 메타베이스 파일에 저장됩니다.

또한, 웹 서버 구성 설정과 관련된 사용자 정의 속성들도 새로운 구성 설정 시스템에 저장된다는 점을 기억하십시오.

어떤 시스템으로 맵핑이 될지는 정보에 포함된 메타베이스 노드에 따라 좌우됩니다. 사용자 정의 속성을 포함한 대부분의 웹 서버 구성 설정은 MIME 맵핑 같은 몇 가지 추가적인 설정들과 함께, 대부분 LM/W3SVC 노드 하위에 존재합니다.

맵핑은 ABO 뷰와 새로운 시스템 뷰간의 변환을 처리해줍니다. 가령, 새로운 시스템에서는 응용 프로그램이라는 개념이 각각의 사이트 하위에, 그리고 모든 가상 디렉터리 상위에 위치합니다. 그러나, 레거시 시스템에서는 응용 프로그램을 이와 달리 취급해서, 특수한 속성(AppIsolated 또는 AppRoot)이 지정된 단순히 가상 디렉터리를 응용 프로그램이라고 간주합니다.

웹 서버의 구성 설정을 기록하기 위한 ABO 호출이 발생하면 메타베이스 호환성 구성 요소는 데이터를 applicationHost.config에 직접 기록합니다. 이를 "직접 기록(Write-Through)"라고 하는데, 정보가 잠시도 메모리에 유지되지 않기 때문입니다. 반대로 웹 서버의 구성 설정을 읽기 위한 ABO 호출이 발생하면 메타베이스 호환성 구성 요소는 데이터를 applicationHost.config에서 직접 읽어들입니다. 이를 "직접 읽기(Read-Through)"라고 하는데, 정보를 읽어올 때 메모리를 거치지 않기 때문입니다.

런타임에 서버가 사용하기 어려운 불완전한 데이터들은 applicationHost.config 내부의 특수한 섹션에 저장됩니다. 이 섹션은 메타베이스 호환성 기능을 위한 영속적인 저장공간으로 사용되며 소비자는 절대로 그 내용을 수정할 수 없습니다. 불완전한 데이터의 예로는, 레거시 스크립트에서 사이트 아이디를 설정했지만 바인딩은 설정하지 않은 경우를 생각해 볼 수 있습니다. IIS 6.0에서는 이런 경우 유효하지 않은 사이트 개체가 구성 설정에 생성됩니다. 그러나, IIS 7에서는 방금 설명한 섹션에 이 정보가 저장되고 서버는 이 정보를 사용하지 않습니다. 그리고, 후속 작업에 의해 사이트 바인딩 설정 작업이 이뤄져야만 사이트 개체가 완벽해졌다고 간주되어 저장되고, 바로 그 시점부터 서버 런타임에 의해 해당 정보가 사용됩니다. 동시에 임시 데이터는 제거되며 사용자가 직접 시스템으로부터 불필요한 데이터를 제거할 필요는 없습니다. 만약 별다른 후속 처리가 이뤄지지 않는다면, 서버 런타임은 이 유효하지 않은 사이트 정보를 절대로 사용하지 않습니다. 그러나, 레거시 스크립트는 IIS 6.0에서 동작했던 것과 마찮가지로 이 데이터를 ABO 뷰를 통해서 접근할 수 있습니다. 결과적으로 레거시 스크립트의 관점에서 볼 때, 시스템은 IIS 6.0과 완벽하게 호환됩니다.

레거시 스크립트와 응용 프로그램을 통해서 사용된 사용자 정의 웹 서버 속성들은 언제나 이 임시 섹션에 저장됩니다. 이 정보들은 IIS 6.0에서와 같이 레거시 인터페이스를 통해서 접근이 가능하므로 시스템은 완벽하게 호환됩니다. 이런 동작 방식은 IIS 7 구성 설정 시스템에서 제안하는 확장 방식과는 명백한 괴리가 존재하며, 이 또한 레거시 응용 프로그램을 한시적으로만 사용하고 IIS 7 구성 설정 시스템이 제공해주는 새로운 인터페이스와 기능을 사용할 수 있도록 전환해야만 하는 또 다른 이유입니다.

그 밖의 메타베이스 구성 설정 데이터

FTP와 SMTP 및 NNTP 구성 설정은 여전히 메타베이스에 저장되며 새로운 IIS 7 구성 설정 시스템으로 전환되지 않았다는 점에 유의하십시오. 따라서, 이런 구성 설정은 여전히 레거시 프로그래밍 인터페이스를 사용하거나 metabase.xml 파일을 직접 편집하여 관리가 가능합니다.

개요

메타베이스 키와 속성들에 대한 대부분의 작업들은 특별히 변경하지 않아도 잘 동작하며, 사용자들은 레거시에서 제공되던 개념과 이름을 사용하고 IIS 7에서 제공되는 새로운 구성 설정 섹션과 속성 이름 등은 드러나지 않습니다. (ABO는 계속해서 속성 IDs를 사용하고, ADSI는 계속해서 레거시 속성 이름을 사용합니다.)

레거시 사용자는 여전히 IIS 6.0에서 사용하던 것과 같이 ADSI 스키마를 사용하거나 확장할 수 있습니다.

XML 파일 호환성

웹 서버 확장을 위한 사용자 정의 구성 설정을 포함한 모든 웹 서버 구성 설정은 metabase.xml 파일이 아닌 system32\inetsrv\applicationHost.config 파일에 저장됩니다. 그래서, 레거시 지원이 파일 형식 수준이 아닌 API 수준에서 이루어지는 것입니다. (일부 레거시 기능이 지원되지 않은 또 다른 이유입니다.) 레거시 인터페이스 호출자는 새롭게 지원되는 파일 형식이나 명칭 또는 개념이 아닌, IIS 6.0에서 이뤄지던 것과 같이 구성 설정에 대한 "ABO 뷰"를 얻게 됩니다.

대표적인 예가 메타베이스 ACLs 같은 개념으로 이 기능은 지원되지 않습니다. 왜냐하면 이 기능은 메타베이스 파일 형식과 밀접하게 관련되어 있기 때문입니다. IIS 7의 구성 설정 시스템은 구성 설정 파일에 대해 표준 파일 ACLs를 이용합니다. 메타베이스 ACLs와 표준 파일 ACLs 간의 맵핑은 제공되지 않습니다.

히스토리 기능이나 백업 및 복구 기능, 그리고 가져오기 및 내보내기 기능 등은 약간 다르게 동작하는데 이 기능들은 새로운 구성 설정 시스템에 의존하기 때문입니다. 그렇기 때문에 구성 설정을 백업하기 위한 ABO 호출은 무시됩니다.

레거시 메타베이스 기능

구성 설정에 대한 감사 기능은 윈도우 서버 2003 서비스 팩 1에서 추가된 기능입니다. 새로운 구성 설정 시스템의 아키텍쳐에서는 이 기능을 구현하기가 매우 어렵기 때문에 해당 기능은 IIS 7에서는 지원되지 않습니다. (예: IIS 7은 인-프로세스 구성 설정 시스템을 사용하지만, IIS 6.0에서는 이를 위해 다른 프로세스에 존재하는 사용자 코드로부터 격리된 범용적인 NT 서비스가 사용됩니다.)

레거시 메타베이스 속성

오직 레거시 속성만 지원됩니다. 새로운 IIS 7 구성 설정 속성들은 레거시 사용자들에게 리턴되지 않으며 .NET 프레임워크 구성 설정 속성들 역시 리턴되지 않습니다.

맵핑 제한

맵핑 알고리즘에는 IIS 6.0과 IIS 7 사이의 차이점에 대한 대비가 필요합니다. 가령, IIS 6.0에서는 사이트 이름("Server Comments")이 필수도 아니었고 반드시 유일할 필요도 없었습니다. 반면, IIS 7에서 모든 사이트는 반드시 유일한 이름을 갖고 있어야 합니다. 따라서, 기존의 ServerComment 속성을 새로운 Name 속성으로 맵핑하는 작업은 간단한 일이 아닙니다. 맵핑 알고리즘은 IIS 7 구성 설정 시스템의 요구를 만족시키기 위해 사이트 이름에 번호를 추가함으로서 사이트마다 강제적으로 유일한 이름을 부여합니다. 결과적으로 사이트 이름의 최종값은 스크립트에서 지정한 값과 차이가 발생하게 됩니다.

분산 구성 설정

오직 applicationHost.config 파일에 존재하는 설정들만 메타베이스 호환성 기능에 의해 지원됩니다. 따라서, web.config 파일에 저장된 구성 설정은 레거시 사용자에게는 리턴되지 않습니다. 특정 URL에 대한 구성 설정을 위해 applicationHost.config 파일에서 Location 태그가 사용된다는 점을 참고하십시오.