상세 컨텐츠

본문 제목

제프리 리처의 CLR via C#

전체 출간 도서

by 비제이퍼블릭 2014. 11. 12. 11:48

본문

 

제프리 리처의 CLR via C#, 4

 

저자 제프리 리처

역자 김명신, 남정현

출판사 비제이퍼블릭

출간예정 20141125()

 

정가 50,000

페이지 1,012

판형 188 x 245

ISBN 978-89-94774-83-1 (93000)

원서정보 CLR via C#, Fourth Edition 아마존닷컴에서 보기


예약구매 바로가기


 

책 소개

 

CLR .NET 개발을 철저하게 마스터하기 위한 완벽 가이드

 

선도적인 프로그래밍 전문가로서 오랫동안 마이크로소프트 .NET팀을 컨설팅해온 제프리 리처와 함께 CLR, C#, .NET 개발의 난해함을 깊이 있게 조명하고 마스터해보자. 이 책을 통해서 안정적이며, 신뢰할 수 있고, 빠르게 동작하는 응용프로그램과 컴포넌트를 개발하기 위한 실용적인 통찰력을 얻을 수 있을 것이다.

 

이 책에서 다루는 내용

 

- 응용프로그램과 타입을 빌드, 패키지화하고 배포하는 방법

- 기본 타입, 값 타입, 참조 타입의 동작 방식을 이해하고, 좀 더 효율적으로 사용하는 방법

- 제네릭과 인터페이스를 이용하여 재사용 가능한 알고리즘을 정의하는 방법

- delegate, 사용자 정의 속성, nullable 타입, 배열, 문자열 등의 특별한 CLR 타입을 이용하여 더욱 효율적으로 개발하는 방법

- 관리 힙과 가비지 수집기의 동작 방식

- Serialization Deserialization을 이용하여 좀 더 빠르게 서비스를 개발하는 방법

- 스레드 풀, 태스크, cancellation, 타이머, 비동기 함수 등을 이용하여 응답성이 좋고 확장 가능한 응용프로그램 설계

- 상태 관리를 돕기 위한 예외 처리 기법

- CLR 호스팅, 앱도메인, 어셈블리 로딩, 리플렉션을 이용하여 동적으로 확장 가능한 앱 개발 방법

- Windows Runtime(WinRT) 컴포넌트와의 상호 운용

 

4판에 대해

 

- .NET Framework 4.5와 최신의 Visual Studio에 맞춰 업그레이드

- Framework Class Library의 핵심 타입 중심

- 멀티 코어 프로그래밍, 제네릭, 스레딩 그 외의 주요 핵심사항에 대해서 전문적으로 해설

- 광범위한 내/외부의 현장 경험을 토대로 실용적인 조언을 공유

 

독자대상

중급

 

소스코드 다운로드

http://www.wintellect.com/devcenter/paulballard/clr-via-c-by-jeffrey-richter

 

 

저자 소개

 

제프리 리처 Jeffrey Richter

더 좋은 소프트웨어를 더 빠르게 수행할 수 있도록 돕기 위한 교육 및 컨설팅 전문 회사인 Wintellect(www.wintellect.com)의 공동 창업자다. 높은 평가를 받고 있는 이전 판과 더불어 『제프리 리처의 Windows via C/C++』과 같은 유명한 서적들을 다수 집필하였다. 상당 기간 Microsoft .NET Framework팀을 컨설팅해왔으며, .NET Framework 4.5의 새로운 비동기 프로그래밍 모델을 함께 개발하기도 하였다.

 

 

역자 소개

 

김명신

 

