다음을 통해 공유


Side-by-Side 실행

Side-by-side 실행은 동일한 컴퓨터에서 여러 버전의 응용 프로그램 또는 구성 요소를 실행하는 기능입니다. 동일한 컴퓨터에서 여러 버전의 공용 언어 런타임과, 하나의 런타임 버전을 사용하는 여러 버전의 응용 프로그램 및 구성 요소를 동시에 사용할 수 있습니다.

다음 그림에서는 동일한 컴퓨터에서 두 가지 다른 버전의 런타임을 사용하는 여러 응용 프로그램을 보여 줍니다. 응용 프로그램 A, B, C는 런타임 버전 1.0을 사용하지만 응용 프로그램 D는 런타임 버전 1.1을 사용합니다.

두 가지 버전의 런타임에 대한 Side-by-Side 실행

Side-by-Side 실행

.NET Framework는 공용 언어 런타임과 API 형식이 포함된 약 20개의 어셈블리로 구성되어 있습니다. 런타임과 .NET Framework 어셈블리의 버전은 별도로 관리됩니다. 예를 들어, 런타임 버전 1.0은 실제로 버전 1.0.3705.0이며 .NET Framework 어셈블리 버전 1.0은 버전 1.0.3300.0입니다.

다음 그림에서는 동일한 컴퓨터에서 두 가지 다른 버전의 구성 요소를 사용하는 여러 응용 프로그램을 보여 줍니다. 응용 프로그램 A와 B는 구성 요소 버전 1.0을 사용하지만 응용 프로그램 C는 동일한 구성 요소의 버전 2.0을 사용합니다.

두 가지 버전의 구성 요소에 대한 Side-by-Side 실행

Side-by-Side 실행

Side-by-Side 실행을 사용하면 응용 프로그램이 바인딩하는 구성 요소 버전과 응용 프로그램이 사용하는 런타임 버전을 보다 강력하게 제어할 수 있습니다.

Side-by-Side 실행의 장점

Windows XP 및 .NET Framework 이전에는 응용 프로그램이 동일한 코드의 호환되지 않는 여러 버전을 구분할 수 없었으므로 DLL 충돌이 발생했습니다. DLL에 포함된 형식 정보는 파일 이름에만 바인딩되었습니다. 응용 프로그램은 DLL에 포함된 형식이 응용 프로그램을 빌드할 때 사용된 형식과 같은지를 알 수 없었습니다. 따라서 새 버전의 구성 요소가 이전 버전을 덮어쓰고 응용 프로그램을 중단시킬 수 있었습니다.

Side-by-Side 실행 및 .NET Framework는 DLL 충돌을 없애기 위한 다음과 같은 기능을 제공합니다.

  • 강력한 이름의 어셈블리

    Side-by-Side 실행은 강력한 이름의 어셈블리를 사용하여 형식 정보를 특정 버전의 어셈블리에 바인딩합니다. 이렇게 하면 응용 프로그램이나 구성 요소가 잘못된 버전의 어셈블리에 바인딩되지 않도록 할 수 있습니다. 또한, 강력한 이름의 어셈블리를 사용하면 동일한 컴퓨터에 여러 버전의 파일이 함께 있을 수 있으며 응용 프로그램에서 이러한 파일을 사용할 수 있습니다. 자세한 내용은 강력한 이름의 어셈블리를 참조하십시오.

  • 버전 인식 코드 저장소

    .NET Framework에서는 전역 어셈블리 캐시에 버전 인식 코드 저장소를 제공합니다. 전역 어셈블리 캐시는 .NET Framework가 설치된 모든 컴퓨터에 있는 컴퓨터 수준의 코드 캐시입니다. 이 캐시는 버전, 문화권 및 게시자 정보에 따라 어셈블리를 저장하며 여러 버전의 구성 요소와 응용 프로그램을 지원합니다. 자세한 내용은 전역 어셈블리 캐시를 참조하십시오.

  • 격리성

    .NET Framework를 사용하면 격리 상태로 실행되는 응용 프로그램과 구성 요소를 만들 수 있습니다. 이러한 격리성은 Side-by-Side 실행의 필수 요소입니다. 격리성을 통해 사용 중인 리소스를 인식하고 여러 버전의 응용 프로그램 또는 구성 요소 간에 리소스를 안전하게 공유할 수 있습니다. 또한 버전 고유의 방식으로 파일이 저장됩니다. 격리에 대한 자세한 내용은 Side-by-Side 실행용 응용 프로그램 및 구성 요소를 만드는 방법을 참조하십시오.

