Side-by-Side 어셈블리 정보

Windows 병렬 어셈블리는 매니페스트에서 설명합니다. 병렬 어셈블리에는 항상 애플리케이션에 함께 제공되는 리소스 컬렉션(DLL, Windows 클래스, COM 서버, 형식 라이브러리 또는 인터페이스 그룹)이 포함되어 있습니다. 이러한 내용은 어셈블리 매니페스트에 설명되어 있습니다.

일반적으로 병렬 어셈블리는 단일 DLL입니다. 예를 들어 Microsoft COMCTL32 어셈블리는 매니페스트가 있는 단일 DLL인 반면 Microsoft Visual C++ 개발 시스템 런타임 라이브러리 어셈블리에는 여러 파일이 포함되어 있습니다. 매니페스트에는 병렬 어셈블리 및 병렬 어셈블리 종속성을 설명하는 메타데이터 가 포함되어 있습니다.

병렬 어셈블리는 운영 체제에서 명명, 바인딩, 버전 관리, 배포 및 구성의 기본 단위로 사용됩니다. 모든 병렬 어셈블리에는 고유한 ID가 있습니다. 어셈블리 ID의 특성 중 하나는 해당 버전입니다. 자세한 내용은 어셈블리 버전을 참조하세요.

Windows XP부터 동시에 실행되는 애플리케이션에서 여러 버전의 병렬 어셈블리를 사용할 수 있습니다. 매니페스트 및 어셈블리 버전 번호는 로더가 애플리케이션에 대한 어셈블리 버전의 올바른 바인딩을 결정하는 데 사용됩니다. 다음 그림과 같이 병렬 어셈블리 및 매니페스트는 애플리케이션 및 병렬 관리자와 함께 작동합니다.

일반적인 병렬 어셈블리 표현

앞의 예제에서 Comctl32.DLL 버전 6.0 및 Comctl32.DLL 버전 5.0은 모두 병렬 어셈블리 캐시에 있으며 애플리케이션에서 사용할 수 있습니다. 애플리케이션이 를 호출하여 DLL을 로드할 때 병렬 관리자는 애플리케이션에 매니페스트에 설명된 버전 의존성이 있는지 여부를 결정합니다. 관련 매니페스트가 없으면 시스템에서 어셈블리의 기본 버전을 로드합니다. Windows XP의 경우 Comctl32.DLL 버전 5.0이 시스템 기본값입니다. 병렬 관리자가 매니페스트에 명시된 버전 6.0에 대한 의존성을 발견하면 해당 버전이 애플리케이션과 함께 실행되도록 로드됩니다.

Microsoft에서 여러 주요 시스템 어셈블리를 병렬 어셈블리로 사용할 수 있습니다. 자세한 내용은 지원되는 Microsoft Side-by-side 어셈블리를 참조하세요. 애플리케이션 개발자는 자체 병렬 어셈블리를 만들 수도 있습니다. 자세한 내용은 병렬 어셈블리 만들기에 대한 지침을 참조하세요. 대부분의 경우 애플리케이션 코드를 변경하지 않고도 병렬 어셈블리를 사용하도록 기존 애플리케이션을 업데이트할 수 있습니다.

개발자는 다음과 같은 이유로 병렬 어셈블리를 사용하여 격리된 애플리케이션을 만들고 기존 애플리케이션을 격리된 애플리케이션으로 업데이트하는 것이 좋습니다.

  • 병렬 어셈블리는 DLL 버전 충돌 가능성을 줄입니다.
  • 나란히 어셈블리 공유를 사용하면 여러 버전의 COM 또는 Windows 어셈블리를 동시에 실행할 수 있습니다.
  • 애플리케이션 및 관리자는 배포 후 전역 또는 애플리케이션별 구성 기준으로 어셈블리 구성을 업데이트할 수 있습니다. 예를 들어 애플리케이션을 다시 설치하지 않고도 업데이트를 포함하는 병렬 어셈블리를 사용하도록 애플리케이션을 업데이트할 수 있습니다.