마이크로소프트의 기술을 좀 더 많은 사람들이 올바르게 이해하고 사용하기를 바라는 마음으로 한국 마이크로소프트 개발자 및 플랫폼 총괄 부서의 수석 에반젤리스트로 일하고 있다. 이전에는 마이크로소프트의 아태지역 글로벌 핵심 개발자 지원팀 수석 엔지니어였으며, 다년간 C++ C# 분야의 Microsoft MVP이기도 하였다. Advance C Programming, Unix System V』 등을 집필하고, Effective C#: 강력한 C# 코드를 구현하는 개발지침 50가지』와 이 책의 저자가 쓴 『제프리 리처의 Windows via C/C++』을 번역하기도 하였다. 분산 컴퓨팅 아키텍처, 대용량 네트워크 프로그래밍, 프로그래밍 방법론, 소프트웨어 공학 등 다양한 분야에 두루 관심이 많고, 개발자 대상의 다양한 컨퍼런스에 단골 발표자로 참가하고 있어서 쉽사리 만나볼 수 있는 쉬운 남자다. 최근에는 폴리글랏의 유행에 편승하여 이런저런 언어들을 다시 공부하고 있다. 내일부터 운동해야지 라는 말을 10년째 반복하고 있으며, 최근에는 30년간 공부한 걸 어디다가 써먹을 수 있을지 다시금 고민을 시작하였다.

 

E-MAIL: himskim@msn.com

Facebook/twitter: himskim

 

남정현

 

어린 시절부터 컴퓨터 프로그래밍에 입문하여 아직까지도 많은 것을 배우려고 노력하고 새로운 것에 열광하는 플랫폼 개발자로 ()자이닉스에서 국내외 주요 유명 대학교에서 절찬리에 사용 중인 웹 기반 CMS솔루션을 개발하는 일을 맡고 있다. Microsoft Azure의 주요 서비스 중 하나인 SQL Database에 대한 입문 도서인 Pro SQL Azure, Microsoft WebMatrix 활용 레시피에 대한 도서, 모바일 웹/앱 개발 도서 등을 출간하였다. 수년간 Microsoft MVP로 활동하고 있으며 현재는 클라우드 컴퓨팅 플랫폼의 한 형태인 PaaS 기술에 많은 관심과 시간을 투자하고 있다. 20대 후반을 보내는 요즈음 더 멋지고 더 익사이팅한 삶을 찾기 위하여 매일 고민하고 있으며, 기술자들과의 만남에서 큰 즐거움을 느끼며 지속 가능한 커뮤니티 활동을 위해 늘 고민하고 있다.

 

블로그: http://www.rkttu.com/

E-MAIL: rkttu@outlook.com

Facebook/Twitter: rkttu

 

 

목차

 

 

1. CLR의 기본

 

1. CLR의 실행 모델

- 소스 코드를 관리 모듈로 컴파일하기

- 관리 모듈들을 하나의 어셈블리로 통합하기

- 공용 언어 런타임 로딩

- 어셈블리 코드 실행하기

- 네이티브 코드 생성 도구: NGEN.EXE

- 프레임워크 클래스 라이브러리

- 공용 타입 시스템

- 공용 언어 사양

- 비관리 코드와의 상호 운용성

 

2. 빌드, 패키징, 배포, 응용프로그램과 타입의 관리

- .NET Framework 배포 목표

- 모듈 안에 타입 만들기

- 메타데이터에 대해 잠시 살펴보기

- 여러 모듈을 하나의 어셈블리로 통합하기

- 어셈블리 버전 리소스 정보

- 문화권

- 단순 응용 프로그램 배포 (개별적으로 배포된 어셈블리)

- 단순한 관리와 설정

 

3. 공유 어셈블리와 강력한 이름의 어셈블리

- 두 가지 어셈블리, 두 가지 배포 방법

- 어셈블리를 강력한 이름으로 서명하기

- 전역 어셈블리 캐시

- 강력한 이름의 어셈블리를 참조하는 어셈블리 만들기

- 강력한 이름의 어셈블리로 조작을 방지하기

- 서명 연기

- 강력한 이름의 어셈블리를 개별적으로 배포하기

- 실행 중에 타입에 대한 참조를 어떻게 찾아내는가

- 고급 관리 기능 제어와 설정

 

