크리에이티브 커먼즈 라이선스
Creative Commons License

닷넷은 플랫폼 독립성과 언어 독립성을 확보하기 위해 다음과 같은 여러가지 장치들을 제공한다. 대부분 Common으로 시작하는데 그만큼 닷넷이 공용성과 일반성에 역점을 두었다는 뜻이다.

@CLR(Common Language Runtime)
- 닷넷 실행 엔진을 의미한다. 자바의 가상 머신(JVM)과 개념적으로 동일하다. 런터임이란 프로그램이 실행되기 위한 핵심 모듈들의 집합이다. CLR은 닷넷 프로그램 실행에 필수적인 런타임들의 집합이되 이름이 의미하듯이 모든 언어에 공용으로 사용된다. 어떤 언어로 만든 프로그램이든지 IL을 JIT로 컴파일 한후 CLR과 연결되므로 제작 언어에 상관없이 CLR의 서비스를 받을 수 있다. 닷넷 응용프로그램은 운영체제와 직접 통신하지 않으며 반드시 CLR을 거쳐야 한다. CLR은 물론 플랫폼별로 따로 제공된다. CLR이 호스트 운영체제와의 통신을 책임지므로 응용 프로그램은 운영체제에 대해서 독립적이다. 응용프로그램은 호스트 운영체제는 거의 신경 쓸 필요가 없고 오로지 CLR과의 약속만 잘 지키면 된다.

@CTS(Common Type System)
- CTS는 모든 닷넷 언어들이 공동으로 사용하는 타입 체계를 정의한다. 언어끼리 함수를 호출하려면 인수나 리턴값에 대해 서로의 타입을 알 수 있어야 한다. 예를 들어, C++에서 int형의 값을 넘기면 VB에서는 Integer 타입으로 이 값을 받아 들일 것이다. 이때 int와 Integer는 같은 타입이라는 것을 두 언어가 모두 알고 있어야 하며 물리적인 포맷이 같아야 한다. CTS는 닷넷 지원 언어들이 공동으로 사용하는 타입에 대한 약속이며, IL에서 사용 가능한 타입들의 집합이다. CTS에는 정수, 실수 같은 기본형뿐만 아니라 클래스, 배열 같은 좀 더 복잡한 타입까지 계층이 잘 정의되어 있다.

@CLS(Common Language Specification)
- 각각의 언어들은 다른 언어와 구분되는 아주 고유한 특성들을 가지기도 한다. 예를 들어 명칭의 대소문자를 구분하는가, 다중 상속은 지원하는가, 연산자 오버로딩은 가능한가 등은 언어마다 다르다. 이렇게 언어마다 특성이 각각 다르면 언어 상호 운용이 아주 어려워진다. 그래서 닷넷은 언어들이 지켜야 하는 최소한의 사양을 정의하는데 이를 CLS라 한다. CLS는 닷넷용 언어가 되기 위한 최소한의 규정이다.

@BCL
- 닷넷에는 여러 가지 복잡한 기능을 제공하는 바대한 기본 클래스 라이브러리(BCL)이 탑재되어 있다. 닷넷은 플랫포이면서 라이브러리라고 할 수 있는데 사실 플랫폼은 응용 프로그램 제작을 위한 라이브러리를 포함할 수밖에 없다. 플랫폼이 라이브러리를 제공하지 않으면 응용프로그램 개발자들이 해야 할 일들이 너무 많아지기 때문이다. 마치 윈도우즈가 방대한 Win32 API를 제공하는 것처럼 닷넷도 같은 개념의 BCL을 제공한다. BCL은 마이크로소프트가 미리 작성하여 제공하는 잘 정리된 클래스들의 거대한 집합이다. 제공되는 클래스드릐 규모가 엄청날 뿐만 아니라 객체 지향적이고 문서화도 잘 되어 있어서 잡스러운 처리들의 대부분은 BCL을 호출하기만 하면 된다.

BCL에 포함된 클래스의 목록과 기능
- 기본 타입에 대한 정보 제공
- 배열, 연결 리스트, 큐 등의 컬렉션 클래스
- 그래픽 라이브러리(GDI+)
- 스레드와 동기화 클래스
- 각종 컨트롤
- 파일 입출력
- 네트워크와 인터넷 프로그래밍
- 데이터베이스 액세스
응용 프로그램 제작에 필요한 기능들의 대부분이 BCL에 이미 구현되어 있으므로 공짜로 쓸 수 있는 기능들이 아주 많다. 더구나 BCL은 언어 차원이 아니라 닷넷 플랫폼 차원에서 제공하는 라이브러리이므로 모든 언어들이 공유할 수 있다는 면에서 더 매력적이다.
저작자 표시
신고

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

[C# : 배열의 메서드]  (0) 2010.07.25
[C# : 콘솔의 여러가지 기능]  (0) 2010.07.25
[.NET : 닷넷의 네임스페이스]  (0) 2010.07.25
[.NET : 닷넷의 장점]  (0) 2010.07.25
[.NET : 닷넷의 구성요소]  (0) 2010.07.25
[.NET: 닷넷의 구조]  (0) 2010.07.25
Trackback 0 | Comment 0

강군v's Blog is powered by Daum & tistory

 

티스토리 툴바