티스토리 툴바

블로그 이미지
대갈장군

calendar

    1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31    

Notice

2008/10/16 14:38 프로그래밍/MSDN
MSDN에 나와 있는 .NET Framework에 대한 설명을 읽고 있자면 '지루하다'. -_-

일단 모르는 단어들이 너무 많이 튀어 나와서 처음 읽는 사람으로 하여금 급거부감을 주게된다.

모르는 단어를 클릭해서 링크를 따라 들어가다 보면 어느새 어딘지 알수 없는 곳에서 또 다시 모르는 단어를 클릭 하려는 내 모습을 발견하고는 깊은 한숨과 함께 '프로그래밍은 나랑 잘 맞지 않습니다...'를 연발하게 된다. 슬픈 현실이다... ㅡ.ㅜ

개인적으로 영어를 쓸 일이 많다보니 아무래도 한국어로 된 MSDN보다 영어로 된 MSDN을 좋아하는데 원래 프로그래밍 언어가 영어인데다가 영어는 불분명한 의미가 없는 정확한 표현을 쓰기 때문에 오히려 한국어로 된 설명보다 이해가 더 쉽게 될때가 많다.

그래서 MSDN은 영어로 읽는 것이 더 나을 것이라고 말하고 싶지만 영어를 격하게 싫어하시는 분들은 아마도 한국어가 나을 듯하다...

이제 .NET Framework에 대해서 이야기 해보자. 이 놈은 내가 Visual Studio 를 이용하면서 부터 꾸준히 내 머리 속에 맴돌던 놈인데 단 한번도 제대로 들어다 본적은 없었다.

왜냐면 일단 내가 차후 설명하게 될 Common Language Runtime(CLR)을 전혀 사용하지 않았기 때문이고 둘째로 이 .NET Framework는 알게 모르게 내 컴퓨터의 구석에서 내가 하는 일들을 돕고 있었다.

비록 그 실체를 몰랐어도 저놈이 있다는 것은 알고 있었다. 요즘들어서 내 프로그램을 다른 컴퓨터에 돌릴일이 많아지다 보니 이놈에 대해서 자연스럽게 접근하게 되었고 몇몇 MSDN 문서를 읽게 되었다.

아마존 닷 컴에서 Ivor Horton's Beginning Visual C++ 2008 이라는 책을 검색해 보면 저 책의 1장을 볼수 있는데 여기에 많은 설명이 잘 되어 있다. (공짜다.. ㅋㅋ)

사용자 삽입 이미지

내가 개인적으로 .NET Framework를 잘 설명하고 있다고 생각하는 그림이 바로 위 그림이다. 일반적으로 C나 C++을 이용해서 간단히 작성해 오던 방식이 그림 제일 왼편에 있는 그림이다. 이것을 보게되면 Native C++코드를 컴파일러(gcc나 각종 컴파일러들)로 Object 파일로 생성하고 Link를 통해 실행 파일을 만들어서 돌리게 된다.

이후 MFC가 나오면서 가운데 한단계가 더 추가되었다. (중간 그림) 사실 이 MFC는 한번도 사용해 본적은 없지만 아주 쉽고 간편하면서도 다양한 형태의 함수를 제공했다는 걸 알수 있었다.

.NET Framework가 나오고 나서도 물론 MFC가 지원되지만 .NET Framework가 MFC보다 한수 위인 이유는 정확히는 몰라도 .NET Framework가 가지는 강력한 Cross-PlatformCross-Language 특성 때문이 아닌가 싶다.

마지막으로 제일 오른편이 바로 .NET Framework를 제대로 사용하는 경우인데 뭔지 모를 2단계가 들어가 있는데 이것이 바로 .NET Framework를 구성하는 2개의 구성요소인 Common Language Runtime과 .NET Framework Library다.

간단하게 설명해서 .NET Framework Library는 걍 함수들의 집합이다. 이놈들은 전부 객체 지향적이므로 독립적으로 사용가능하며 독립적이므로 안전하고 아주 좋다... -_-

사실 CLR이 참 재밌는 놈인데 마지막 단어인 Runtime에 주목할 필요가 있다. 즉, 실행중이란 의미인데 내가 프로그램을 더블 클릭해서 실행에 들어가는 직후부터 프로그램이 죽는 순간까지를 Runtime이라 보면 된다.

