본문으로 바로가기

[C#] .NET 용어 요약 #2

category Program/C# 2019. 1. 29. 11:44

 .NET 용어 요약 #2


공용 타입 시스템(CTS: Common Type System)

닷넷 호환 언어가 지켜야할 타입(Type)의 표준 규격을 정의한 것이 공용 타입 시스템이다. 만약 새로운 언어를 만들어 닷넷 프레임워크 상에서 실행하고자 한다면 CTS 규약을 만족하는 한도 내에서만 구현할 수 있다. 예를 들어 CTS 에서는 클래스 상속을 하나만 받을 수 있도록 정의하고 있다. (다중상속 불가) 따라서 직접 닷넷 호환 언어를 만든다면 클래스의 다중 상속을 지원하도록 만들 수 없다. 


공용 언어 사양(CLS: Common Language Specification)

닷넷 호환 언어가 지켜야 할 최소한의 언어 사양을 정의한 것이 공용 언어 사양이다. 직접 닷넷 호환 언어를 만들고 싶다면 CTS 전체를 구현해야 할 필요는 없지만 적어도 CLS에 명시된 사양만큼은 완벽하게 구현해야 한다.

CLS는 두 가지 측면에서 의미가 있다. 하나는 모든 닷넷 호환 언어가 CLS에서 정의한 사양만큼은 구현해야 한다는 것이고, 다른 하나는 닷넷 호환 언어끼리 호출해야 하는 경우에는 그 기능에 한해서 CLS를 만족시키도록 작성해야 한다는 것이다.


CLS, CTS와 닷넷 호환 언어의 관계를 다이어그램으로 정리하면 다음과 같다.

(그림: 책첨부파일 이미지 참조)





메타데이터(Metadata)

일반적인 정의로는 데이터를 위한 데이터를 메타데이터라고 한다. 프로그래밍 언어에서는 개발자가 구현한 코드가 데이터, 해당 코드의 성격을 설명해 주는 별도의 데이터를 메타데이터라고 한다.

CLR에서 동작하는 실행 파일은 완전하게 자기 서술적인(self-descriptive) 메타데이터를 제공하며, 외부에서는 이런 정보를 리플렉션(Reflection)이라는 기술을 통해 사용할 수 있다.


공용 언어 기반 구조(CLI: Common Language Infrastructure)

마이크로소프트에서 ECMA 표준으로 제출한 공개 규약이다. CLI는 CTS명세를 포함하며, 중간 언어에 대한 코드 정의, 메타데이터와 그것을 포함하는 이진파일의 구조까지 표준 사양으로 기술하고 있다. 자바의 VM을 IBM과 오라클에서 구현한 것처럼, 공개된 CLI 사양은 누구나 가져가서 임의로 구현할 수 있다.


CLI와 CLR의 관계(그림)

(그림: 책첨부파일 이미지 참조)









ref : (책) 시작하세요! C# 7.1 프로그래밍 기본 문법부터 실전 예제까지 내용 참조

'Program > C#' 카테고리의 다른 글

[C#] Object  (0) 2019.01.30
[C#] 정적 메서드~as, is 연산자  (0) 2019.01.30
[C#] .NET 용어 요약  (0) 2019.01.28
[C#] 람다식(Lamdba Expressions)  (0) 2019.01.25
[C#] 델리게이트(Delegate)  (1) 2019.01.25