10. .NET 어셈블리
.NET 어셈블리는 .NET 프레임워크 응용 프로그램을 구성하는 기본 컴포넌트입니다. 컴포넌트 기반의 프로그래밍은 모듈의 재사용성을 높여줍니다. .NET 응용 프로그램을 제작할 때 미리 작성된 라이브러리를 사용할 수 있는데 이 때 사용하는 라이브러리도 .NET 어셈블리이며 실행 파일도 .NET 어셈블리입니다.
.NET 어셈블리는 EXE 파일 혹은 DLL 파일 형태로 만들 수 있으며 하나 이상의 모듈을 포함할 수도 있습니다. 그리고 .NET 어셈블리는 배포를 단순화하여 COM에서 발생했던 많은 배포 문제를 해결하였습니다.
.NET 어셈블리는 자기 기술적인 메타 데이터를 갖고 있고 레지스트리 항목에 종속되지 않는 구성 요소로 디자인되어 있기 때문에 병행(Side by Side) 실행이 가능합니다. COM에서는 버전 관리 문제를 비롯하여 DLL 충돌 문제가 있었지만 .NET 어셈블리는 강력한 이름을 사용하여 DLL 충돌 문제를 해결하였습니다.
이로써 같은 명칭의 여러 어셈블리를 설치 가능할 뿐만 아니라 이를 사용하는 응용들은 자신들에 맞는 어셈블리를 사용할 수 있습니다. .NET 어셈블리를 배포하는 방법에는 응용 프로그램의 전용으로 배포하는 방법과 여러 응용 프로그램이 공용으로 사용할 수 있게 공용으로 배포하는 방법이 있습니다.
10.1 .NET 어셈블리 구성 요소
.NET 어셈블리는 여러 종류의 구성 요소로 구성됩니다.
첫 번째 구성 요소로 어셈블리 매니페스트가 있습니다. 어셈블리 매니페스트는 어셈블리의 버전 요구 사항과 보안 ID를 지정하는 데 필요한 모든 메타데이터와 어셈블리의 범위를 정의하고 참조를 확인하는 데 필요한 모든 메타 데이터를 포함하고 있습니다. 어셈블리 매니페스트는 어셈블리 이름, 버전 번호, 문화권, 강력한 이름의 정보, 어셈블리에 포함된 파일 목록, 형식 참조 정보로 구성됩니다.
그리고 어셈블리에 정의된 형식들에 대한 형식 메타 데이터와 실제 수행해야 할 코드인 MSIL과 리소스로 구성됩니다.
어셈블리는 하나의 물리적 바이너리로 되어 있는 단일 파일 어셈블리와 여러 개의 물리적 바이너리로 되어 있는 다중 파일 어셈블리로 나눌 수 있습니다. .NET에서는 어셈블리의 부속이 될 수 있는 모듈을 만들 수 있게 제공하고 있는데 모듈은 어셈블리에 포함됩니다. 즉, 하나의 어셈블리가 다른 어셈블리에 있는 형식을 사용하기 위해서는 단순히 사용할 어셈블리를 참조만 하면 되는데 모듈에 있는 것을 사용할 때는 모듈을 포함하여 어셈블리를 만들어야 합니다.
그리고 .NET 어셈블리를 구성하는 물리적 바이너리에는 리소스 파일, 매니페이스, DLL, 모듈 등이 있습니다.
너와 나의 연결고리 "공감"
'언어 자료구조 알고리즘 > Escort C#' 카테고리의 다른 글
[C#] 10. .NET 어셈블리 - 모듈 작성 (0) | 2016.05.03 |
---|---|
[C#] 10. .NET 어셈블리 - XML 문서 파일 (0) | 2016.05.03 |
[C#] 10. .NET 어셈블리 - 공용 어셈블리 (0) | 2016.05.03 |
[C#] 10. .NET 어셈블리 - 전용 어셈블리 (0) | 2016.05.03 |
[C#] 10. .NET 어셈블리 - 어셈블리 만들기 (0) | 2016.05.03 |
[C#] 9. 대리자와 이벤트 - 이벤트 (0) | 2016.05.03 |
[C#] 9. 대리자와 이벤트 - 대리자 (0) | 2016.05.03 |
[C#] 8.2 컬렉션 - IComparable 인터페이스와 IComparer 인터페이스 (0) | 2016.05.03 |
[C#] 8.2 컬렉션 - IDictionary 인터페이스 (0) | 2016.05.03 |
[C#] 8.2 컬렉션 - IList 인터페이스 (0) | 2016.05.03 |