2. 타입 설계

 

4. 타입의 기초

- 모든 타입은 System.Object를 상속한다

- 타입 간 캐스팅하기

- 네임스페이스와 어셈블리

- 실행 시점과의 연관성

 

5. 기본, 참조, 값 타입

- 프로그래밍 언어의 기본 타입

- 참조 타입과 값 타입

- 박싱된 값 타입과 박싱되지 않은 값 타입

- 객체 해시 코드

- dynamic 기본 타입

 

6. 타입과 멤버의 기본

- 타입과 멤버의 기본

- 타입의 가시성

- 멤버 접근성

- 정적 클래스

- 부분 클래스, 부분 구조체, 부분 인터페이스

- 컴포넌트, 다형성, 버전 관리

 

7. 상수와 필드

- 상수

- 필드

 

8. 메서드

- 인스턴스 생성자와 클래스 (참조 타입)

- 인스턴스 생성자와 구조체 (값 타입)

- 타입 생성자

- 연산자 오버로드 메서드

- 변환 연산자 메서드

- 확장 메서드

- 부분 메서드

 

9. 매개변수

- 선택적 매개변수와 명명된 매개변수

- 암시적으로 타입화된 지역변수

- 메서드에 참조로 매개변수 전달

- 메서드에 가변 매개변수 전달하기

- 매개변수 타입과 반환 타입에 대한 지침

- 상수화

 

10. 속성

- 매개변수가 없는 속성

- 매개변수가 있는 속성

- 속성의 접근자 메서드 호출에 관한 성능

- 속성 접근자의 한정자

- 제네릭 속성 접근자 메서드

 

11. 이벤트

- 이벤트를 노출하는 타입을 설계하기

- 컴파일러가 이벤트를 구현하는 방법

- 이벤트가 기다리는 타입 설계하기

- 명시적 이벤트 구현

 

12. 제네릭

- Framework Class Library에서의 제네릭

- 제네릭 하부 구조

- 제네릭 인터페이스

- 제네릭 델리게이트

- 공변성과 반공변성 타입 매개변수를 사용하는 델리게이트와 인터페이스

- 제네릭 메서드

- 제네릭과 기타 멤버들

- 검증 가능성과 제약조건

 

13. 인터페이스

- 클래스와 인터페이스 상속

- 인터페이스 정의하기

- 인터페이스 상속하기

- 인터페이스 메서드 호출에 대한 자세한 내용

- 인터페이스 메서드의 암묵적 구현과 명시적 구현 (내부적으로 수행되는 작업)

- 제네릭 인터페이스

- 제네릭과 인터페이스 제약조건

- 같은 메서드 이름과 원형을 가지는 여러 인터페이스 구현하기

- 명시적 인터페이스 구현 메서드로 컴파일 시 타입 안정성 향상시키기

- 명시적 인터페이스 구현 메서드에서 주의해야 할 부분

- 설계 지침: 기본 클래스 혹은 인터페이스

 

3. 핵심 타입

 

14. 문자, 문자열, 텍스트 사용하기

- 문자

- System.String 타입

- 효율적으로 문자열 생성하기

- 객체에 대한 문자열 표현을 얻어오기: ToString

- 문자열을 객체로 분석하기: Parse

- 인코딩: 문자 배열과 바이트 배열 사이의 변환

- 안전한 문자열

 

15. 열거 타입과 비트 플래그

- 열거 타입

- 비트 플래그

- 열거 타입에 메서드 추가하기

 

16. 배열

- 배열 요소 초기화하기

- 배열 캐스팅하기

- 모든 배열의 암묵적 부모 타입인 System.Array

- 모든 배열이 암묵적으로 구현하는 IEnumerable, ICollection, IList 인터페이스

- 배열의 전달과 반환

- 시작 인덱스가 0이 아닌 배열 만들기

- 배열의 내부 구조

- 안전하지 않은 배열 사용과 고정 크기 배열

 

