Blog | Tag | Local | Guest | Login | Write |  RSS
.NET과 .NET Framework
.NET Framework에 대한 포스팅을 앞으로 주욱 써나갈 생각입니다.
우선 .NET Framework란 무엇인지에 대해서 말하기 위해 가장 필요한 것 부터 정리해 나가겠습니다.


.NET Framework 란?

우선 Framework라 함은 프로그래밍을 해보신 분이라면 어디선가 한번씩은 들어본 단어일 것 입니다.
사전적 의미는 뼈대, 골격, 틀, 하부구조, 기반 이란 의미를 지닌 단어죠. 한번쯤 프로그래밍을 해본 사람들이라면
아무리 분야가 달라도 한번쯤 들어봤을 법한 MFC와 같은 것 역시 일반적으로 Framework라고 부르는 걸 보면
아마도 프로그래밍을 좀 더 편하게 하기위해 미리 만들어놓은 골격 구조나 기초 구조와 같은 것들을 의미하는 것이 아닐까요?

Microsoft에선 .NET Framework에 대한 정의를 다음과 같이 이야기 했습니다.

.NET Framework는 마이크로소프트 Windows운영체제 제품군의 중요한 새 구성요소로써 보다 쉽게 시스템을 구축 및 배포하고 다른 네트워크 연결 시스템과 통합할 수 있는 차세대 Windows 기반 응용 프로그램의 기초입니다

뭔가 매우 복잡한 말인듯 하지만 사실상 주요 키워드만 정리해본다면

1. Windows운영체제 제품군의 중요한 새 구성요소
   -> Window에 포함된 구성요소 (중요하다고 하니 앞으로 중요한 역할을 차지할 것이라 생각한 것이겠죠?)

2. 보다 쉽게 시스템을 구축 및 배포하고 
   -> 쉽게 시스템을 만들 수 있다.

3.
다른 네트워크 연결 시스템과 통합할 수 있는
   -> 이기종 시스템과의 통합을 위해 좀 더 나은 환경을 제공하겠다는 것이죠.

4. 차세대 Windows 기반 응용 프로그램의 기초입니다.
   -> 앞으론 응용 프로그램을 개발하기 위한 기반 환경(.NET)이 되겠다는 것이죠



즉 통합해서 한마디로 말하자면(물론 위의 첨부 내용도 한마디지만) .NET이라는 목표를 이루기 위해 실질적으로 돌아가는 Window기반의 응용프로그램을 개발하기 위한 기반이 되는 환경이라고 생각하시면 됩니다.

.NET?

물론 종종 일반적으로 개발자들이 .NET과 .NET Framework를 종종 동일한 의미로 사용해서 말하는 경우가 자주 있습니다. 사실 두가지는 틀린 이야기지만 의미론적으로 이해하고 다들 넘어가는게 대부분이라 딱히 구분할 필요가 없다고는 하지만 그래도 처음 시작이니 적어도 그 두가지 의미의 차이를 확실히 집고 넘어가기 위해 정리를 해본다면

.NET이란 XML기반의 웹 서비스를 통해 서로 다른 시스템을 통합하기 위한 제반 환경 및 기반(운영체제, .NET Framework, .NET언어, 통합 개발 환경등 모든 것이 포함된 기반)을 의미합니다.
.NET Framework란 이런 .NET의 목적을 실현 시키기 위해 필요한 기술(ASP.NET, Windows 응용 프로그램 구현 기술, 데이터 엑세스 기술 등등)을 함축한 실질적인 프로그램의 기반 또는 환경을 의미합니다.


.NET Framework의 구조

.NET Framework는 여러 부분으로 나뉘어 있지만 크게 보면 다음의 두부분으로 나뉘어져 있다고 할 수 있습니다.

 공용언어 런타임(Common Language Runtime)
 .NET Framework 클래스 라이브러리(.NET Framework Class Library)
공용 언어 런타임은 .NET Framework의 가장 하위에 있으며 .NET Framework클래스 라이브러리는 .NET Framework에서 공용언어 런타임을 제외한 나머지 요소들을 총체적으로 가리키는 것 입니다.

공용언어 런타임(Common Language Runtime, CLR)

  공용 언어 런타임은 우리가 .NET 언어로 코드를 작성할 때 일반적으로 신경써야 하는 부분들, 예를 들면 메모리 관리, 보안 관리, 오류 처리 등의 작업을 도와주어 프로그래밍을 단순화하는 역할을 할 뿐만 아니라 .NET Framework로 개발된 응용프로그램의 실행 환경을 제공합니다. 그래서 공용 언어 런타임을 코드 관리 환경이라고도 하며 코드 관리 환경에서 실행되는 코드를 관리 코드(Managed Code)라고 합니다.

.NET에서의 핵심이 .NET Framework라면 .NET Framework에서의 핵심은 바로 공용 언어 런타임입니다. 공용 언어 런타임은 .NET 언어의 내부 처리 프로세스와 관계가 깊으므로 .NET에서 PL(Programming Language)과 관련된 부분을 이야기하고자 한다면 이를 이야기 하는 것이라고 봐도 무방할 것입니다.

.NET Framework 클래스 라이브러리(.NET Framework Class Library)

.NET Framework 클래스 라이브러리는 개발자가 질 높은 응용 프로그램을 구현하거나 이미 개발된 응용 프로그램을 신속하게 확장할 수 있도록 도와주는 기능들을 미리 패키지화한 것을 말합니다. 여기에는 크게 네 가지 요소로 구성되어 있습니다.

1. ASP.NET(XML Web Service & Web Form)
2. Data and XML
3. Windows Forms
4. Base Class Library


1. ASP.NET은 웹 구현을 위해 사용되는 기능들을 미리 패키지화한 것이며 이것은 곧 하나의 웹 기술을 의미합니다. 물론, 여기에는 XML 웹 서비스 기술도 함께 포함되어 있습니다.

2.  Data and XML이라고 되어 있는 부분은 .NET을 통해 만들어진 응용 프로그램이 데이터 소스(데이터베이스 또는 기타 다른 정보 저장 공간)와 원활히 연결될 수 있도록 도와주는 기능들을 미리 패키지화한 것입니다(ADO.NET).

3. Windows Forms는 Windows응용프로그램 개발을 위해 사용되는 기능들을 미리 패키지화한 것입니다.

4. Base Class Library는 위에서 언급한 .NET Framework의 세 가지 구성 요소(ASP.NET, Windows Forms, Data and XML)와 .NET Framework에서 공통적으로 사용하는 기능들을 패키지화한 것입니다.



Reference Book : 뇌를 자극하는 ASP.NET 2.0 프로그래밍 - 이시환