Transcript 소설같은C#
1 ███████████
1
1
1장 C#의 배경
소설같은C #
최영관
Powered by http://www.jabook.org
1장
1.1 닷넷(.NET)
1.1.1 닷넷의 의미와 특징
▣
닷넷이란(프로그래머 입장)
◈
모든 것을 포괄하고 있는 이상적인 개발환경
• 개발 툴
• 개발 언어
• 라이브러리
• 기반 기술
▣
닷넷의 특징
◈
플랫폼 독립성
– 닷넷 프레임웍만 설치되어 있으면 다양한 플랫폼에 동작
◈
다양한 언어의 지원
– 개발자는 다양한 언어로 개발, 닷넷에서 하나의 방식으로 동작
– MS에서 개발한 언어끼리의 통합(C#, Mananged C++, VB.NET,
JScript.NET)
◈
상호 운용성
– 서로 다른 언어들끼리의 호환성
▣
프로그래머 입
장에서 닷넷은
이상적인 개발
환경이다.
C#
◈
닷넷을 대표하는 언어
4
1.1.2 닷넷 프레임웍(.NET Framework)
C#
Managed C++
Common Language Specification
공통 언어 스펙
.NET Framework
.NET Library
Web Services
User Interface
Data and XML
Base Class Library
.NET 런타임
Common Language Runtime
공통언어 런타임
JScript.NET
Visual Studio .NET
VB.NET
CLS의 규칙을 따르는
언어로 작성된 애플리
케이션은 닷넷 프레임
웍에서 동작할 수 있다.
5
1.1.3 닷넷의 특징
▣
플랫폼 독립성(Plaform Independent)
◈
▣
닷넷 프레임웍만 설치되어 있다면 어떠한 운영체제에서도 닷넷 애
플리케이션이 동작할 수 있다.
다양한 언어의 지원
◈
CLS(Common Language Specification)
– 닷넷 프레임웍에서 동작하기 위해서 언어들이 지켜야 하는 표준 스펙
▣
상호 운용성(Interoperability)
◈
서로 다른 언어끼리의 호환성
– C#에서의 COM 사용
– C#에서의 Win32 API 사용
◈
닷넷 지원 언어들끼리의 호환성
6
1.2 닷넷 언어의 핵심
1.2.1 중간언어
C# 코드
C# 컴파일러
VB.NET 코드
VB.NET 컴파일러
중간언어
Microsoft
Intermediate
Language
Managed C++
코드
Managed C++ 컴파일러
CLR이 실행
C# 어셈블리
8
1.2.2 Just In Time Compiler
▣
중간언어(Intermediate Language)
◈
▣
기계어로 변환하기 쉬운 상태의 중간 단계의 언어
중간언어와 동적 컴파일
◈
중간언어
– C#의 최종 결과물(컴파일한 결과파일)
◈
재컴파일
– 중간언어는 완벽한 기계어로 컴파일되어야만 실행될 수 있다.
◈
JIT(Just In Time Compiler)
– 중간언어를 동적으로 컴파일하는 컴파일러
9
1.2.3 JIT 컴파일러
소스코드
소스코드 컴파일
Common Language Runtime
어셈블리
중간언어(IL)
JIT 컴파일러
JIT 컴파일러의
정확한 이름은
Just-In-Time 컴
파일러이다.
동적 컴파일러
CLR이 중간언어로
컴파일된 파일을 로
딩하면 CLR 내의
JIT 컴파일러가 기계
어로 컴파일하게 된
다. 이 작업은 동적
으로 이루어진다.
동적 컴파일
완전한 기계어
프로그램 실행
운영체제
10
1.2.4 CLR(Common Language Runtime)
▣
CLR
.NET에서 프로그램을 로딩하고 동적 컴파일하며 실행해주는
◈ 메모리 관리까지 해주는 가상적인 운영 시스템
◈ 프로그래머 입장에서는 닷넷 프레임웍 자체를 CLR로 보아도 된다.
◈
– 닷넷 프레임웍 내에 CLR이 포함되어 있다.
▣
CLR의 역할
◈
프로그램 로딩
– 사용자가 프로그램을 실행하면 CLR이 프로그램을 로딩한다.
◈
동적 컴파일
– 로딩된 프로그램은 CLR 내의 JIT에 의해서 동적으로 컴파일된다.
◈
실행
– 동적으로 컴파일된 코드는 동적으로 적재되어 프로그램이 실행된다.
◈
메모리 관리
– CLR은 내부의 메모리 관리를 자동으로 하며 Garbage Collector를 운영한다.
11
1.2.5 컴파일과 실행
▣
닷넷의 컴파일과 실행
◈
컴파일
– 중간언어(IL) 형태로 만든다.
◈
실행
– IL형태의 언어를 JIT가 재컴파일하여 .NET 환경의 CLR이 실행시킨다.
▣
C#의 어셈블리
◈
▣
중간언어 형태의 .exe나 .dll 파일들을 C#에서는 어셈블리(Assembly)라고 한
다.
어셈블리의 종류
◈
사설 어셈블리
– Copy & Paste 개념의 프로그램
– 복사해서 사용하면 된다.
◈
공용 어셈블리
–
–
–
–
레지스터 개념에서 발전된 형태
공용 어셈블리를 등록하는 것은 레지스터와 동일하다.
버전별로 독립적으로 관리하며 복사버젼을 보관한다.
CLSID 대신 디지털 서명 방식으로 관리한다.
12
1.3 .NET과 언어
1.3.1 .NET과 C#
▣
.NET과 C#의 호환
.NET을 위해서 새롭게 만들어진 언어
◈ .NET의 특징은 곧 C#의 특징이다.
◈
▣
C# 언어의 특징
기존 언어들의 장점만을 살려서 만든 언어
◈ C#은 C++의 문법을 표준화하고 정리하고 발전시킨 언어이다.
◈ C#에서 C 문법을 사용할 수 있다.(포인터)
◈ C#에서 기존의 COM 컴포넌트를 사용할 수 있다.
◈
▣
C#의 라이브러리
◈
XML.NET
◈ ADO.NET
◈ ASP.NET
◈ XML Web Services
14
1.3.2 C#과 자바
▣
인터프리터와 컴파일 언어
◈
◈
▣
자바
◈
◈
▣
컴파일 언어는 프로그램을 한꺼번에 기계어로 변환해서 사용한다.
인터프리터 언어는 한줄씩 진행해 나가며 필요한 코드를 기계어로
해석해서 실행하는 방식이다.
C#
◈
◈
자바는 동적 해석 언어이다.
바이트코드를 인터프리터 방식으로 해석해서 실행
비슷한 개념
C#은 동적 컴파일 언어이다.
JIT 컴파일러에 의해서 동적으로 중간언어(IL)을 재컴파일해서 실
행
15
1.3.3 필자가 보는 C#
▣
C#의 문법
◈
◈
▣
C#의 특징
◈
◈
◈
▣
문법적인 면에서 C보다 C++보다 명확하고 발전된 형태
모든 문법은 익숙해지기 전까지는 어렵다.
C#은 프로그래밍 언어이다.
엄청난 라이브러리를 제공하는 프로그래밍 언어이다.
라이브러리라기 보다는 기반 기술을 제공하는 개발환경이다.
C#의 구성
◈
◈
◈
◈
◈
◈
◈
◈
◈
기본 유틸 라이브러리
스레드 프로그래밍
네트워크 프로그래밍
XML.NET
ADO.NET
웹 폼 프로그래밍
윈도우즈 프로그래밍
.NET Remoting
XML Web Services
16
End
17