IT한 것/WINDOWS

Side-by-side Assemblies

lovian 2009. 2. 9. 16:42
원문: http://msdn.microsoft.com/ko-kr/library/aa376307(en-us,VS.85).aspx

윈도우즈 side-by-side assembly는 manifest로 설명된다. side-by-side assembly는 항상 프로그램과 함께 제공되는 리소스(DLL 그룹, 윈도우즈 클래스, COM 서버, 타입 라이브러리 또는 인터페이스)의 묶음을 포함한다. 이러한 것들이 assembly manifest로 묘사된다.

일반적으로 side-by-side assembly는 단일 DLL 이다. 예를 들어, Microsoft Visual C++ developement system run-time 라이브러리가 복수개의 파일을 포함하는 반면에 Microsoft COMCTL32 assembly는 단일 DLL 이다. Manifest는 side-by-side assembly와 side-by-side assembly 의존성을 나타내는 메타데이터를 가진다.

Side-by-side assembly는 naming, binding, versioning, deployment, configuration의 기본단위로 운영체제에 의해서 사용된다. 모든 side-by-side assembly는 고유 식별자를 가진다. assembly 식별자의 속성중에 하나는 자신의 버전이다. 더 자세한 내용은 Assembly Versions를 참조하라.

Windows XP를 실행중일 때, side-by-side assembly의 여러개의 버전은 같은 시간에 실행중인 프로그램에 의해서 사용될 수 있다. Manifest, assembly version는 assembly version이 프로그램에 올바르게 연결(binding)되었지는 결정하는 loader에 의해 사용된다. side-by-side assembly와 manifest는 아래의 그림과 같이 프로그램과 side-by-side 관리자와 함께 작동한다.

그림.

이전의 예제에서, comctl32.dll version 6.0과 comctl32.dll version 5.0이 side-by-side assembly 캐쉬에 있고, 프로그램들은 사용가능하다. 어떤 프로그램이 DLL 적재를 호출했을때, side-by-side 관리자는 그 프로그램이 manifest에 표기된 버전 종속성이 있는지 없는지 판단한다. 관계있는 manifest가 존재하지 않는다면, 시스템은 assembly의 기본 버전을 적재시킨다. Windows XP의 경우 comctl32.dll version 5.0이 시스템 기본이다. side-by-side 관리자가 manifest에 있는 버전 6.0에 대한 종속성을 찾아냈다면, 해당 버전이 프로그램 작동을 위해서 적재된다.

Several key system assemblies are being made available from Microsoft as side-by-side assemblies. For more information, see Supported Microsoft Side-by-side Assemblies. Application developers can also create their own side-by-side assemblies. For more information, see Guidelines for Creating Side-by-side Assemblies. In many cases it is possible to update existing applications to use side-by-side assemblies without having to change the application code.

개발자들은 고립된 프로그램을 만들고 아래와 같은 이유로 고립된 프로그램에 이미있는 프로그램을 개신할때에 side-by-side assembly를 사용하는 것이 유용하다.

  • Side-by-side assembly는 DLL 버전 충돌의 가능성을 낮추어 준다.
  • Side-by-side assembly를 공유하는 것은 여러버전의 COM이나 윈도우즈 assembly가 동일시간에 실행될수 있도록 한다.
  • 프로그램이나 관리자는 프로그램 설치후에 전역이나 윈도우즈 서버 2003기반의 프로그램당 설정으로 assembly 설정을 갱신할 수 있다. 예를들어 어떤 프로그램은 재설치 없는 갱신을 하는 side-by-side assembly를 사용하여 갱신 될 수 있다. (재설치 안한다는 내용인 듯..)