17. 델리게이트

- 델리게이트 살펴보기

- 정적 메서드에 대한 콜백을 델리게이트로 구현하기

- 인스턴스 메서드에 대한 콜백을 델리게이트로 구현하기

- 델리게이트 파헤쳐보기

- 델리게이트를 사용하여 여러 메서드를 호출하기 (메서드 연결하기)

- 이미 정의되어 있는 델리게이트 활용하기 (제네릭 델리게이트)

- 델리게이트를 위한 C#의 문법적 편의사항

- 델리게이트와 리플렉션

 

18. 사용자 정의 특성

- 사용자 정의 특성의 사용

- 사용자 정의 특성 클래스 정의하기

- 사용자 정의 특성의 생성자와 필드/속성의 데이터 타입

- 사용자 정의 특성을 검출하기

- 사용자 정의 특성 인스턴스 간의 비교

- 사용자 정의 특성의 사용 여부를 객체 생성 없이 파악하기

- Conditional 특성 클래스

 

19. Null 값 타입

- C# Nullable 값 타입에 대한 지원

- C# Null 결합 연산자

- CLR Nullable 값 타입에 대한 특별한 배려

 

4. 핵심 기능

 

20. 예외와 상태 관리

- 예외의 정의

- 예외 처리의 구조

- System.Exception 클래스

- FCL에 정의된 예외 클래스

- 예외 발생시키기

- 사용자 정의 예외 클래스 만들기

- 생산성을 위한 신뢰성 재고

- 지침과 모범 사례

- 처리되지 않은 예외

- 예외 디버깅하기

- 예외 처리 시 성능 고려사항

- CER

- 코드 계약

 

21. 관리 힙과 가비지 수집

- 관리 힙의 기본

- 세대: 성능 개선을 위한

- 특별한 정리 작업이 필요한 타입 다루기

- 객체의 수명을 수동으로 모니터링하고 제어하기

 

22. CLR 호스팅과 앱도메인

- CLR 호스팅

- 앱도메인

- 앱도메인의 언로딩

- 앱도메인의 모니터링

- 앱도메인의 첫째 예외 통지

- 호스트는 앱도메인을 어떻게 사용하는가?

- 고급 호스트 제어

 

23. 어셈블리 로딩과 리플렉션

- 어셈블리 로딩

- 동적으로 확장 가능한 응용프로그램을 만들기 위해서 리플렉션을 사용하기

- 리플렉션의 성능

- 애드인을 지원하는 응용프로그램 설계

- 타입 내의 멤버를 찾기 위해 리플렉션 사용하기

 

24. 런타임 serialization

- serialization/deserialization 쾌속 시작

- serialize 가능한 타입 정의하기

- serialization deserialization 제어하기

- 포맷터는 타입 인스턴스를 어떻게 serialize하는가?

- serialize/deserialize할 데이터 제어하기

- 스트리밍 컨텍스트

- 다른 타입으로 serialize하고 다른 객체로 deserialize하기

- Serialization 대리자

- 객체를 deserialize할 때 어셈블리와 타입을 오버라이딩하기

 

25. WinRT 컴포넌트와의 상호 운용

- CLR 프로젝션과 WinRT 컴포넌트 타입 시스템의 규칙

- Framework 프로젝션

- C#으로 WinRT 컴포넌트 정의하기

 

5. 스레딩

 

26. 스레드의 기본

- 윈도우는 왜 스레드를 지원하는가?

- 스레드의 비용

- 바보짓은 이제 그만

- CLR 스레드와 윈도우 스레드

- 계산 중심의 비동기 작업을 수행하기 위해서 전용 스레드 사용하기

- 여러 스레드를 사용하는 이유

- 스레드 스케줄링과 우선순위

- 포그라운드 스레드와 백그라운드 스레드

- 당면 과제

 

27. 계산 중심의 비동기 작업

- CLR의 스레드 풀 소개

- 단순한 계산 중심 작업의 수행

