
닷넷(.NET) 이란?
C#이라는 언어를 공부하다 보면 자연스럽게 닷넷(.NET) 프레임워크라는 단어를 접하게 됩니다.
C#은 단독으로 동작하는 언어라기보다,
닷넷 프레임워크라는 실행 환경 위에서 동작하는 언어입니다.
위키(Wiki)에서는 닷넷 프레임워크를 아래와 같이 설명하고 있습니다.
닷넷 프레임워크(.NET Framework)는 마이크로소프트에서 개발한 윈도우 프로그램 개발 및 실행 환경이다.
네트워크 작업, 인터페이스 등의 많은 작업을 캡슐화하였고, 공용 언어 런타임(Common Language Runtime, CLR)이라는 이름의 가상 머신 위에서 동작한다.
참고 링크: 닷넷 프레임워크 위키
프로그래밍 언어와 개발 환경은 시간이 지나면서 계속 발전해왔습니다.
더 편리한 환경에서 다양한 프로그램을 제작할 수 있도록 기능이 추가되고 구조가 개선되었습니다.
아래 그림은 C++ 개발 환경이 점점 발전해온 과정을 보여주는 그림입니다.

[그림] C++ 언어 개발환경의 변화 과정
제일 왼쪽 구조는 가장 기본적인 개발 환경이라고 볼 수 있습니다.
운영체제(OS)에 맞는 코드를 직접 작성하고, 실행 파일을 직접 생성하는 방식입니다.
하지만 이런 방식은 개발자가 너무 많은 기능을 직접 구현해야 한다는 문제가 있습니다.
파일 처리, 메모리 관리, 네트워크, UI 같은 기능도 대부분 직접 만들어야 하기 때문입니다.
이후 개발 환경은 점점 발전하기 시작했습니다.
많이 사용하는 기능들을 라이브러리 형태로 기본 제공하고,
개발자가 이를 활용해서 프로그램을 만들 수 있도록 구조가 개선되었습니다.
하지만 멀티 플랫폼 환경에서는 여전히 어려움이 존재했습니다.
운영체제마다 프로그램을 별도로 제작해야 하는 경우가 많았기 때문입니다.
오른쪽 구조가 바로 닷넷(.NET) 프레임워크 기반 개발 환경입니다.
프로그래밍 환경이 발전하면서:
– 멀티 플랫폼 지원
– 네트워크 프로그램
– 다양한 운영체제 환경
같은 요구사항들이 점점 많아지기 시작했습니다.
이런 문제를 해결하기 위해 등장한 개발 환경이 바로 닷넷 프레임워크입니다.
닷넷에서는 개발자가 CLR(Common Language Runtime)이라는 가상 머신 위에서 동작하는 프로그램을 만들게 됩니다.
그리고 CLR이 지원되는 운영체제에서는 별도의 플랫폼 전용 프로그램을 다시 만들지 않아도 프로그램이 실행될 수 있도록 구성되어 있습니다.
닷넷 프레임워크는:
– Visual Basic
– C++
– C#
등 여러 언어를 지원합니다.
그중 가장 대표적인 언어가 바로 C#입니다.
아래 그림은 닷넷 프레임워크 구조를 간단히 나타낸 그림입니다.

[그림] 닷넷 프레임워크 구조
닷넷 프레임워크는 BCL(Base Class Library)을 포함합니다.
BCL은 개발에 자주 사용되는 다양한 기능들을 클래스 형태로 제공하는 라이브러리입니다.
예를 들어:
– 파일 처리
– 네트워크 처리
– 데이터베이스 접근
– 시스템 제어
같은 기능들이 포함되어 있습니다.
아래 그림은 BCL에 포함된 기능들을 예시로 보여주는 그림입니다.

[그림] Base Class Library에 포함된 기능 예
닷넷 환경에서는 이런 기능들이 이미 클래스 형태로 제공됩니다.
즉 개발자는 모든 기능을 처음부터 직접 구현하는 것이 아니라,
기존 클래스 라이브러리를 활용해서 프로그램을 제작할 수 있습니다.
아래 그림은 닷넷의 핵심 동작 구조를 보여주는 그림입니다.

[그림] 닷넷 프레임워크 동작
그림 가운데를 보면 Common Language Infrastructure(CLI)라는 부분이 보입니다.
이 부분이 닷넷 구조의 핵심이라고 볼 수 있습니다.
C#이나 Visual Basic 같은 언어로 작성된 프로그램은 바로 실행되는 것이 아닙니다.
먼저 CLI가 이해할 수 있는 중간 언어(Intermediate Language) 형태로 컴파일됩니다.
그리고 CLI가 이 중간 언어를 해석해서 실제 프로그램을 실행합니다.
즉, – 어떤 언어로 작성했는가?보다, CLI가 이해할 수 있는 형태로 변환되었는가?가 더 중요해지는 구조입니다.
그리고 이 CLI를 실제로 구현한 것이 바로 CLR(Common Language Runtime)입니다.
CLR에 대한 자세한 내용은 공식 문서에서도 확인할 수 있습니다.
넹