Tech & IT/프로그래밍

.NET Framework에서 CLR, MSIL, Shared/private Assembly 와 Manifest

해피콧 2009. 1. 9. 16:59
'); }
'); }
프로그램이 실행되는 모습
CLR(The Common Language Runtime)는 MSIL(Intermediate Language)를 실행함
Code는 MSIL로 compile됩

자바의 JRE와 class를 생각하면 될 것 같음

* assembly : 어떤 기능을 하는 하나의 모듈을 의미
* manifest : assembly가 동작하는 데 어떤 파일이 필요한 지 가지는 목록
* program : 하나 혹은 여러개의 assembly로 구성

* CLR은 assembly로부터 그것이 어떤 보안/권한 범위를 가지는지, 사용버전은 어디서부터 어디까지인지를 보고 실행하게 됨

* DLL지옥의 관점에서 Private Assembly, Shared Assembly
   http://hoons.kr/Board.aspx?Name=cshaptip&Mode=2&BoardIdx=406&Key=&Value=

어셈블리는 DLL 지옥을 해결하였다는데…
앞에서 언급했듯이 직접 작성한 대부분의 어셈블리는 private이다. 그러므로 각 어플리케이션은 자체적으로 설치된 폴더에 있는 어셈블리를 참조한다. Private형식에서는 같은 이름의 여러버전이 있다하더라도 충돌을 피할 수 있다.

이해를 돕기위해 한가지 예를 들어본다.
1. Assembly1이라는 이름의 어셈블리를 제작한다.
2. Assembly1을 이용하는 Client1이라는 어플리케이션을 만든다.
3. 클라이언트 프로그램을 c:\MyApp1이라는 폴더에 설치하고, Assembly1도 이 폴더에 설치한다.
4. 며칠이 지난 후에 Assembly1이 수정이 되었다고 가정한다.
5. 수정된 Assembly1을 이용한 클라이언트 어플리케이션(Client2)를 제작한다.
6. 이 클라이언트 프로그램을 c:\MyApp2라는 폴더에 설치하고 Assembly1도 이 폴더에 설치한다.
7. 각각의 프로그램은 같은 이름의 Assembly1이라는 어셈블리를 사용하고 있지만, 버전은 서로 다른 것

* 데브피아에서 퍼옴 왕성현 님의 강좌입니다.


*private assembly를 shared assembly로 만드는 과정