.Net & .Net Framework
안보면 자꾸 잊어버리게 되는 것들..
< Source. /blog.naver.com/ktyhsg/4217917>
닷넷의 탄생
기존의 클라이언트/서버, 중앙집중식 메인 프레임은 미리 지정된 클라이언트에서만 서버로 접근이 가능 했었다. 하지만 웹기반 방식은 장소나 클라이언트에 상관 없이 접근이 가능하기 때문에 어디서나 업무를 볼 수 있는 장점이 있습니다.
그리고 이러한 웹 기반 방식의 가장 큰 장점은 서로 다른 컴퓨터 간에도 작동이 가능한 환경을 제공한다는 것입니다. 윈도우2000, 리눅스, 유닉스 등등 이 동일하게 사용 할수가 있다는 것입니다.
이렇듯 앞에서 설명한 웹기반의 환경은 시스템에 종류와 관계없이 동일한 사용환경을 제공하기 때문에 업무의 효율성 및 편의성을 증대시켜 주었습니다.
그러나 이런 동일한 사용환경을 개발 한다는 것은 쉽지가 않습니다. 하나의 응용 프로그램은 PC기반의 웹 브라우저에 구동 시키려면, ActivX나 COM을 이용해서 개발해야 합니다. 그리고 이 프로그램이 솔라리스나 리눅스기반의 PC에서 수행하려면, 거기에 맞는 모듈을 별도로 개발해야 한다.
이러한 개발환경의 이질성을 해결 하기 위해 나온것이 닷넷입니다.
그리고 기종이 다르면, 데이터를 서로 다른 포맷으로 처리합니다. 이때 동일한 데이터를 사용자에게 보여 주기 위한 처리작업이 필요한데... 이런 데이터의 이질성을 해결하기 위해 닷넷에서는 기본적으로 데이터를 XML로 처리합니다.
닷넷의 기능
닷넷을 이용하면, 기존의 웹 기반 프로그램을 개발할 때처럼 ASP나 PHP나 같은 특정 웹 스크립트를 사용 하는 대신에 C#이나 C++,자바 등의 언어에 상관없이 응용프로그램과 서비스를 개발할 수 있습니다.
닷넷의 장점
1. 닷넷을 구성하는 비주얼 스튜디오 닷넷돠 닷넷 프레임워크를 이용하면, 더욱 빠르게 개발할 수 있습니다.
2. 닷넷 프레임워크와 비주얼 스튜디오 닷넷은 응용 프로그램과 XML웹 서비스를 더욱 안정적으로 제공합니다.
3. XML 웹 서비스를 사용하면, 닷넷 플랫폼에서 만든 응용 프로그램과 서비스를 더욱 쉽고 효율적으로 통합할 수 있습니다.
닷넷 프레임워크의 구조
닷넷 프레임워크에서 프로그래밍을 하려면, CLR과 닷넷 프레임워크 클래스 라이브러리을 알아야 합니다.
CLR : 공통 언어 런타임
C#은 자바의 가상 머신과 같은 개념이 추가되었습니다. 그래서 C#으로 개발을 했다고 해서 그 프로그램을 바로 실행할 수는 없습니다. C#컴파일러는 컴파일이 끝나면, MSIL이라는 중간 코드를 만들어서 내기 때문에 MSIL을 JIT(Just InTime)라는 컴파일러를 이용해 CLR위에서 실행 할 수 있는 코드로 다시 컴파일해야 합니다. 이와 같이 CLR은 자바의 가상 머신인 JVM과 기능이 동일한 환경으로, C#으로 만든 코드를 수행할 수 있는 환경을 제공합니다.
이렇게 CLR에서 수행할 수 있는 코드를 관리코드라고 하고, 수행할 수 없는 코드를 비관리코드라고 합니다. 관리코드와 비관리코드의 차이는, 닷넷 프레임워크의 CLR환경이 현재 C#으로 수행중인 코드들을 관리할 수 있느냐 없느냐에 이다. 그러면 관리란 무엇인가?
프로그램 수행중에 오류가 발생해서 시스템이 다운되는 경우가 종종 있습니다. 이렇게 오류가 발생하는 경우 관리코드로 되어 있는 프로그램에서는 CLR에서 자동으로 오류를 검사하여 시스템이 다운되지 않게 합니다. 하지만 비관리 코드로 되어 있는 프로그램에서는 CLR을 이용해서도 오류의 발생을 막을 수가 없습니다. 따라서 이 책에서 설명하는 C#의 모든 기능은 CLR의 모든 기능은 CLR에서 관리할 수 있는 관리 코드로 작성합니다.
닷넷 프레임워크 클래스 라이브러리
자바의 가장 큰 단점은 응용프로그램에서의 프로그래밍이나 웹에서의 프로그래밍을 할때의 개발환경이 너무도 다르고 불편합니다. 이러한 점을 C#에서는 닷넷 프레임워크 클래스 라이브러리로 해결하고 있습니다.
또한 C#이전에는 비주얼 C++로 윈도우 응용 프로그램을 만들고 웹프로그램은 ASP나 PHP로 만들어야 했습니다. 그러나 C#을 사용하면, 닷넷이라는 동일한 환경에서 모든 작업이 가능하다. 이것은 코드의 재사용성말고도 일관성 있는 코드를 만들어 낼수 있는다점입니다. 이것은 개발자로서는 엄청난 장점입니다.