버전 호환성

.NET Framework 버전 1.0과 1.1은 서로 호환되도록 디자인되었습니다. .NET Framework 버전 1.0으로 빌드한 응용 프로그램을 버전 1.1에서 실행하거나 .NET Framework 버전 1.1로 빌드한 응용 프로그램을 버전 1.0에서 실행할 수 있습니다. 그러나 .NET Framework 버전 1.1에 추가된 API 기능은 .NET Framework 버전 1.0에서 작동되지 않습니다. 버전 2.0에서 만든 응용 프로그램은 버전 2.0에서만 실행됩니다. 버전 2.0 응용 프로그램은 버전 1.1 이하에서 실행되지 않습니다.

.NET Framework 버전은 런타임과 관련 .NET Framework 어셈블리로 구성되는 하나의 단위로 취급됩니다. 이러한 개념을 어셈블리 통합이라고 합니다. 다른 버전의 .NET Framework 어셈블리를 포함하도록 어셈블리 바인딩을 리디렉션할 수 있지만 기본 어셈블리 바인딩을 재정의하는 것은 위험할 수 있으며 배포 전에 엄격한 테스트 과정이 필요합니다.

관련 항목

제목

설명

런타임 버전 정보 찾기

런타임이 응용 프로그램을 위해 로드할 런타임 버전에 대한 정보를 찾는 방법에 대해 설명합니다.

.NET Framework 어셈블리 통합 개요

런타임에서 서로 다른 여러 버전의 .NET Framework 어셈블리에 대한 참조를 처리하는 방법에 대해 설명합니다.

로드할 런타임 버전 결정

런타임이 응용 프로그램을 위해 로드할 런타임 버전을 결정하기 위해 거치는 단계에 대해 설명합니다.

어셈블리 바인딩 리디렉션

특정 버전의 어셈블리에 응용 프로그램을 바인딩하는 방법에 대해 설명합니다.

부분적으로 정규화된 어셈블리 참조 및 Side-by-Side 실행

Side-by-Side 실행 방식으로 실행되도록 만들어진 응용 프로그램에서 부분적으로 정규화된 어셈블리 참조를 사용할 때의 관련 사항에 대해 설명합니다.

게시자 정책 파일 및 Side-by-Side 실행

게시자 정책 파일을 사용하여 어셈블리 바인딩을 리디렉션하는 방법에 대한 정보 및 절차를 제공합니다.

위성 어셈블리 및 Side-by-Side 실행

Side-by-Side 실행 상태에서 위성 어셈블리가 처리되는 방식에 대해 설명합니다.

설치된 .NET Framework 버전 확인

여러 버전의 .NET Framework를 설치하고 사용하는 방법에 대한 정보를 제공합니다.

방법: 응용 프로그램 구성 파일을 사용한 대상 .NET Framework 버전 지정

응용 프로그램이 대상 공용 언어 런타임 버전을 지정하는 데 사용할 수 있는 구성 파일을 만드는 방법에 대해 설명합니다.

여러 버전의 응용 프로그램 또는 구성 요소 만들기

Side-by-Side 실행용으로 설계된 응용 프로그램 및 구성 요소를 만들고 배포하는 방법에 대해 설명합니다.

응용 프로그램 및 구성 요소의 서비스 전략 결정

버전이 관리되는 구성 요소와 응용 프로그램의 서비스 모델을 만드는 방법에 대해 설명합니다.

In-Process Side-by-Side 실행

In-Process Side-by-Side 런타임 호스트 활성화를 사용하여 단일 프로세스에서 여러 버전의 CLR을 실행하는 방법을 설명합니다.

공용 언어 런타임의 어셈블리

어셈블리에 대해 개념적으로 설명합니다.

응용 프로그램 도메인

응용 프로그램 도메인에 대해 개념적으로 설명합니다.

참조

<supportedRuntime> 요소