삽질의 현장/- .NET

#003_닷넷(.NET)_.Net Framework 기본 - 어셈블리

shovelman 2015. 10. 21. 21:50


안녕하세요 삽잡이입니다.


이번 시간에는 어셈블리에 대해서 알아보겠습니다.



모든 .NET 지원 컴파일러는 

CIL 명령어와 메타데이터가 포함되어있는 어셈블리를 생성합니다.


이 어셈블리(.exe, .dll)은 네가지로 구분을 할 수 있습니다.

대부분은 CIL 코드이고, 어셈블리 메타 데이터, 형식 메타 데이터

그리고... 있어도 없어도 그만인... 선택적인 리소스가 있습니다.



어셈블리 메타 데이터의 또 다른 이름은 메니페스트입니다.

어떤 곳을 가던지 메니페스트를 들으면 '전체적인 정보'를 뜻합니다.

즉, 내용물에 대한 설명 요약을 말하는 것입니다.

실제로 'IL DASM' 과 같은 도구를 사용해보면 manifest

즉, 어셈블리 메타데이터안에 어셈블리에 관한 모든 정보가 들어가있는 것을 확인하실 수 있습니다.


실제 어셈블리 메타데이터를 디스 어셈블리한 내용의 일부를 보여드립니다.




메타 데이터도 마찬가지입니다...

'정보의 정보'라고 부르는데, 이를 '데이터의 데이터'라고도 부릅니다...

말장난일까요...


이미지를 예로 들어보도록 하겠습니다.

이미지 중에서도 픽셀(jpg...), 벡터(flash)의 이미지가 있습니다...

그런데 벡터 이미지를 또 다른 말로 메타 이미지라고 부른다는 사실을 아십니까?


픽셀이라는 것은 위치, value 값을 가지고 있는 집합으로 이루어져있습니다.

그리고 이를 픽셀 이미지라고 부르지요...

그런데 벡터는 '원점은 10,10이고', '지름은 10이고', '색상은 초록색' 등등의 정보만을 가지고 있습니다.

화면에 그릴 때 정보를 가지고 그릴 뿐이지요...

이처럼 정보를 가지고 있는 또 다른 정보라는 의미에서 메타 이미지라고 부르지요...


아무튼...

형식 메타 데이터는 형식에 대한 모든 정보를 가지고 있는 데이터라고 말할 수 있습니다.

CIL에서 사용하는 형식에 대한 정보들이 들어있는 정보이지요...


정말 형식의 완벽한 정보입니다.

manifest와 같이 IL DASM 도구를 사용해서 일부를 보여드리도록 하겠습니다.



정말 어셈블리에 사용되는 형식의 정보를 담고 있습니다.


음 우선 기준을 잡아보자면...

어셈블리 데이터는 지금은 그냥 .exe, .dll들을 어셈블리라고 한다고 알아두겠습니다...

참고로 어셈블리는 논리적인 단위이고, 실제로 물리적인 단위는 .Net Binary라고 부릅니다...


다시...

어셈블리 메타데이터는 어셈블리에 대해 설명하는 것입니다...

그리고 네가지로 이루어져있지요...


이 메니페스트, 메타데이터, CIL은 무조건 있어야합니다.

CIL은 이전 시간에 설명했으니 생략하도록 하겠습니다...


이번 시간은 여기까지 하도록 하겠습니다.


이상 삽잡이였습니다!