- 실행 컨텍스트

- 협조적 취소와 타임아웃

- 태스크

- Parallel의 정적 For, ForEach, Invoke 메서드

- Parallel LINQ

- 계산 중심 작업을 주기적으로 수행하기

- 스레드 풀이 스레드를 관리하는 방법

 

28. I/O 중심의 비동기 작업

- 윈도우 운영체제가 I/O 작업을 수행하는 방법

- C#의 비동기 함수

- 컴파일러가 비동기 함수를 상태 기기로 변환하는 방법

- 비동기 함수의 확장성

- 비동기 함수와 이벤트 핸들러

- 프레임워크 클래스 라이브러리(FCL)내의 비동기 함수

- 비동기 함수와 예외 처리

- 비동기 함수의 다른 기능

- 응용프로그램과 스레딩 모델

- 서버를 비동기로 구현하려면?

- I/O 작업의 취소

- 반드시 동기적으로 수행되어야만 하는 I/O 작업

- I/O 요청의 우선순위

 

29. 단순 스레드 동기화 요소

- 클래스 라이브러리와 스레드 안정성

- 단순 유저 모드 동기화 요소와 커널 모드 동기화 요소

- 유저 모드 동기화 요소

- 커널 모드 동기화 요소

 

30. 복합 스레드 동기화 요소

- 간단한 복합 스레드 동기화 락

- 스피닝, 스레드 소유권, 중복 소유

- 프레임워크 클래스 라이브러리 내의 복합 동기화 요소

- 잘 알려진 이중 확인 락 기법

- 조건 변수 패턴

- 비동기 동기화

- 컨커런트 컬렉션 클래스

 

 

출판사 리뷰

 

이 책의 목적은 .NET Framework 기반의 응용프로그램을 개발하는 방법과 함께, 이 기반 환경에서 재사용 가능한 클래스를 설계하는 방법을 설명하는 것이다. 구체적으로 이야기하면, CLR이 어떻게 작동하며 관련된 내부 구성요소들이 어떤 기능을 제공하는지를 설명하는 것에 주된 목적이 있다. 또한 Framework Class Library(FCL)의 다양한 면모도 설명할 것이다. FCL에 대해서 모두 설명하는 책은 있을 수 없는데, FCL은 지금도 수천 가지의 클래스로 이루어져 있고 계속해서 엄청난 숫자의 클래스가 새로 추가되고 있기 때문이다. 따라서 여기서 다루는 것은 모든 개발자들이 반드시 알아야 하는 핵심적인 클래스들에 대해서만 주로 다룬다.

 

그리고 이 책은 Windows Forms, Windows Presentation Foundation(WPF), 마이크로소프트 실버라이트, XML 웹 서비스, Web Forms, 마이크로소프트 ASP.NET MVC, 윈도우 스토어 앱 등 여러 분야 중 어느 한 분야에 집중하지는 않지만, 특정 응용프로그램 유형에 종속되지 않으며 활용 가능한 모든 기술에 대해 다루고 있다.

 

이 책은 Microsoft Visual Studio 2012 .NET Framework 4.5, 그리고 C# 프로그래밍 언어 버전 5.0을 기준으로 하고 있다. 마이크로소프트는 새로운 버전의 기술들을 배포하면서도 이전 버전과의 호환성을 유지하기 위해 수많은 노력을 기울이고 있기 때문에, 이 책에서 다루는 상당수의 내용들은 이전 버전에서도 거의 대부분 잘 작동하는 내용들이다.

 

모든 샘플 코드는 여러 가지 기능들을 자유롭게 보이기 위하여 C# 프로그래밍 언어를 사용하여 작성되었다. 하지만 CLR은 여러 프로그래밍 언어에서 사용할 수 있도록 설계되었으므로, 이 책의 내용 중 상당수는 C#이 아닌 다른 프로그래밍 언어에서도 동일하게 적용될 수 있다.

 

관련글 더보기

댓글 영역