Blog | Tag | Local | Guest | Login | Write |  RSS
CLR, FCL

 

앞서서 이야기한 CLR(Common Language Runtime:공용언어런타임)과 .NET Framework Class Library 이 두가지가 프레임워크의 크게 2가지로 나뉘어진 부분이라 언급했는데 좀 더 자세한 설명을 추가하고 이야기를 하고자 합니다.

CLR

CLR은 코드 관리환경이며 여기서 실행되는 코드를 관리코드(Managed Code)라고 하였는데 이들은 CIL(Common Intermediate Language)라고 하는 중간언어로 구성되어있다. 일반적인 언어는 그 언어의 컴파일러를 통해 각 플랫폼에서 실행가능한 코드(Native Code)로 전환되는데, .NET Framework의 경우는 Managed Code에서 CIL로 변환되고 최종적으로 플랫폼에서 실행가능한 코드(Native Code)로 전환된다.

이러한 부분을 보았을 때 기존의 언어들로 이루어진 코드와 컴파일러를 통해 만들어진 프로그램에 비해 하나의 과정이 추가되어 있기 때문에 시간이 더 걸릴 것이라는 의구심을 가질 수 있다. (물론 사용해보면 알지만 역시 느리긴하다 -_-;) 때문에 MS의 개발자들은 JIT컴파일러의 최적화에 많은 시간을 할애 하였기에 최종 실행시간은 기존의 방법과 거의 동일하다는 결론을 내릴 수 있도록 되었다. (일반적인 인터프리터 코드처럼 느리지 않다)

.NET Code의 커다란 장점은 관리 코드를 만든다는 것이다.
몇가지 관리 코드의 잘 알려진 장점을 살펴본다면

Memory Leak(메모리 누수)가 발생될 수 있는 부분의 원천봉쇄 (예: 포인터 사용금지)
관리 스택, 관리 힙의 사용(불필요한 메모리 공간 사용이 없음)
보안에 대한 부분의 고려
메모리 공간의 자동적 관리기능(Garbage Collector)
등등등~

이런 것들이 주욱 있다 이는 개략적으로만 알아두고 후에 코드를 통한 구현을 하면서 느끼는 것이 낫다고 생각하여 여기까지만 적어둔다.
잠시 이야기가 샜지만; CLR과 관련된 개념은 개략적으로 여기까지이다. 앞에서 말했던 나머지 하나인 .NET Framework Class Library에 대해서 알아보자

.NET Framework Class Library

.NET Framework Class Library는 앞에서 이야기 한 부분을 다시보면
네 가지 요소로 구성되어 있습니다.

FCL에 들어있는 몇가지 네임스페이스를 훑어보고 이번 포스팅을 마무리 하도록 하겠습니다.


 네임스페이스  내용 
 System  핵심 데이터 타입과 보조 클래스가 존재 
 System.Collection  Hash테이블, 크기조절이 가능한 배열, 그 외의 데이터 저장소 
 System.Data 이하  ADO.NET을 이용한 데이터 접근 클래스들
 System.Drawing  그래픽 처리를 위한 클래스들(GDI+) 
 System.IO  File과 stream I/O 처리를 위한 클래스들
 System.Net  HTTP등의 네트워크 프로토콜을 캡슐화한 클래스들 
 System.Reflection 이하  메타데이터를 조작하기 위한 클래스들 
 System.Runtime.Remoting 이하  분산 프로그램을 지원하는 클래스들
 System.ServiceProcess  Windows 서비스를 지원하는 클래스들
 System.Threading  관리 스레드를 생성하는 클래스들
 System.Web  HTTP를 지원하는 클래스들
 System.Web.Services  웹 서비스를 지원하는 클래스들
 System.Web.Services.Protocols  웹 서비스 클라이언트를 지원하는 클래스들
 System.Web.UI  ASP.NET의 핵심 클래스들
 System.Web.UI.WebControls  ASP.NET 서버 컨트롤 클래스들
 System.Windows.Forms  GUI프로그래밍을 위한 클래스들
 System.Xml 이하  XML을 조작하기 위한 클래스들

코드가 안나오니까 지루하네요 다음 주 부턴 코드가 슬슬 나오는 포스팅을 시작하도록 하겠습니다~

Reference Book : Programming Microsoft .NET 정보문화사


p . s >
아..그리고 하나 시작할 때 목적을 빼먹었는데...
이 포스팅을 보면 다른 책 안보고 이해와 코드를 짤 수 있도록 하는 것이 목적입니다. (꿈이 크네...)
HW만 전문적으로 하시는 분이나 이런 부분은 프로그래머가 아니면 모르는 부분이다 알려달라 하시는 분이 있으면 이미 했던 포스팅이라도 수정 추가를 하려고 했던 부분이라 이런 부분을 더 알고 싶다 등의 리플을 달아주시면 피드백이 되서 감사할 것 같습니다~