본문 바로가기
Unity 게임 개발/Unity Assembly Definition

Unity 공부 - Assembly Definition 1 - Assembly란?

by daisy0461 2022. 9. 1.

Assembly Definition을 공부하기 위해 Assembly라는 것을 공부해야할 필요성을 느꼈다.

 

Assembly Definition이란 Code를 Assembly로 그룹화한다. 라는게 첫 문장이었다.

근데 여기서 Assembly Definition도 모르고 Assembly도 몰라서 도대체 이 문장이 무슨 의미인지 모르겠어서

Assembly라는 것을 먼저 공부하게 되었다.

 

https://docs.unity3d.com/kr/2022.1/Manual/ScriptCompilationAssemblyDefinitionFiles.html

 

어셈블리 정의 - Unity 매뉴얼

어셈블리 정의 및 어셈블리 레퍼런스는 스크립트를 어셈블리로 구성할 수 있는 에셋입니다.

docs.unity3d.com

위 링크에서 초반에 살펴보면 이런 글이 있다.

C#의 어셈블리에 대한 일반적인 정보는 .NET의 어셈블리를 참조하십시오.

 

Assemblies in .NET

Assemblies are fundamental units of deployment, version control, reuse, activation scoping, and security permissions for .NET-based applications.

docs.microsoft.com

그래서 그냥 Assembly가 아닌 위 링크를 통해 .Net Assembly를 살펴보게 되었다.

 

 

Assembly란?

Assembly란 .Net 기반 응용 프로그램에 대한 배포, 버전 제어, 재사용, 활성화 범위 및 보안 권한의 기본 단위를 형성한다.

Assembly는 함께 작동하고 논리적 기능 단위를 형성하도록 빌드된 형식 및 리소스의 모음입니다.

 

어떻게 보면 위 문장이 핵심이 될 것 같습니다.

결국 쉽게 말하면 Assembly는 함께 작동하는 애들을 모은 빌드된 형식 및 리소스라는 의미입니다.

 

Assembly는 실행파일(.exe) 또는 동적 링크 라이브러리(.dll)의 파일 형태를 취하며 Assembly는 .Net 애플리케이션의 빌딩블록입니다.

더보기

빌딩 블록이란 어떤 프로그램(A)이 작동하려면 exe뿐만 아니라 각종 dll 파일이 필요한데  A를 작동시키기 위한 모든 것을(.exe와 .dll포함) 빌딩블록이라 합니다.

 

.Net 및 .Net Framework에서는 하나 이상의 소스 코드 파일에서 Assembly를 빌드할 수 있습니다.

(즉, 하나 이상의 코드는 Assembly형태(.exe or .dll)로 만들 수 있다는 말입니다.)

그리고 .Net Framework에서 어셈블리는 하나 이상의 모듈을 포함할 수 있습니다.

이를 통해 여러 개발자가 단일 어셈블리를 만들기 위해 결합된 별도의 소스 코드 파일 또는 모듈에서 작업할 수 있도록 더 큰 프로젝트를 계획할 수 있습니다.

 

여기서 모듈의 특징에 대해 설명하자면

1. 한가지 일만 수행    2. 간단 명료    3. 단순성   4. 독립성이다.

그리고 모듈화는 모듈의 기능적인 분리(한가지 일만 수행, 단순성 독립성)를 통해 프로그램을 개발할 때 유지보수와 코드 재사용성을 높여준다.

모듈화의 장점은

1. 프로그램의 효율적인 관리 및 성능 향상

2. 전체적인 소프트웨어 이해의 용이성 증대 및 복잡성 감소

3. 기능의 분리가 가능, 인터페이스 단순

4. 오류 범위 최소화이다.

 

그렇다면 여러 개발자가 Assembly를 사용하면 분리된 기능을 만들기 때문에 모듈화의 장점을 가지게 되면서 더 큰 프로젝트를 계획할 수 있다는 의미가 됩니다.

 

Assembly 속성

  • Assembly는 .exe또는 .dll파일로 구현됩니다.
  • .NET Framework를 대상으로 하는 라이브러리의 경우 GAC(전역 어셈블리 캐시) 에 배치하여 애플리케이션 간에 어셈블리를 공유할 수 있습니다 . 어셈블리를 GAC에 포함하려면 먼저 강력한 이름의 어셈블리를 지정해야 합니다. 자세한 내용은 강력한 이름의 어셈블리 를 참조하십시오 .
  • 어셈블리는 필요한 경우에만 메모리에 로드됩니다. 사용되지 않으면 로드되지 않습니다. 즉, 어셈블리는 대규모 프로젝트에서 리소스를 효율적으로 관리할 수 있습니다.

 

이제 첫문장인

Assembly Definition이란 Code를 Assembly로 그룹화한다. 라는 글을 쉽게 이해할 수 있습니다.

Assembly Definition이란 함께 작동하는 것끼리 모듈화해서 그룹화한다. 라고 이해하면 됩니다.