이 CLR은 그 런타임에 작동을 하는 놈으로써 다양한 작업을 하는데 예를 들면 보안을 높이고 메모리를 관리하면 타입을 관리하고 각종 시스템의 핵심 서비스들을 제공하기까지 한단다...

나도 프로그램에 입문한지 얼마 되지는 않았기 때문에 정확한 것은 알 수 없지만 .NET Framework의 CLR이 '이것은 새롭다! 이것은 좋다!'라고 Microsoft가 외치는 이유가 바로 Runtime 이라는 저 단어 하나 때문이 아닌가 싶다.

기존의 프로그램 컴파일과 실행의 과정을 보게 되면 컴파일을 수행하는 단계에서 이미 현재 컴퓨터에 종속적 (dependent) 이게 되고 Linker를 통해 실행파일을 만드는 과정에서도 역시 종속적이게 되는 것 같았다. (내 생각일 뿐임... 물론 자바가 이 원리를 깨뜨렸다.)

헌데 이 새로나온 .NET Framework에서는 중간에 CLR와 JIT(Just-In-Time Compiler)를 실행 파일을 만드는 과정에 집어 넣음으로써 큰 변화를 시도했다는 점이 다른 것 같다.

우선 .NET Framework에서 생성되는 실행 파일은 실행 파일을 더블 클릭 한 뒤의 시점(일명 Runtime)에 여러가지 일을 수행하는데 이 일들이 바로 플랫폼에 종속적이지 않도록 만들어주는 일이다.

즉, 이전에는 활용하지 못했던 Runtime이라는 새로운 시간적 공간을 이용해서 각종 다양한 추가 기능 및 편리한 기능을 제공하고 있다는 점이 .NET Framework가 뛰어나다라고 말하는 이유인 것 같다. 자바가 먼저인지 .NET이 먼저인지는 몰라도 자바의 Virtual Machine의 개념도 이와 같다.

물론 이건 내 개인적인 생각이지 이게 이유라고 설명한 글은 본적이 없다... -_-

사실 .NET Framework를 제대로 설명하려면 Common Language Runtime과 더불어 MSIL (Microsoft Intermediate Language), CTS (Common Type System), JIT (Just-In-Time Compiler)를 다 설명해야 하지만 이걸 다 설명하려면 너무 길어질 뿐더러 읽는 사람의 가독력과 흥미가 너무 반감될것 같아 여기서는 말 안해야 겠다....

줄여서 결론을 말하자면 .NET Framework는,

프로그래머가 프로그램을 짤때 사용할 수 있는 새로운 '뼈대 (Frame)' 이다.


그리고 이 새로운 뼈대의 장점들은 무수히 많지만 대표적인 것들이

1. 플랫폼 Independent (플랫폼에 종속되지 않는다.)
2. 프로그램에 대한 다양한 형태의 접근제어컨트롤 방법을 제공한다. 즉, 내용물을 보여주되 복사하거나 그 소스를 못보게 하는 등의 접근제어를 말한다.
3. 강화된 보안을 제공한다. (접근제어도 일종의 보안 방법중 하나지요.)
4. Cross-Language를 제공한다. CLR에 근거하여 작동하는 모든 언어는 서로간에 정보 교환이 자유 자재로 된다는 의미. C#을 작성한 파일을 Visual Basic에서 불러와 사용가능하다는 말. (물론 코딩시 제약이 있다.)
5. Web 개발을 혁신적으로 개선했다. 이건 뭐 읽어보지 않았지만 ASP .NET이 바로 CLR에 기반을 두고 클라이언트가 서버의 컴퓨터에 접속하여 서버의 컴파일러에 의해 작동된다는 뭐 그런소리... 내가 사용할 일은 거의 없을 거라는...

또 무언가 장점이 있을텐데 기억이 안나는 관계로 여기까지만 적자.


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

'프로그래밍 > MSDN' 카테고리의 다른 글

[MSDN] /MT, /MTd, /MD, /MDd (C Runtime Library Option)  (8) 2008/10/21
[MSDN] COM (Component Object Model)  (2) 2008/10/16
[MSDN] .NET Framework 구조  (2) 2008/10/16
[MSDN] End of DLL War!  (0) 2008/10/15
[MSDN] DLL HELL!!!! (1)  (0) 2008/10/14
[MSDN] Manifest 파일?!?!  (0) 2008/10/13
posted by 대갈장군
prev 1 ... 71 72 73 74 75 76 77 78 79 ... 123 next