이 포스트는... 내가 전에 들었던 C#강좌의 내용을 내 스스로 정리해보는 공간이다.. 음..
근데.. 거의 3주가 지나놔서.. -_-.. 기억나는게.. 쿨럭쿨럭.
여튼 한번 정리나 해놔야지.. 정리도 하면서 머릿속에 기억도 좀 해두고.
1. .NET이란 무엇인가?
.net이란 과연 무엇인가? 그 답은? .... (쩜.(닷)네개... -_-..) 흠... 쿨럭... 이름이 왜 닷넷인지는 난 모른다... 그냠 쩜네개? ㅋㅋㅋ
여튼.. 이 .net의 배경은... java와 무관하지 않다고 한다. 왜... java가 JVM(자바 가상머신. 지금은 JRE라고 불림, 자바를 돌려주는 플랫폼이지.. 이것으로 인해서.. 어떠한 환경에도 무관하게 하나의 바이너리만 가지고 여기저기서 쓸수 있었어.. 어디까지나 jvm만 있다면.. 자바가 가지는 큰 장점중 하나는 jvm이지.. 뒤에 설명하겠어)을 이용하여.. 플랫폼에 무관하게 바이너리가 나올 수 있었어. 이것은 큰 발전이라면 발전이지.. C로 프로그램을 짜본 사람들은 알것이다..
리눅스에서 짜놓은 프로그램은 윈도우에서 잘 돌아갈 수 있다고 장담을 하고싶어도.. 사실상... 하기가 어려운 것은 사실이니까.
여기에서 JAVA가 가지는 가장큰 장점이 자바 소스코드를 컴파일 하여 나온 바이너리는.. byte코드라고 해서 jvm이 해당 바이트 코드를 읽어서 각 OS에 맞추어서 코드의 내용을 실행해준다. 이것은 자바로 프로그램을 짜두면.. 그 프로그램은 jvm이 있다면 어디서든 상관없이 다 실행이 가능하다는 말과 같다. (사실 자바프로그램은 jvm이 없으면 실행이 되지 않는다. -_-ㅋㅋㅋㅋㅋ)
이것은 어떤 플랫폼에도 독립적인 바이너리를 만들어내는 것이고, 이것은 프로그램을 어디서든 사용가능하다는 것과 같다. 마치.. 핸드폰 소프트웨어에서 WIPI처럼.. .net은 이 개념을 활용하여 만들은 것이다. 기존의 C언어의 경우 플랫폼에 종속적일 수 밖에 없다. 그때야 뭐.. .net이 있기나 했나. ㅋ
이 .net framework.. 닷넷 프레임워크라 불린다. 이것은 자바의 JRE(jvm)과 같은 역할을 한다. 어디서든 마소의 닷넷 프레임워크만 깔려있다면 ㅋ.. 아주 유용하다. 닷넷 프레임워크에서 돌아가는 프로그램을 작성해 둔다면. 개발자가 어떤 언어로 짜더라도 바이너리 코드는 동일하다. 바이너리 코드는 닷넷 프레임워크에서 해석할 수 있는 공통 언어로 나오게 되는 것이다. 즉.. intermediate language (스펠링이 맞나? 여튼 중간언어)를 공통으로 사용할 수 있다는 점이 될 것이다. 이것이 닷넷에서 말하는 공통중간언어 CIL (Common Intermediate Language)인것이다. 이렇게 만들어진 프로그램은 어떤 언어로 작성하더라도 동일한 성능을 가지고, 같은 Type을 사용하게 된다. 여기서 같이 사용하게 되는 타입을 CTS라고 부른다. 어떠한 언어로 짜더라도 CLS (Common Language Stack)라는 녀석에 맞추어서 짜면.. 모든 언어에 공통된 결과물이 나온다 (즉, CIL로 나오게 된다.) 이것이 닷넷 프레임 워크한테 넘겨져서.. 닷넷 프레임워크가 CIL을 읽어서 처리해준다.(실행해준다는 의미). 이러한 프레임워크를 CLR (Common Language Runtime)이라고 한다. 어떠한 언어로 만들어도 공통된 중간단계 언어를 가진다. 이정도면 매우 좋지 아니한가? 최대 장점은 지금은 살짝 기억이 가물하지만 -_-...
이것이 가지는 장점은.. 먼저.. 개발자가 어떠한 것을 짜더라도 자신이 원하는 개발 언어로 작업할 수 있다는 것이 장점이다. 왜냐하면.. 뭘로짜도.. IL로 코드가 컴파일 되고.. CLR이 실행시에 해당 PC에 맞도록 재컴파일 후 실행해주니까... 우리는 공통된 타입에만 맞추어 작성을 해주면... 되는거다. 무엇으로 짜든 상관이 없다는것이다. 이렇게 만들어두게 되면.. 나중에 해당 코드를 다시 사용할 수 있다.. 어떤 언어로 짜놓든.. 한번 실행 잘되면 그건 다음에도 잘 돌아갈 것이다. 그러니 다른언어로 개발하면서 기존의 프로젝트를 사용할 일이 있다면... 다시짜는 삽질은 건너뛰어줘도 될거라는 말이다.
.net프레임 워크의 기능의 요약은 다음과 같다.
일관된 프로그래밍 모델
단순화된 프로그래밍 모델
한번 실행된 것은 언제나 실행이 가능하다
배포의 용이
플랫폼을 다양하게 지원함
프로그래밍 언어의 통합
단순화된 코드의 재사용
자동 메모리관리 (가비지컬렉터가 있다)
타입-안전성 검증
다양한 디버그 기능 제공
일관된 메소드 실패 관리
보안
상호 운용성
이제 세부적인 내용은 CLR via C#, C#과 닷넷플랫폼. 이 책을 이용해서 좀 공부하면서 하나하나 적어나가야겠다. 이곳에 나의 C#스터디 노트를 작성해 보아야지 ㅋ
반응형
댓글