.NET 이란
.NET
- 2000년 7월 MS가 발표한 새로운 프로그래밍 환경
- Internet is king domain of all
- .NET Framework에 의해 동일한 컴파일된 코드로 작성
.NET Framework
- .NET 플랫폼의 한 부분
- Windows에 포함되어 Windows 구성요소로써 동작
- 차세데 Windows 기반 응용프로그램의 기초
.NET Framework 개요
- CLR (Common Language Runtime)
- NET Framework 가장 하위에 있음
- 실행시 코드를 관리하는 대리인
- 메모리 관리, 쓰레드 관리, 원격 서비스 등의 핵심 서비스 제공
- NET Framework Class Library
- .NET Framework에서 CLR 제외한 부분
- ASP.NET, Windows Forms, Data and XML, Base Class Library
CLR (Common Language Runtime)기능
- 자동 메모리 관리 : 메모리 누수, 잘못된 메모리 참조 문제를 해결
- 언어호환성 제공 : CTS를 지원하는 다양한 언어를 제공
- CTS : 이진코드 라이브러리의 단순 배포
- 보안 : 인터넷 배포를 위한 중요 기능
- 개발자의 생산성 향상 : 다른 언어로 작성한 DLL등을 사용
- 과거의 SW 지원 : 관리되는/관리되지 않는 코드를 지원
- 성능 향상 : JIT 컴파일을 통한 성능 향상
CTS (Common Type System)기능
- .NET 메타데이터 형식을 정의
- .NET 언어들을 초월한 통합 데이터 형 시스템
- .NET 언어들이 사용하는 모든 데이터형 정의
- .NET 언어들의 호환성 유지
CLS (Common Language Specification) 기능
- NET 컴파일러들이 지켜야 하는 규약 (공통 언어 규약)
- CLR이 언어 호환성을 가질 수 있도록 지원
NET Framework Class Library 구성 요소
- ASP.NET (XML Web Service & Web Form)
- Windows Forms
- Data and XML
- Base Class Library
C#이란
C#이란?
- .NET Framework에서 실행되는 다양한 응용 프로그램을 만들기 위해 디자인된 프로그램 언어
- C# 활용 분야
- Windows 클라이언트 App
- XML Web Service
- 분산 구성 요소
- 클라이언트-서버 응용 프로그램
- 데이터베이스 응용 프로그램 등
C#의 특징
- 표현력이 뛰어나면서도 단순하고 배우기 쉽다. : C, C++, JAVA 와 유사
- 객체지향 언어로서 캡슐화, 상속, 다형성과 같은 개념을 지원
- C++의 강력한 기능을 제공 : COM개체, Native Win32 DLL 등을 "Interop" 프로세스를 통해 C#에서 사용 가능
- 개발 절차는 C,C++에 비해 간단하며, Java보다 유연
- C, C++ 처럼 별도의 헤더파일이 없음, 메서드와 형식을 특정 순서대로 정의할 필요 없음
- 클래스, 구조체, 인터페이스, 이벤트 개수에 제한이 없음
C# 컴파일 과정
- 소스코드 컴파일 -> DLL or EXE (MSIL, 메타데이터) 생성됨
- MSIL : 플랫폼에 무관한 중간 언어
- 메타데이터 : 컴파일된 소스 코드에서 사용된 형 타입 등을 기술
- DLL or EXE -> .NET Framework에서 동작
- 어셈블리가 CLR에 로드
- CLR은 메니페스트에 포함된 정보를 통해 작업을 수행
- 보안 요구사항 충족 확인
- JIT(Just in time) 컴파일 수행
- IL 코드를 Native 기계어 명령으로 변환
- CLR의 기능
- 자동 가비지 콜렉트
- 예외처리
- 리소스 관리 등
- 관리 코드 (Managed Code) : CLR을 통해 실행되는 코드
- JIT 컴파일러
- MSIL은 사용전에 반드시 컴파일되어야 함
- 애칭 : Jitter
- Jitter는 MSIL 명령어 집합을 컴파일하여 기계 코드로 바꾸고, 메모리상의 캐쉬에 저장하고 (컴파일된 함수는 다시 컴파일 안함)
- Unix에서도 JIT을 통해 실행 가능



