닷넷 프레임워크(.NET Framework, 이전 이름: 닷넷) 마이크로소프트에서 개발한 윈도우 프로그램 개발 및 실행 환경이다. 네트워크 작업, 인터페이스 등의 많은 작업을 캡슐화하였고, 공통 언어 런타임(Common Language Runtime)(CLR)이라는 이름의 가상 머신 위에서 작동한다.

 

쉽게 말하면 프로그램이 돌아가도록 지원해주는 뼈대 역할을 해 주는 것 이라고 보면 됩니다. 소프트웨어 프레임워크는 복잡한 문제를 해결하거나 서술하는데 사용되는 기본 개념 구조입니다. 뼈대, 골조, 프레임워크 라고 한다.

 

닷넷프레임워크는 빌드, 배포, 웹서비스, 웹어플리케이션 등이 동작하게 하는 공통 환경입니다. 그리고 BCL(Base Class Library)를 포함하고 있는데, 이 클래스 라이브러리는 파일을 제어 하거나 데이터베이스에 접근하거나 네트워크를 제어 할수 있는 기능이 포함되어 있습니다.

, 윈폼, 데이터, XML 등 다양한 라이브러리들이 존재 합니다. 이러한 기능들이 닷넷 프레임워크에 새롭게 나타난게 아니라 기존 Win32 API 들을 닷넷에 맞게 재구성 했다고 보시면 됩니다. 닷넷 이전에도 DB 관련 프로그램을 VBC++ 로 만들었죠. C++MFC도 어떻게 보면 BCL이라고도 할수 있겠네요.

 

대부분의 기능들이 이미 클래스로 만들어져 있어서 개발자는 해당 클래스 라이브러리를 사용하면 되는것입니다. 간편하죠? 하지만 좀 다른 UI나 기능을 구현하려면 직접 구현을 해야 하는데 보통 3rd Party 제품을 많이 사용하죠. 실제로 개발자가 자료구조와 알고리즘을 직접 만들어서 개발하는 경우는 드뭅니다. JAVA도 마찬가지 입니다. 대부분 클래스를 가져다 쓰지요, 하지만 닷넷 프레임워크보다 추상클래스가 많아서 직접 구현해야 하는 경우가 많습니다.

 

닷넷 프레임워크의 구조

.NET 프레임워크의 가장 중요한 콤포넌트는 공통 언어 기반(Common Language Infrastructure)이다. 다른 말로 CLI라고 한다. CLI를 둔 목적은 애플리케이션의 개발과 실행 시 언어에 종속적이지 않은 플랫폼을 제공하기 위해서이다. 예외 처리, 가비지 콜렉션, 보안, 호환 등을 위한 소프트웨어 콤포넌트를 포함한다. 마이크로소프트가 구현한 CLI를 일컬어, 공통 언어 런타임(Common Language Runtime, CLR)이라고 한다.



어셈블리

중간 언어인 MSIL 코드는 닷넷 어셈블리에 저장된다. 닷넷 어셈블리는 윈도우 구현에서는 포터블 익스큐터블(PE) 파일이 된다. (EXE 혹은 DLL파일이다.) 닷넷 어셈블리는 소프트웨어 배포 및 판 높임, 보안 등에 있어서 .NET 유니트 역할을 한다. 어셈블리는 파일 한 개 이상 여러 개의 파일로 구성되는데, 파일들 중 한 개 파일은 매니페스트를 꼭 포함해야 한다. 어셈블리의 완전한 이름은 간단한 텍스트 이름 및 판(버전) 번호, 컬처, 공개 키 암호 방식(public key) 토큰 등을 가지고 있다; 이 중 이름은 꼭 가지고 있어야 하지만, 나머지는 없어도 된다. 공개 열쇠 암호 토큰은 어셈블리가 작성될 때 생성된다. 이 토큰은 어셈블리의 이름과 어셈블리 파일들의 내용을 대표하는 고유의 값이다. 비밀 열쇠 암호는 어셈블리의 작성자에게만 알려진다. 같은 공개 열쇠 암호 토큰을 갖고 있는 두 개의 어셈블리는 같은 어셈블리라는 사실이 보장된다. 어셈블리가 해커 등에 의해 함부로 변경되면, 공개 열쇠 암호를 이용하여 어셈블리가 변경되었는지를 감지해낼 수 있다.

 

메타데이터

모든 공통 중간 언어(CIL)는 닷넷 메타데이터를 통해 "스스로 기술""된다. CLR은 적절한 메소드가 불리는지를 보장하기 위해 메타데이터를 검사한다. 메타데이터는 보통 랭귀지 컴파일러에 의해 생성된다. 하지만 개발자 자신이 커스텀 애트리뷰트를 사용하여 자신만의 메타데이터를 작성할 수도 있다. 또한 메터데이터는 어셈블리에 대한 모든 정보를 담고 있다.

 

베이스 클래스 라이브러리 (BCL)

베이스 클래스 라이브러리(BCL).NET 프레임워크를 사용하는 모든 언어가 사용할 수 있는 클래스들의 라이브러리이다. 흔히 프레임워크 클래스 라이브러리(Framework Class Library) (FCL)이라고 잘못 불린다. (이것은 Microsoft.* 네임스페이스를 포함하는 BCL보다 큰 집합이다.) 파일 읽기나 쓰기, 그래픽 렌더링, 데이터베이스 조작, XML 조작 등과 같은 공통된 기능을 해주는 클래스들을 제공한다. BCL은 명명할 때 계층 구조를 구분하기 위해 점(.)으로 명명한다. 예를 들면 수학적 계산을 하기 위해 만들어진 이름 공간인 Math 이름 공간은 System.Math로 명명된다

 

 

 



http://dotnetpower.tistory.com/101

https://ko.wikipedia.org/wiki/%EB%8B%B7%EB%84%B7_%ED%94%84%EB%A0%88%EC%9E%84%EC%9B%8C%ED%81%AC

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

winform 파일 쓰기  (0) 2017.08.05
openFileDialog를 이용하여 파일읽기  (0) 2017.08.05
WinForm과 WPF  (0) 2017.07.02
윈폼(WinForm 의 구성요소, 생성코드)  (0) 2017.07.02
DLL 파일  (0) 2017.07.02

+ Recent posts