본문 바로가기

Programming/.NET

[.NET] .NET 어셈블리(어셈블리의 종류)

어셈블리란 .NET 응용 프로그램의 구성 요소로 배포 단위, 버전, 보안 권한 등으로 구성된 exe 혹은 dll 파일을 말합니다.

어셈블리를 전역 어셈블리 캐시에 배포함으로써 기존 플랫폼에서 문제였던 병행 실행(Side by Side), 배포 시의 문제점과 개발자 입장에서 생각해야 하는 복잡함이 해결된 것입니다.

(병행 실행 - 서로 다른 버전을 사용 가능하게 함, 배포 시 문제점 - 레지스트리를 통한 버전 관리)

 

어셈블리의 분류

어셈블리는 사용 방법 혹은 배포 위치에 따라 공용 어셈블리와 전용 어셈블리로 분류하며 이러한 어셈블리를 구성하는 파일에 따라 단일 파일 어셈블리와 다중 파일 어셈블리로 나뉘게 됩니다. 

 

- 공용 어셈블리와 전용 어셈블리

공용 어셈블리는 CLR(공용 언어 런타임)이 설치된 모든 컴퓨터에 있는 전역 어셈블리 캐시라는 위치에 있으며, 개발자는 언제든지 전역 어셈블리 캐시에서 사용하자고 하는 어셈블리를 사용할 수 있습니다.

전역 어셈블리 캐시(GAC)

전용 어셈블리는 개발자가 지정하는 특정 위치에 있으며, 어셈블리를 추가한 프로그램에서만 사용할 수 있습니다. 이러한 전용 어셈블리를 사용하려면 당연히 해당 위치를 알아야 하며 프로그램 구성 시 해당 어셈블리를 참조해줘야 합니다.
하여 전용 어셈블리를 참조 어셈블리라고도 합니다(마이크로 소프트의 참조 문서에는 참조 어셈블리라고 명시되어 있습니다).
프로그램 개발시 일반적으로 참조 추가하여 사용하는 파일을 전용 어셈블리라 보시면 됩니다.

 

 - 단일 파일 어셈블리와 다중 파일 어셈블리

어셈블리를 구성하는 물리적인 파일이 몇 개인가에 따라서 단일 파일 어셈블리 또 다중 파일 어셈블리이라합니다.

 

단일 파일 어셈블리 파일은 한개의 물리적인 파일로 구성된 어셈블리입니다
어셈블리에 대한 구조는 다음글에 좀 더 자세히 적을 계획이지만, 간단한 구조는 매니페스트,  형식 메타데이터, msil(cil)과 리소스로 구성되어 있습니다. 

 

다중 파일 어셈블리는 여러개의 파일이 논리적으로 묶여 구성된 어셈블리를 말합니다.
구조를 보면 한개의 메인 모듈과 각각의 기능을 가지는 서브 모듈을 가지고 있습니다.
또한 메인 모듈의 구조는 단일 파일 어셈블리와 동일하지만 서브 모듈에는 매니페스트가 없습니다.

메인 모듈의 매니페스트에는 이 어셈블리를 구성하는 서브 모듈에 대해 참조하고 있습니다. 이렇게 메인 모듈의 매니페스트에 있는 서브 모듈의 참조 정보로 메인 모듈과 서브 모듈이 논리적으로 묶이게 됩니다.  다중 파일 어셈블리는 여러 개의 파일을 논리적으로 묶어서 구성한 것입니다.

다중 파일 어셈블리는

1. 서로 다른 언어로 제작한 모듈을 결합하여 사용하려는 경우

2. 대규모 프로젝트 개발 시 여러 개발자가 생성한 각 모듈을 하나의 어셈블리로 통합하려는 경우

이렇게 두가지가 가장 큰 이유라고 할 수 있습니다.

 

여기까지 어셈블리의 분류인 공용과 전용, 단일 파일과 다중 파일 어셈블리에 대해서 간략하게 알아봤습니다.

참조: https://docs.microsoft.com/ko-kr/dotnet/standard/assembly/

'Programming > .NET' 카테고리의 다른 글

[.NET] .NET 리플렉션  (0) 2020.01.14
[.NET] .NET 어셈블리(어셈블리의 구성)  (0) 2020.01.11
[.NET] 강력한 이름  (0) 2020.01.07
[.NET] CLR, CTS와 CLS  (0) 2020.01.06
[.NET] .NET이란  (0) 2020.01.05