컴퓨터 공부/C#

C# 1장 간단 정리

려리군 2009. 7. 10. 17:34

.NET 구성요소

CLR

공용 언어 런타임

자동 메모리 관리, 언어 통합, 형식 안전성 보장

mscoree.dll 또는 common object runtime execution engine



CTS

공용형식 시스템

런타임에 지원되는 프로그래밍 구조, 데이터 형식

상호작용 -> 어떻게 메타 데이터에 나타나는지.

CLS

공통 언어 사양

언어가 호응할 수 있는 프로그래밍 구조와 공용 형식들을 정의

모든 언어에 의해 동일한 방식으로 접근될 수 있는 코드 생성을 위한 지침서.

※ 규칙 1 : 형식이 정의된 어셈블리 외부로 '노출된' 부분에만 적용.



C#이 가져온 것

포인터 없음.

자동 메모리 관리

열거, 구조체, 클래스 속성도 공식 문법 구조

사용자 지정 연산자 오버로딩 가능.

인터페이스 기반 프로그래밍 기술 완벽 지원

어트리뷰트를 이용한 aspect 기반 프로그래밍 기법 지원


.NET 바이너리

IL + 메타데이터(항상 존재, 컴파일러에 의해 자동 생성)로 구성

IL : 플랫폼에 무관한 중립 명령어

자바의 바이트 코드와 유사

 *. COM 형식 정보의 문제점 

   - 존재가 보장 안됨.

   - IDL 코드가 포함된 Coclass의 올바른 동작을 위해 필요한 외부 참조 서버의 목록을 만들 방법이 없음.

   - IDL이 내부의 형식들을 정확히 반영하는 지 프로그래머가 직접 일일히 확인해야 한다.

manifest 

어셈블리 현재 버젼 정보

리소스를 지역화하는 데 사용되는 culture 정보

모든 외부 참조 어셈블리 목록


단일 파일 어셈블리

CIL 메타데이터 manifest가 모두 한 파일에

다중 파일 어셈블리

여러개의 닷넷 바이너리로 구성.

주 모듈에는 manifest가 있어야 한다.


※ signature : 메소드의 식별 가능한 특성을 나타내기 위한 일련의 모든 정보

 - 메소드 이름, 반환 형식, 인수 개수, 데이터 형식, (호출 규칙)


.NET 형식 메타데이터의 역할

binary 안에 정의된 모든 형식(클래스, 구조체, 열거형 등)

형식의 멤버들(속성, 메소드, 이벤트 등)에 대한 설명

.NET manifest : 외부 참조 어셈블리에 대한 설명

자가 기술적(self-descriptive)인 어셈블리


JIT : CIL을 의미있는 CPU 명령어로 컴파일 하는 것

jitter라고도 불린다. (대상 OS에 맞는 방식으로 메모리에 캐싱)


sealed class?

인터페이스 : 추상 멤버 정의를 모아 놓은 것.

열거형 : 사용자 지정 열거형도 가능 { 위저드 5 100, ... }

delegate : C스타일의 함수포인터와 비슷

형식멤버 : 생성자, 중첩형식, 연산자, 메소드, 속성, 필드, 상수, 이벤트 등


※ widget : 응용 프로그램과 상호 작용하는 데 이용되는 GUI 요소, 아이콘, 버튼, 체크박스, 스크롤바, 창, 토글 단추, 폼 등


ildasm.exe : IL 어셈블러. mscorlib.dll

※ ctor : 생성자

파일 / 트리뷰 덤프 : 텍스트 파일로 .NET 어셈블리를 볼 수 있음.


wincv.exe

클래스 뷰어


.NET 런타임 배포하기

http://www.microsoft.com에서 Dotnetfx 다운로드 가능


다른 운영체제에서 .NET 실행

http://www.microsoft.com : Shared Source Common Language Infrastructure

http://msdn.microsoft.com/net/ecma

http://www.go-mono.com

'컴퓨터 공부 > C#' 카테고리의 다른 글

Nullable Type  (0) 2009.08.24
Generic  (0) 2009.08.20
Partial classes  (0) 2009.08.18
C# 3장 간단 정리  (0) 2009.07.13
C# 2장 간단 정리  (0) 2009.07.11