ASP.NET Side-by-Side 개요
업데이트: 2007년 11월
.NET Framework를 사용하면 동일한 컴퓨터에 여러 버전의 공용 언어 런타임을 설치할 수 있습니다. 기본적으로 이미 런타임이 설치되어 있는 컴퓨터에 .NET Framework를 설치하면 모든 ASP.NET 응용 프로그램이 이 버전의 .NET Framework를 사용하도록 자동으로 업데이트됩니다. 나중 버전의 .NET Framework가 이전 버전과 호환되도록 설계된 경우에도 특정 버전의 런타임을 사용하도록 ASP.NET 응용 프로그램을 구성할 수 있습니다.
이 항목의 내용은 다음과 같습니다.
시나리오
<your technology here> 기능
배경
코드 예제
클래스 참조
추가 리소스
새로운 기능
시나리오
맨 위로 이동
기능
맨 위로 이동
배경
일반적으로 컴퓨터에서 구성 요소나 응용 프로그램을 업데이트하면 이전 버전은 제거되고 새 버전으로 바뀝니다. 이 경우 새 버전이 이전 버전과 호환되지 않으면 해당 구성 요소나 응용 프로그램을 사용하는 다른 응용 프로그램이 중단됩니다. .NET Framework에서는 여러 버전의 어셈블리나 응용 프로그램을 같은 컴퓨터에 동시에 설치할 수 있는 side-by-side 실행을 지원합니다. 여러 버전을 동시에 설치할 수 있으므로 관리되는 응용 프로그램은 다른 버전을 사용하는 다른 응용 프로그램에 영향을 주지 않으면서 사용할 버전을 선택할 수 있습니다.
ASP.NET에서는 응용 프로그램이 동일한 컴퓨터에 설치되어 있지만 다른 버전의 .NET Framework를 사용할 경우 side-by-side 방식으로 실행된다고 합니다. 다음 항목에서는 ASP.NET에서 side-by-side의 지원 및 side-by-side 실행을 위해 ASP.NET 응용 프로그램을 구성하는 방법에 대해 설명합니다.
.NET Framework를 사용하면 동일한 컴퓨터에 여러 버전의 공용 언어 런타임을 설치할 수 있습니다. 기본적으로 런타임이 이미 설치되어 있는 컴퓨터에 .NET Framework를 설치하면 모든 ASP.NET 응용 프로그램이 이 버전의 .NET Framework를 사용하도록 자동으로 업데이트됩니다. 호환되지 않는 런타임 버전이나 나중 버전의 런타임에 바인딩된 응용 프로그램의 경우만 예외입니다. 일반적으로 호환성은 .NET Framework 버전 번호에 따라 결정됩니다. 일반적으로 주 버전 번호가 다르면 호환되지 않지만, 부 버전(업데이트) 및 빌드 버전 번호가 다른 경우에는 호환됩니다. 이후 버전의 .NET Framework가 이전 버전과 호환되는 경우에도 특정 버전의 런타임을 사용하도록 ASP.NET 응용 프로그램을 구성할 수 있습니다.
ASP.NET 응용 프로그램의 스크립트 맵
여러 버전의 .NET Framework가 동일한 컴퓨터에 설치되어 있는 경우 각 설치마다 자체 버전의 ASP.NET ISAPI 확장(Aspnet_isapi.dll)이 있습니다. ASP.NET ISAPI 확장에 따라 응용 프로그램이 사용하는 .NET Framework 버전이 결정됩니다. 특정 ASP.NET ISAPI 확장을 사용하도록 ASP.NET 응용 프로그램을 구성할 수 있습니다. ASP.NET 응용 프로그램에 사용할 ASP.NET ISAPI 확장을 지정하려면 응용 프로그램 맵이라고도 하는 스크립트 맵을 응용 프로그램의 IIS(인터넷 정보 서비스)에 등록해야 합니다.
스크립트 맵은 파일 이름 확장명(예: .aspx)과 HTTP 동사(예: GET 및 POST)를 적절한 ISAPI 확장에 연결합니다. 예를 들어, IIS가 .aspx 파일에 대한 요청을 받으면 응용 프로그램의 스크립트 맵은 해당 .aspx 파일을 적절한 버전의 ASP.NET ISAPI 확장에 전달하도록 IIS에 지시합니다. 각 ASP.NET 응용 프로그램의 스크립트 맵은 일반적으로 IIS(인터넷 정보 서비스) 관리 콘솔에서 설정하며 응용 프로그램에 직접 적용하거나 부모 응용 프로그램에서 상속할 수 있습니다. 기본적으로 .NET Framework가 설치될 때 ASP.NET 응용 프로그램이 이후 버전이나 호환되지 않는 버전을 사용하는 경우 이외에는 기존의 모든 응용 프로그램의 스크립트 맵이 설치된 새 ASP.NET ISAPI 확장을 사용하도록 자동으로 업데이트됩니다.
ASP.NET 응용 프로그램의 스크립트 맵을 좀 더 쉽게 다시 구성할 수 있도록 설치된 각 .NET Framework에는 해당 버전의 ASP.NET IIS 등록 도구(Aspnet_regiis.exe)가 있습니다. 기본적으로 이 도구는 다음 디렉터리에 설치됩니다.
%system root%\Microsoft.NET\Framework\versionNumber
이 도구를 사용하여 ASP.NET 응용 프로그램을 해당 도구와 일치하는 ASP.NET ISAPI 확장 버전에 매핑할 수 있습니다.
참고: |
---|
Aspnet_regiis.exe는 특정 버전의 .NET Framework와 연결되어 있으므로 해당 버전의 Aspnet_regiis.exe를 사용하여 ASP.NET 응용 프로그램의 스크립트 맵을 다시 구성해야 합니다. Aspnet_regiis.exe 도구는 ASP.NET 응용 프로그램의 스크립트 맵을 해당 도구와 일치하는 ASP.NET ISAPI 확장 버전으로만 다시 구성합니다. |
또한 설치된 모든 ASP.NET 버전의 상태를 표시하고, 연관된 버전의 ASP.NET을 등록하고, 클라이언트 스크립트 디렉터리를 만들고, 다른 구성 작업을 수행할 때도 이 도구를 사용할 수 있습니다.
스크립트 맵과 IIS 구성에 대한 자세한 내용은 Setting Application Mappings in IIS 6.0 (IIS 6.0)을 참조하십시오. ASP.NET 응용 프로그램의 스크립트 맵을 업데이트하는 방법은 ASP.NET IIS 등록 도구(Aspnet_regiis.exe)를 참조하십시오.
ASP.NET 성능 카운터
성능 카운터를 사용하면 Windows 성능 콘솔에서 ASP.NET의 작업을 모니터링할 수 있습니다. 각 버전의 .NET Framework는 별도의 성능 카운터 개체 집합을 설치하여 ASP.NET 응용 프로그램과 전체 ASP.NET을 모니터링합니다. 이러한 개체는 각각 명명 규칙 "ASP.NET Apps v.X.X.XXXX.X"와 "ASP.NET v.X.X.XXXX.X"를 사용합니다. 여기서 v.X.X.XXXX.X는 ASP.NET 버전입니다.
또한 .NET Framework는 설치된 모든 버전의 ASP.NET에 적용되는 ASP.NET 시스템 및 ASP.NET 응용 프로그램 성능 카운터도 설치합니다. 이러한 카운터는 모든 버전의 ASP.NET에 유효하지만 항상 설치된 최신 버전에 연결됩니다. 최신 버전의 ASP.NET이 제거되면 이러한 카운터는 자동으로 나머지 ASP.NET 중 가장 최신 버전으로 다시 연결됩니다.
ASP.NET 상태 서비스
ASP.NET 상태 서비스를 사용하여 컴퓨터에서 세션 상태를 관리할 수 있습니다. 동일한 컴퓨터에 설치된 모든 버전의 ASP.NET은 최신 버전의 ASP.NET과 함께 설치되는 상태 서비스를 공유합니다. 이 버전은 aspnet_state의 서비스 이름에 등록됩니다. 따라서 이 버전의 ASP.NET을 제거하면 컴퓨터에 남아 있는 최신 버전의 서비스가 등록되어 대신 사용됩니다. ASP.NET 상태 서비스에 대한 자세한 내용은 세션 상태 모드를 참조하십시오.
ASP.NET SQL 상태 서버
ASP.NET SQL 상태 서버는 컴퓨터에서 SQL의 세션 상태를 관리하는 데 사용됩니다. 동일한 컴퓨터에 설치된 모든 버전의 ASP.NET은 최신 버전의 ASP.NET과 함께 설치되는 SQL 상태 서버를 공유합니다. 이 버전의 ASP.NET을 제거하면 컴퓨터에 남아 있는 최신 버전이 등록되어 대신 사용됩니다. ASP.NET SQL 상태 서버에 대한 자세한 내용은 세션 상태 모드를 참조하십시오.
여러 버전의 ASP.NET 관리
.NET Framework를 사용하여 동일한 컴퓨터에 여러 버전의 CLR(공용 언어 런타임)를 설치할 수 있습니다. 이렇게 하면 ASP.NET 응용 프로그램은 다른 응용 프로그램에 영향을 주지 않고 필요한 버전을 사용할 수 있습니다. 다음 단원에서는 여러 버전의 ASP.NET을 동일한 컴퓨터에서 설치, 제거 및 재배포하는 방법을 설명합니다.
여러 버전의 ASP.NET 설치
컴퓨터에 ASP.NET 버전을 추가하려면 설치하려는 버전에 대한 .NET Framework 재배포 가능 패키지 설치 프로그램(Dotnetfx.exe)을 실행합니다. 기본적으로 기존의 모든 ASP.NET 응용 프로그램은 다음 조건이 충족되면 설치 중에 런타임의 설치 버전을 사용하도록 자동으로 재구성됩니다.
설치되는 .NET Framework 버전이 현재 응용 프로그램에 매핑되어 있는 버전보다 더 나중 버전인 경우
설치되는 .NET Framework 버전이 응용 프로그램에 매핑된 버전과 호환되는 경우. 일반적으로 버전 번호에 따라 호환성이 결정됩니다. 부 수정 번호와 빌드 번호가 변경된 경우에는 호환될 수 있지만 주 수정 번호가 변경되면 호환되지 않습니다.
참고: ASP.NET 응용 프로그램은 앞의 조건이 충족될 경우 설치되는 버전의 ASP.NET을 사용하도록 자동으로 업데이트되지만 현재 Machine.config 파일에 포함된 사용자 지정 구성 설정은 새로 설치된 Machine.config 파일로 옮겨지지 않습니다. 응용 프로그램이 사용자 지정 구성 설정을 사용하는 경우 새 Machine.config 파일을 수동으로 업데이트하거나 ASP.NET IIS 등록 도구(Aspnet_regiis.exe)를 사용하여 응용 프로그램을 이전 버전의 ASP.NET으로 다시 매핑해야 합니다.
기존의 모든 응용 프로그램이 설치할 버전의 .NET Framework에 자동으로 다시 매핑되지 않게 하려면 Dotnetfx.exe 설치 프로그램에 /noaspupgrade 명령줄 옵션을 사용합니다. 다음 명령은 이 구문을 보여 줍니다.
Dotnetfx.exe /c:"install /noaspupgrade"
.NET Framework 재배포 가능 패키지에 대한 자세한 내용은 .NET Framework 재배포를 참조하십시오.
참고: |
---|
Windows 제어판의 프로그램 추가/제거 항목이나 Windows 서버 구성 마법사를 통해 .NET Framework를 설치한 경우 기본적으로 ASP.NET은 보안 잠금 콘솔에서 활성화됩니다. 그러나 .NET Framework가 Microsoft Visual Studio, Windows Update 또는 .NET Framework 재배포 가능 패키지(Dotnetfx.exe)를 통해 설치된 경우 ASP.NET은 기본적으로 비활성화됩니다. |
ASP.NET 버전 제거
한 대의 컴퓨터에 여러 버전의 ASP.NET이 설치되어 있으면 특정 버전을 제거할 수 있습니다. ASP.NET 제거 작업은 보통 Windows 제어판의 프로그램 추가/제거 항목을 통해 .NET Framework를 제거하는 방법으로 수행됩니다. 제거하는 동안 설치 프로그램은 -u 옵션(제거 플래그)을 사용하여 ASP.NET IIS 등록 도구(Aspnet_regiis.exe)를 호출합니다.
참고: |
---|
연관된 .NET Framework를 제거하지 않고 ASP.NET 버전 하나만 제거하려면 Aspnet_regiis.exe를 직접 사용합니다. 설치된 각 .NET Framework에는 해당 도구가 연결되어 있습니다. ASP.NET만 제거하려면 제거하려는 ASP.NET 버전과 연관된 도구 버전의 -u 옵션을 사용합니다. 자세한 내용은 ASP.NET IIS 등록 도구(Aspnet_regiis.exe)를 참조하십시오. |
Aspnet_regiis.exe 도구의 -u 옵션을 사용하면 다음 작업을 할 수 있습니다.
제거 중인 ASP.NET 버전에 현재 매핑되어 있는 모든 ASP.NET 응용 프로그램은 컴퓨터의 호환 가능한 ASP.NET 최신 버전에 다시 매핑됩니다. 호환 가능한 버전이 없으면 응용 프로그램의 스크립트 맵이 완전히 제거됩니다.
주의: 스크립트 맵을 제거하면 IIS는 ASP.NET 페이지를 리터럴 텍스트로 서비스하게 됩니다. 이로 인해 클라이언트에 소스 코드가 노출될 수 있습니다.
제거할 ASP.NET 버전이 현재 최신 버전인 경우 ASP.NET 상태 서비스는 호환 가능한 최신 버전으로 매핑됩니다. 호환 가능한 버전이 없으면 ASP.NET 상태 서비스는 제거됩니다. ASP.NET 상태 서비스는 호환 가능한 모든 버전의 ASP.NET에서 공유되며 항상 설치된 최신 ASP.NET 버전으로 매핑됩니다.
제거되는 버전에 대한 성능 개체 및 관련된 성능 카운터도 제거됩니다. 설치된 모든 버전의 ASP.NET 및 ASP.NET 응용 프로그램에 적용되는 일반적인 성능 개체와 카운터는 컴퓨터에 남아 있는 최신 버전에 매핑됩니다.
컴퓨터에 남아 있는 ASP.NET 설치가 없으면 ASPNET 사용자 계정과 관련 액세스 제어 목록도 제거됩니다.
여러 버전의 ASP.NET을 설치하는 경우의 다른 영향에 대한 자세한 내용은 ASP.NET Side-by-Side 개요를 참조하십시오.
타사 제품을 통한 .NET Framework 재배포
특수 재배포 라이센스에 따라 .NET Framework를 타사 응용 프로그램에 설치의 일부로 패키지하여 함께 설치할 수 있습니다. 이렇게 하면 응용 프로그램에 필요한 특정 버전의 .NET Framework를 설치할 수 있습니다. 응용 프로그램과 런타임을 함께 배치할 수 있도록 .NET Framework 재배포 가능 패키지(Dotnetfx.exe)가 제공됩니다. 기본 설치 스크립트인 Dotnetfx.exe가 응용 프로그램의 필요를 충족시키지 못할 수 있습니다. 이 경우 응용 프로그램 설치의 일부로 .NET Framework를 설치할 때 아래에 설명된 옵션을 적절히 사용할 수 있습니다.
.NET Framework 재배포 가능 패키지에 대한 자세한 내용은 .NET Framework 재배포를 참조하십시오. 재배포 가능 패키지의 EULA(최종 사용자 사용권 계약)에 대한 자세한 내용은 .NET Framework 재배포 가능 패키지를 얻는 곳을 참조하십시오.
스크립트 맵 자동 업데이트 비활성화
응용 프로그램이 호환되지 않는 런타임 버전이나 런타임 후속 버전에 바인딩되어 있지 않는 한, 기본적으로 이미 .NET Framework가 설치되어 있는 컴퓨터에 .NET Framework를 설치하면 모든 ASP.NET 응용 프로그램이 새 버전의 .NET Framework를 사용하도록 자동 업데이트됩니다. 일반적으로 시스템 관리자만 이러한 유형의 설치를 수행합니다. 응용 프로그램 설치의 일부로 .NET Framework를 설치해도 컴퓨터의 다른 응용 프로그램이 이 버전의 런타임을 사용해야 하는 것은 아닙니다.
설치 스크립트에 따라 Dotnetfx.exe는 일반적으로 -i 옵션을 통해 ASP.NET IIS 등록 도구(Aspnet_regiis.exe)를 호출하여 ASP.NET을 설치합니다. 이 옵션을 지정하면 모든 기존 ASP.NET 응용 프로그램에 대한 스크립트 맵의 업데이트가 시도됩니다. 설치 중에 컴퓨터의 다른 응용 프로그램의 스크립트 맵도 자동으로 업데이트되는 것을 방지하려면 Dotnetfx.exe 명령을 실행할 때 /noaspnetupgrade 옵션을 사용합니다. 이 옵션을 사용하면 설치 프로그램은 대신 Aspnet_regiis.exe의 -ir 옵션을 사용하며, 자동 스크립트 맵 업데이트, 기본 문서화 및 MIME 스와핑 단계가 생략됩니다. 다음 명령은 이 구문을 보여 줍니다.
Dotnetfx.exe /c:"install /noaspupgrade"
수동으로 스크립트 맵 업데이트
응용 프로그램의 스크립트 맵을 수동으로 설정해야 하는 경우가 있습니다. 응용 프로그램에 설치되는 버전의 .NET Framework를 대상으로 하는 가상 디렉터리가 필요한 경우 응용 프로그램의 설치 프로그램은 -s 또는 -sn 옵션으로 Aspnet_regiis.exe를 명시적으로 호출하여 스크립트 맵을 설치해야 합니다.
다음은 SampleApp1이라는 응용 프로그램의 스크립트 맵을 업데이트하는 샘플 명령줄입니다.
Aspnet_regiis.exe -s W3SVC/1/ROOT/SampleApp1
자세한 내용은 ASP.NET IIS 등록 도구(Aspnet_regiis.exe)를 참조하십시오.
.NET Framework 어셈블리 통합
side-by-side 실행에서는 하나의 응용 프로그램이 버전이 다른 여러 .NET Framework를 사용하여 작성된 여러 구성 요소로 구성될 수 있습니다. 이 경우 구성 요소의 종속 관계 간에 충돌이 발생할 수 있습니다. 예를 들어 구성 요소 A는 .NET Framework 버전 1.1을 사용하여 작성되었으며 System.Data 어셈블리 버전 1.1을 사용해야 한다고 가정합니다. 또한 구성 요소 B는 .NET Framework 버전 1.1을 사용하여 작성되었으며 System.Data 어셈블리 버전 2.0을 사용해야 한다고 가정합니다. 호환되지 않는 어셈블리 버전이 동시에 로드되면 예기치 않은 형식 불일치 또는 다른 문제가 발생할 수 있습니다.
응용 프로그램이 사용할 .NET Framework 버전을 결정하는 방법
다른 버전의 .NET Framework에서 작성된 구성 요소가 응용 프로그램에 사용될 경우 이 응용 프로그램과 관련된 버전에 따라 응용 프로그램 및 모든 구성 요소에서 사용하는 .NET Framework 어셈블리의 버전이 결정되므로 버전이 다른 동일한 어셈블리를 사용할 수 있습니다. 이 예제의 경우 응용 프로그램이 2.0 버전의 .NET Framework에 매핑되면 System.Data 어셈블리 버전 2.0이 로드된 후 이 응용 프로그램에 사용되는 모든 구성 요소에서 공유됩니다. 구성 요소 A에서 System.Data 어셈블리 버전 1.1으로의 참조는 런타임에 참조 버전 2.0로 수준이 올라갑니다.
특정 어셈블리의 업데이트된 버전을 얻은 경우 응용 프로그램이 매핑된 .NET Framework의 버전에 관계없이 응용 프로그램과 어셈블리를 연결할 수 있습니다. 이렇게 하려면 <bindingRedirect> 요소를 Machine.config 또는 Web.config 파일에 추가하면 됩니다. 이러한 요소는 특정한 종류의 응용 프로그램에 대해 기존 어셈블리를 대신하는 업데이트된 어셈블리를 응용 프로그램과 연결합니다. 예를 들어 앞으로 SOAP 버전 1.2를 지원하는 업데이트된 System.Web.Service.dll 버전이 릴리스되면 처음에 .NET Framework와 함께 설치된 버전 대신 업데이트된 버전을 응용 프로그램에 사용할 수 있습니다.
이 동작은 ASP.NET 호스트 구성 파일(Aspnet.config)에서도 재정의할 수 있습니다. ASP.NET에서는 이 파일을 사용하여 Web.config 파일의 재정의에 관계없이 System.Web.dll 및 System.Web.RegularExpressions.dll의 버전이 응용 프로그램과 관련된 버전과 항상 일치하도록 합니다.
경우에 따라 이전 버전으로 작성된 응용 프로그램에서 나중 버전의 ASP.NET을 사용하여 작성된 구성 요소를 사용할 수 있습니다. 응용 프로그램에 사용되는 런타임 버전은 항상 응용 프로그램과 관련된 ASPNET ISAPI 버전에 따라 결정됩니다. 응용 프로그램이 이전 버전의 .NET Framework를 사용하도록 구성되어 있으면 구성 요소는 해당 버전을 사용하도록 런타임에 자동으로 리디렉션됩니다.
이전 버전에서 작성된 응용 프로그램에서 나중 버전의 .NET Framework로 작성된 구성 요소를 사용할 때는 다음 사항을 고려하십시오.
구성 요소는 나중 버전의 .NET Framework의 어떠한 기능도 사용하지 않아야 하며 나중 버전에 한정된 어떠한 동작에도 의존하면 안 됩니다. 이전 버전의 런타임에서는 이러한 기능을 사용하지 못할 수 있습니다.
ASP.NET은 IIS의 스크립트 맵을 사용하여 응용 프로그램을 런타임 버전에 바인딩합니다. <supportedRuntime> 및 <requiredRuntime> 구성 요소는 ASP.NET 응용 프로그램에 적용되지 않습니다.
또는 구성 요소를 작성하는 데 사용된 런타임 버전이 컴퓨터에 설치되어 있으면 나중의 런타임 버전을 사용하도록 응용 프로그램을 다시 구성할 수도 있습니다. 일반적으로 최신 버전의 .NET Framework는 이전 버전과의 호환성을 유지하도록 되어 있으므로 별다른 수정 작업 없이 대부분의 응용 프로그램 기능을 사용할 수 있습니다. 그러나 새 버전의 .NET Framework에서 응용 프로그램을 실행할 경우 응용 프로그램에 오류가 발생하지 않도록 신중하게 테스트해야 합니다.
맨 위로 이동
코드 예제
방법 및 연습 항목
맨 위로 이동
클래스 참조
맨 위로 이동
추가 리소스
맨 위로 이동
새로운 기능
맨 위로 이동
참고 항목
참조
맨 위로 이동