ASP.NET 과 IIS7 의 통합 : Microsoft Internet Information Services

 

MVP_logo.gifphoto001_01.gifphoto001.gif

역자 : 송원석 IIS MVP

• IIS 관리 자동화 전문가

• ASP.NET 을 기반의 리치 웹 응용 프로그램 개발 전문가

• 전자조달 솔루션 전문 구축 업체 코어베이스 재직중

• 개인 사이트 에고큐브 (www.egocube.pe.kr) 운영중

• Taeyo`s ASP & .NET 커뮤니티(www.taeyo.pe.kr) 활동중

목차

서론 서론
IIS7 에서의 ASP.NET 의 향상 IIS7 에서의 ASP.NET 의 향상
ASP.NET 통합 아키텍처 ASP.NET 통합 아키텍처

서론

ASP.NET 은 처음 발표된 이래로 Windows / IIS 플랫폼에서 웹 응용 프로그램 개발을 위해 가장 먼저 선택되어지는 플랫폼이 되었습니다. ASP.NET 2.0 은 웹 응용 프로그램 개발을 완전히 새로운 수준으로 이끌었고 개발자들로 하여금 보다 강력한 응용 프로그램을 과거의 그 어느때 보다도 신속하게 작성할 수 있도록 해주었습니다.

IIS7 은 ASP.NET 런타임 확장성 모듈과 핵심 서버를 통합함으로서 ASP.NET 을 또 한 단계 끌어올렸습니다. 이는 개발자들이 저수준의 IIS C++ APIs 를 사용하지 않고서도, ASP.NET 2.0 과 .NET 프레임워크가 제공하는 풍부한 기능들만을 사용하여 IIS 서버 전체를 확장할 수 있게 해줍니다. 게다가 기존의 ASP.NET 응용 프로그램도 폼 인증, 역할, 그리고 출력 캐시 등과 같은 ASP.NET 으로부터 제공되는 기존의 기능들을 모든 유형의 콘텐츠를 대상으로 확장할 수 있게 됨으로서, 견고한 통합으로부터 얻어지는 직접적인 이점을 즉시 누릴수 있게 됩니다.

물론 IIS7 이 진보된 ASP.NET 통합을 기본으로 제공하기는 하지만, 그 선택은 여전히 여러분들의 몫으로 남겨져 있습니다. IIS7 은 하나의 서버상에서 동시에 운영될 수 있는 새로운 통합 모드와 기존 통합 모드를 모두 지원합니다.

본문에서는 새로운 ASP.NET 통합 모드에 의해 소개된 개선점들과, 두 가지 모드의 아키텍처, 그리고 ASP.NET 응용 프로그램을 위해 통합 모드를 선택하거나 구성하는 방법에 대해서 설명합니다.

IIS7 에서의 ASP.NET 의 향상

보다 개선된 IIS7 과 ASP.NET 의 통합은 기존의 응용 프로그램들을 향상시키며, 새롭게 작성되는 응용 프로그램들이 ASP.NET 기능들의 이점을 새로운 방법으로 누릴 수 있도록 해줍니다.

  1. ASP.NET   서비스들이   모든   유형의   콘텐츠들을   대상으로   사용될     있습니다.

    지금까지는 폼 인증, 역할, URL 권한 부여 그리고 출력 캐시 등과 같은 ASP.NET 의 기능들은 오직 ASP.NET 콘텐츠 유형 (예를 들어, ASPX 페이지) 들을 대상으로만 사용할 수 있었습니다. 정적 파일들과 ASP 페이지들, 그리고 다른 유형의 파일들은 이러한 서비스들의 이점을 누릴 수가 없었습니다. IIS7 에서 모든 ASP.NET 서비스들은 모든 콘텐츠들을 대상으로 일관되게 제공될 수 있습니다. 이를테면, ASP.NET 인증, 멤버자격 그리고 로그인 컨트롤들로 작성된 여러분들이 이미 보유하고 있는 ASP.NET 2.0 접근 제어 솔루션을 사용하여, 이미지 파일들과 ASP 페이지들을 포함한 여러분들의 모든 콘텐츠들을 보호하는 것이 가능합니다.

  2. ASP.NET   사용하여   완벽한 IIS   확장이   가능합니다.

    IIS 의 과거 버전에서는 ASP.NET 의 런타임 제약으로 인해서 네이티브 ISAPI 필터나 익스텐션 확장성 모드를 통해 작성되는 서버 확장성이 빈번하게 요구되곤 했었습니다. IIS7 에서는 ASP.NET 모듈을 네이티브 (C++) 서버 API 를 사용하여 개발된 모듈과 완벽하게 동일한 방법으로 직접 서버의 파이프 라인에 끼워 넣을수 있습니다. ASP.NET 모듈은 요청 처리 파이프 라인의 모든 런타임 단계에서 실행될 수 있으며, 네이티브 모듈에 대해서 어떠한 순서로도 실행되어질 수 있습니다. ASP.NET API 또한 이전에 가능했던 것보다 더 많은 요청 처리 제어를 위해 확장되어질 수 있습니다.

  3. 통합된   서버   런타임.

    견고한 ASP.NET 통합은 IIS 와 ASP.NET 간의 많은 기능들까지도 통합되어질 수 있게 해줍니다. IIS7 의 기능들은 IIS 와 ASP.NET 모듈 그리고 핸들러에 대한 구성설정을 통합합니다. 사용자 정의 오류, 그리고 추적을 포함한 다른 많은 기능들도 보다 나은 관리와 집중된 응용 프로그램 디자인을 위해 통합되었습니다.

IIS7 의 새로운 ASP.NET 모드가 제공하는 이점을 활용하는 방법에 대해 보다 많은 내용을 보시려면 Taking Advantage of the Integrated ASP.NET mode 를 참고하시기 바랍니다.

ASP.NET 통합 아키텍처

IIS6 와 그 이전의 릴리스들에서, ASP.NET 은 IIS ISAPI 익스텐션으로 구현되었습니다.

ASP.NET 콘텐츠 유형에 대한 요청은 먼저 IIS 에 의해서 처리되어지고, 그 뒤에 ASP.NET 요청 파이프 라인과 페이지 프레임워크를 호스팅하는 ASP.NET ISAPI DLL 로 전달됩니다. 반면 ASP 페이지나 정적 파일과 같은 비 ASP.NET 콘텐츠들에 대한 요청은 IIS 나 다른 ISAPI 익스텐션들에 의해 처리되며, ASP.NET 쪽으로는 전혀 전달되지 않습니다.

이 모델의 가장 명확한 한계는 ASP.NET 모듈들이나 사용자 정의 ASP.NET 응용 프로그램 코드가 비 ASP.NET 요청에 대해 그 어떠한 서비스도 제공할 수 없다는 점입니다. 더군다나 ASP.NET 실행 경로의 전과 후에 발생하는 IIS 요청 처리의 각각의 부분들에 대해서 ASP.NET 모듈은 일말의 영향도 미칠수 없습니다.

image005.jpg

그림 1: IIS 6.0 ASP.NET 통합 . ASP.NET 요청은   우선 IIS 에   의해   처리되고,   그   다음에 ASP.NET 처리를   위해 ASP.NET ISAPI 익스텐션으로   전달됩니다.

IIS7 에서는 ASP.NET 요청 처리 파이프 라인이 IIS 의 파이프 라인에 직접적으로 중첩되며, 이는 단순하게 끼워 넣어지는 것이 아니라 본질적인 레퍼로서 제공되는 것입니다.

콘텐츠 유형과는 무관하게, 도착한 모든 요청은 IIS 에 의해 전체 과정의 모든 단계에서 요청 처리 제공이 가능한 네이티브 IIS 모듈과 ASP.NET 모듈 양쪽 모두를 통해서 처리됩니다. 바로 이 점으로 인해서 폼 인증 또는 출력 캐시 등과 같은 ASP.NET 모듈이 제공하는 서비스들을 ASP 페이지, PHP 페이지, 정적 파일 등에도 제공할 수 있게 되는 것입니다.

이처럼 서버 파이프 라인에 ASP.NET 모듈을 직접 끼워 넣을 수 있기 때문에, ASP.NET 모듈로 IIS 의 기능을 대체하거나, 특정한 IIS 기능이 실행되기 직전이나 직후에 ASP.NET 모듈을 실행하는 것이 가능합니다. 예를 들어서, 멤버자격 서비스와 SQL 서버 사용자 데이터베이스를 사용하도록 작성된 사용자 정의 ASP.NET 기본 인증 모듈을 사용하여, 오직 Windows 계정에 대해서만 동작하는 내장 IIS 기본 인증 기능을 대체할 수도 있습니다.

게다가, 확장된 ASP.NET APIs 는 요청 처리 작업에 대한 더 많은 직접 통합의 이점을 누립니다. 예를 들어서, ASP.NET 모듈은 ASP 응용 프로그램이 사용자 선호도에 따라 지역화된 콘텐츠를 클라이언트로 강제 전송하는 작업을 실행하기 전에 Accept-Language 헤더를 추가하는 등, 다른 구성 요소들이 특정 요청을 처리하기 이전에 미리 해당 요청의 헤더 정보를 변경할 수도 있습니다.

image007.jpg

그림 2: IIS 7.0 통합   모드 . ASP.NET 구성요소는 IIS 요청   처리   파이프   라인에   직접적으로   끼워 넣어지며,   콘텐츠   유형을   구분하지   않고 모든   요청을 대상으로   실행됩니다.

런타임 통합으로 인해서, IIS 와 ASP.NET 은 서버 모듈들의 활성화와 정렬, 그리고 핸들러 맵핑 구성을 위해 동일한 구성설정을 사용할 수 있게 되었습니다. 추적, 사용자 정의 오류, 그리고 출력 캐시 등을 포함한 다른 통합된 기능들도 마찮가지 입니다.

  • 이 문서는 한국 개발자를 위하여 Microsoft MVP가 번역하여 제공한 문서입니다.

  • Microsoft는 이 문서를 번역자의 의도대로 제공해 드리며 더 정확한 표현 또는 여러분의 의견을 환영합니다.

  • Microsoft는 커뮤니티를 위해 번역자의 의도대로 이 문서를 제공합니다.