본문 바로가기

오래된 흔적/Visual Studio.NET

Side by Side Assemblies

http://msdn.microsoft.com/ko-kr/library/aa376307(en-us,VS.85).aspx

A Windows side-by-side assembly is described by manifests. A side-by-side assembly contains a collection of resources—a group of DLLs, Windows classes, COM servers, type libraries, or interfaces—that are always provided to applications together. These are described in the assembly manifest.

윈도우즈 side-by-side assembly는 manifests에 의해 기술된다. side-by-side assembly는 DLL들의 그룹, 윈도우즈 클래스들, COM servers, type libraries 또는 인터페이스들로 구성될 수 있는 리소스들의 모음을 포함하고 있다.  이것들은 assembly manifest안에 기술되어 있다.

Typically, a side-by-side assembly is a single DLL. For example, the Microsoft COMCTL32 assembly is a single DLL with a manifest whereas the Microsoft Visual C++ development system run-time libraries assembly contains multiple files. Manifests contain metadata that describes side-by-side assemblies and side-by-side assembly dependencies.

전형적으로 a side-by-side assembly는 하나의 DLL이다. 예를 들면, Microsoft Visual C++ 시스템의 런타임 라이브러리 assembly는 여러개의 파일을 포함하고 있는 반면에 Microsoft COMCTL32 assembly는 하나의 DLL이다. Manifests는 side-by-side assemblies와 side-by-side assembly의 의존성을 기술하고 있는 메타데이터를 포함하고 있다.

Side-by-side assemblies are used by the operating system as fundamental units of naming, binding, versioning, deployment, and configuration. Every side-by-side assembly has a unique identity. One of the attributes of the assembly identity is its version. For more information, see Assembly Versions.

side-by-side assembly들은 naming, binding, versioning, deployment 그리고 configuration들을 하기 위해 operating system에 의해 사용되어 진다. 각각의 side-by-side assembly들은 unique한 identity를 가지고 있다. 버젼 정보 같은 경우 assembly identiy의 속성중의 하나이다. 자세한 정보는, Assembly Versions를 확인해 보기 바란다.

Starting with Windows XP, multiple versions of side-by-side assemblies can be used by applications running at the same time. Manifests, and the assembly version number, are used by the loader to determine the correct binding of assembly versions to applications. Side-by-side assemblies and manifests work with applications and the side-by-side manager as illustrated in the following figure.

우선 Windows XP의 경우 다양한 버젼의 side-by-side assembly들이 응용프로그램에 의해 동시에 사용되어 질 수 있다. 응용프로그램이 실행될때 로더는 Manifests와 assembly version number를 이용하여 정확한 assembly versions를 응용프로그램에게 바인딩을 시킨다. side-by-side assembly들과 manifest들은 응용프로그램과 같이 사용되어 지고 side-by-side manager는 다음 그림과 같다.


사용자 삽입 이미지


In the preceding example, both Comctl32.DLL version 6.0 and Comctl32.DLL version 5.0 are in the side-by-side assembly cache and available to applications. When an application calls to load the DLL, the side-by-side manager determines whether the application has a version dependence described in a manifest. If there is no relevant manifest, the system loads the default version of the assembly. For Windows XP, version 5.0 of Comctl32.DLL is the system default. If the side-by-side manager finds a dependence on version 6.0 stated in a manifest, that version is loaded to run with the application.

이전 예제에서 보자면, Comctl32.DLL version6.0과 Comctl32.DLL version 5.0 이 둘은 side-by-side assembly cache에 있고 응용프로그램에 의해서 사용가능하다. 응용프로그램이 해당 DLL 을 적재하고자 할때, side-by-side manager는 manifest에 기술되어 있는 version dependence를 보고 어떤 DLL을 적재해야 하는지 판단한다. 만약에 관련된 manifest가 없을 경우 시스템은 assembly의 default version을 적재한다. Windows XP에선 Comctl32.DLL version 5.0이 시스템 기본값이다. 만약에 side-by-side manager가 manifest에서 version 6.0에 관한 의존성을 찾게된다면 version 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.

몇몇의 핵심 시스템 assembly들을 side-by-side assembly들로 사용가능하게 만들 수 있다. 자세한 정보는 Supported Microsoft Side-by-side Assemblies를 확인해 보라. 응용프로그램 개발자들은 자신만의 side-by-side assembly들을 만들 수 있다. 자세한 정보는 Guidelines for Creating Side-by-side Assemblies를 확인하삼. 많은 경우에 응용프로그램 코드를 수정하지 않고 응용프로그램에서 사용중인 side-by-side assembly들을 업데이트 하는 것이 가능하다.

Developers are encouraged to use side-by-side assemblies to create isolated applications, and to update existing applications into isolated applications for the following reasons:

  • Side-by-side assemblies reduce the possibility of DLL version conflicts.
  • Side-by-side assembly sharing enables multiple versions of COM or Windows assemblies to run at the same time.
  • Applications and administrators can update assembly configuration on either a global or per-application configuration on Windows Server 2003 basis after deployment. For example, an application can be updated to use a side-by-side assembly that includes an update without having to reinstall the application.

isolated applications을 만들기 위해 side-by-side assembly들의 사용을 개발자들에게 장려한다. 다음과 같은 이유들 때문에 기존 응용프로그램들을 isolated application으로 업데이트하기를 바란다.

  • Side-by-side assembly들은 DLL version간의 충돌 가능성을 감소시킨다.
  • Side-by-side assembly를 공유하는 것은 동시에 다양한 version의 COM 또는 Windows assembly들을 사용하게 하는것을 가능하게 한다. 
  • Applications and administrators can update assembly configuration on either a global or per-application configuration on Windows Server 2003 basis after deployment. For example, an application can be updated to use a side-by-side assembly that includes an update without having to reinstall the application.

'오래된 흔적 > Visual Studio.NET' 카테고리의 다른 글

Inno Setup  (0) 2009.11.26
Installer 이야기  (0) 2009.11.17
VC++ Debug Option  (0) 2009.09.22
Deployment (C++) - 배포관련  (0) 2009.09.10
도대체 MANIFEST 파일이 뭔가..????  (0) 2009.09.10