이미 소장하고 있다면 판매해 보세요.
|
시작하면서
개발자 플랫폼: .NET Framework 개발 환경: Microsoft Visual Studio 이 책의 목표 시스템 사양과 샘플 코드 이 책은 잘못된 내용이 전혀 없으며 완벽하다 감사의 글 지원 Part 1 CLR의 기본 지식 Chapter 1 공용 언어 런타임(CLR)의 실행 모델 소스 코드를 관리되는 모듈로 컴파일하기 관리되는 모듈을 어셈블리 파일로 결합하기 CLR 로딩 어셈블리 코드의 실행 IL과 코드 검증 안전하지 않은 코드 네이티브 코드 생성기: NGen.exe Framework 클래스 라이브러리 소개 공용 타입 시스템(CTS) 공용 언어 사양(CLS) 비관리 코드와의 상호연동 Chapter 2 빌드, 패키지, 배포 그리고 어플리케이션과 타입 관리 .NET Framework 배포 타입 모듈로 빌드하기 응답 파일 메타데이터 다수의 모듈 어셈블리로 병합하기 Visual Studio IDE를 이용해서 프로젝트에 어셈블리 추가하기 어셈블리 링커 사용하기 어셈블리에 리소스 파일 포함하기 어셈블리 버전 리소스 정보 버전 번호 컬처 단순 어셈블리 배포(전용 어셈블리) 단순 관리 제어(설정) Chapter 3 공유 어셈블리와 강력한 이름의 어셈블리 두 종류의 어셈블리, 두 종류의 배포 어셈블리에 강력한 이름 부여하기 전역 어셈블리 캐시 GAC 내부의 구조 강력한 이름의 어셈블리를 참조하는 어셈블리 만들기 위?변조가 쉽지 않은 강력한 이름의 어셈블리 어셈블리 서명 지연 강력한 이름의 어셈블리를 전용으로 배포하기 런타임이 형식 참조를 해결하는 방법 고급 관리 컨트롤(구성) 배포자 정책 컨트롤 Part 2 타입(Type) Chapter 4 타입의 기본 모든 타입은 System.Object로부터 파생된다 타입들 사이의 변환(형 변환) C#에서의 타입 변환(형 변환)과 is, as 연산자 네임스페이스와 어셈블리 런타임에는 어떻게 동작할까? Chapter 5 기본 형식, 참조 형식 그리고 값 형식 프로그램 언어 기본 형식 기본 형식 연산에서 Checked/Unchecked 사용하기 참조 형식과 값 형식 값 형식의 박싱과 언박싱 박싱된 값 형식 필드를 인터페이스로 수정하기(그리고 왜 이것을 이용해서는 안 되는지) 객체의 등질성과 식별자 객체 해시 코드 Part 3 타입 디자인 Chapter 6 타입과 멤버 타입(클래스) 멤버의 종류 타입의 가시성 프렌드(Friend) 어셈블리 멤버 접근 제한자 정적 클래스 Partial 클래스, 구조체 그리고 인터페이스 컴포넌트, 다형성 그리고 버전 관리 CLR은 가상 함수, 속성, 이벤트를 어떻게 호출하나 타입의 가시성과 멤버의 접근성을 효과적으로 사용하기 타입의 버전과 관련하여 가상 함수 다루기 Chapter 7 상수와 필드 상수 필드 Chapter 8 메서드: 생성자, 연산자, 형 변환 그리고 파라미터 인스턴스 생성자와 클래스(참조 형식) 인스턴스 생성자와 구조체(값 형식) 타입 생성자 타입 생성자의 성능 연산자 오버로드 메서드 연산자와 프로그래밍 언어의 연동 형 변환 연산자 메서드 파라미터 참조형으로 메서드에 전달하기 가변의 파라미터를 메서드에 전달하기 메서드의 파라미터 타입 선언하기 상수 메서드와 파라미터 Chapter 9 속성 인자 없는 속성 속성 효과적으로 정의하기 인자를 포함한 속성 속성 메서드의 호출 성능 속성 메서드의 접근성 제네릭 속성 메서드 Chapter 10 이벤트 이벤트를 포함하는 타입(클래스) 디자인 단계 1: 이벤트 통지를 기다리는 구독자에게 전달될 정보 타입 정의 단계 2: 이벤트 멤버 정의 단계 3: 이벤트 구독을 등록한 객체에게 이벤트를 발생시켜 알려주도록 하는 메서드 정의 단계 4: 특정 입력 정보를 이벤트로 전달시켜 주는 메서드 정의 이벤트 구현 방식 이벤트를 구독하는 타입(클래스) 디자인하기 이벤트와 스레드 안정성 명시적 이벤트 등록과 등록 해제 다수의 이벤트를 정의하는 타입 디자인 Part 4 필수적인 타입 Chapter 11 문자와 문자열, 그리고 텍스트 다루기 문자 System.String 타입 문자열의 생성 문자열은 고정적이다 문자열 비교하기 문자열 보관 문자열 풀링 문자열의 문자와 텍스트 요소를 검사하기 기타 문자열 조작 동적인 문자열을 생성하는 효과적인 방법 StringBuilder 객체의 생성 StringBuilder 객체의 멤버들 객체를 표현하는 문자열 얻기 형식과 언어 설정 지정하기 여러 개의 객체를 하나의 문자열로 형식화하기 사용자 정의 포맷터 제공하기 문자열 파싱하여 객체 얻기 인코딩: 문자와 바이트 간의 변환 문자와 바이트의 인코딩/디코딩 스트림 Base-64 문자열 인코딩과 디코딩 보안상 안전한 문자열 Chapter 12 열거형 타입과 비트 플래그 열거형 타입 비트 플래그 Chapter 13 배열 배열의 형 변환 모든 배열은 묵시적으로 System.Array 타입으로부터 파생된다 모든 배열은 묵시적으로 IEnumerable, ICollection, IList 인터페이스를 구현한다 배열을 전달하거나 반환 받기 인덱스가 0으로 시작하지 않는 배열 만들기 배열 접근 시의 성능에 대하여 안전하지 않은 배열 접근과 고정 크기 배열 Chapter 14 인터페이스 클래스와 인터페이스 상속 인터페이스 정의 인터페이스의 상속 인터페이스 메서드 호출에 대한 더 자세한 이야기 인터페이스 메서드의 묵시적 구현과 명시적 구현(그리고 그 이면에서 일어나는 일들) 제네릭 인터페이스 제네릭과 인터페이스 제약 같은 메서드 이름과 시그니처를 갖는 여러 개의 인터페이스 구현하기 명시적 인터페이스 메서드 구현으로 시 타입 안정성 향상시키기 명시적 인터페이스 메서드 구현에 있어 주의해야 할 점 디자인: 기본 클래스 또는 인터페이스? Chapter 15 델리게이트 델리게이트와의 첫 만남 델리게이트를 이용하여 정적 메서드 호출하기 델리게이트를 이용하여 인스턴스 메서드 호출하기 델리게이트에 대한 고찰 델리게이트를 이용하여 다중 콜백 메서드 호출하기 델리게이트 체인을 위한 C#의 지원 델리게이트 체인 호출을 더 세밀히 제어하기 C#에서의 델리게이트 구문 축약 문법 #1: Delegate 객체를 생성할 필요가 없다 축약 문법 #2: 콜백 메서드를 정의할 필요가 없다 축약 문법 #3: 콜백 메서드의 매개 변수를 굳이 지정할 필요는 없다 축약 문법 #4: 클래스의 로컬 변수를 콜백 메서드에 전달하기 위해 이 변수를 수동으로 래핑할 필요는 없다 델리게이트와 리플렉션 Chapter 16 제네릭 Framework 클래스 라이브러리에서 제공되는 제네릭 윈텔렉트(Wintellect)의 파워 컬렉션 라이브러리 제네릭 인프라 개방형과 폐쇄형 형식 제네릭 타입과 상속 제네릭 타입 식별 코드 급증 제네릭 인터페이스 제네릭 델리게이트 제네릭 메서드 제네릭 메서드와 타입 추정 제네릭과 다른 멤버들 검증 가능성과 제약 조건 주 제약 조건 보조 제약 조건 생성자 제약 조건 다른 검증 가능성 이슈들 Chapter 17 사용자 지정 특성 사용자 지정 특성 사용하기 나만의 사용자 특성 정의하기 특성 생성자와 필드/속성 데이터 타입 사용자 특성의 사용 여부를 판단하기 두 개의 특성 인스턴스 비교하기 특성 인스턴스를 생성하지 않고 사용자 특성의 사용 여부를 파악하기 조건부 특성 클래스들 Chapter 18 Nullable 값 타입 C#에서의 Nullable 값 타입 지원 C#의 Null 할당 연산자들 Nullable 값 타입에 대한 CLR의 특별 지원 Nullable 값 타입의 박싱 Nullable 값 타입의 언박싱 Nullable 값 타입의 GetType 메서드 호출 Nullable 값 타입의 인터페이스 메서드 호출 Part 5 CLR 활용 Chapter 19 예외 예외 처리의 혁신 예외 처리의 구조 try 블록 catch 블록 finally 블록 공통 언어 명세와 비공통 언어 명세 예외 구체적으로 예외란 뭔가? System.Exception 클래스 FCL에 정의된 예외 클래스 예외 생성하기 자신만의 예외 클래스 정의하기 예외 올바르게 사용하기 메서드 인자의 검증 finally 블록 아낌없이 사용하기 모든 예외를 처리하지는 말자 자연스럽게 예외 복구하기 (처리되지 않은 예외 발생으로 인하여) 완료되지 못한 작업으로부터 복구하기 “계약”을 유지하기 위해 구체적인 구현 내용 감추기 예외 처리 관련 성능 문제 처리되지 않은 예외 예외 스택 추적 예외 디버깅 Chapter 20 자동 메모리 관리(가비지 수집) 가비지 수집 플랫폼에 의한 기본 동작 이해하기 관리되는 힙에 리소스 할당하기 가비지 수집 알고리즘 가비지 수집 디버깅 네이티브 리소스를 반환하기 위해서 Finalization 사용하기 CriticalFinalizerObject 타입을 이용한 Finalization 실행 보장 SafeHandle 타입과 하위 클래스들 SafeHandle 타입을 이용한 비 관리 코드의 사용 관리되는 리소스 반환을 위해서 Finalization 사용하기 무엇이 Finalize 메서드를 호출하도록 하나 Finalization의 내부 동작 Dispose 패턴: 객체 메모리 반환 강요하기 Dispose 패턴이 구현된 객체/타입 사용하기 C# 언어의 using 문 주의해야 할 종속 사항 객체의 수명 직접 모니터링하고 제어하기 객체의 부활 세대(Generations) 네이티브 리소스를 위한 가비지 수집의 기능 대용량 메모리를 필요로 하는 작업의 성공 여부 가늠해 보기 가비지 수집기, 프로그램적으로 제어하기 기타 가비지 수집기 성능과 관련된 사항 동기화가 필요 없는 메모리 할당 확장 가능한 병렬 수집 동시 진행형 수집 대용량 객체 가비지 수집 모니터링 Chapter 21 CLR 호스팅과 AppDomain CLR 호스팅 AppDomain AppDomain간 객체 액세스하기 AppDomain 언로딩 호스트에서 AppDomain 이용하기 콘솔 및 Windows Forms 어플리케이션 Microsoft 인터넷 익스플로러 Microsoft ASP.NET의 Web Forms과 XML 웹서비스 프로그램 어플리케이션 Microsoft SQL Server 2005 미래 그리고 개발자의 상상 고급 호스트 제어 관리되는 코드에 의한 CLR 관리 강력한 호스트 어플리케이션 구현 원래의 스레드로 복귀하는 방법 Chapter 22 어셈블리 로딩과 리플렉션 어셈블리 로딩 리플렉션을 이용한 동적 확장 가능한 어플리케이션의 구현 리플렉션 성능 어셈블리에 정의된 타입 정보 읽기 타입 객체는 정확히 무엇인가? 예외 타입들의 트리 구조를 표현하는 어플리케이션 빌드하기 타입의 인스턴스 생성하기 Add-In 기능을 지원하는 어플리케이션 디자인 리플렉션을 이용해서 타입 멤버 접근하기 타입 멤버 확인하기 BindingFlags: 반환되는 멤버 종류 필터링하기 타입의 인터페이스 정보 구하기 타입의 멤버 호출하기 한 번 바인드로 여러 번 호출 바인딩 핸들을 이용해서 워킹셋 줄이기 Chapter 23 비동기 작업 수행 CLR의 Windows 스레드 사용 효과적인 스레드의 사용 CLR의 스레드 풀 스레드 풀의 최대 스레드 개수 스레드 풀을 이용한 비동기 계산 작업 수행하기 전용 스레드를 이용한 비동기 계산 작업 수행하기 비동기 계산 작업 주기적으로 수행하기 세 가지 종류의 Timer 비동기 프로그램 모델 소개 APM을 이용한 비동기 I/O 작업 수행하기 APM의 세 가지 랑데부(Rendezvous) 테크닉 APM의 작업 완료 대기 랑데부 테크닉 APM의 폴링(Polling) 랑데부 테크닉 APM의 콜백 랑데부 테크닉 APM을 이용한 비동기 계산 작업 수행하기 APM과 예외 APM에 관한 주의할 사항 실행 콘텍스트 Chapter 24 스레드 동기화 메모리 일관성, 휘발성 메모리 액세스 그리고 휘발성 필드들 휘발성 읽기와 쓰기 휘발성 필드(Volatile Field)에 대한 C#의 지원 Interlocked 메서드 Monitor 클래스와 동기화 블록 “Great” 아이디어 “Great” 아이디어의 구현 Monitor 클래스를 이용하여 동기화 블록 조작하기 Microsoft가 의도한 동기화 방법 C#의 lock 문으로 코드 단순화하기 Microsoft가 의도한 정적 멤버의 동기화 방법 결국 “Great” 아이디어가 그다지 “Great” 하지 않은 이유 유명한 DCL 기술 ReaderWriterLock 클래스 관리 코드에서 Windows 커널 객체 사용하기 단일 커널 객체가 신호를 받았을 때의 메서드 호출 찾아보기 |
|
공용 언어 런타임(CLR)과 .NET Framework의 여러 복잡한 기능을 상세하게 파고들어 마스터해보자. 필자는 최고 수준의 프로그램 전문가이자 Microsoft의 .NET 팀을 컨설팅했으며, 이 책에 포함된 가이드 내용은 모든 종류의 어플리케이션(Microsoft ASP.NET, Windows Forms, Microsoft SQL Server , 웹 서비스와 콘솔 어플리케이션)을 개발하는 개발자들에게 꼭 필요한 내용들로 채워져 있다. 독자는 이 책의 단계별 실습 정보와 C# 코드 샘플을 통해서 각 장의 주요 주제를 쉽게 이해할 수 있을 것이며, 고성능의 어플리케이션을 효과적으로 개발할 수 있을 것이다.
이 책에 포함된 내용 : >> 어플리케이션, 컴포넌트, 공유 어셈블리의 빌드, 배포, 관리, 버전에 대한 내용 >> 상수, 필드, 생성자, 메서드, 속성, 이벤트를 이용한 타입 디자인 >> 열거형, 배열, 문자열과 같은 CLR의 특수 타입을 이용한 효과적인 작업 >> 콜백 함수를 표현하기 위한 델리게이트의 선언, 생성, 사용 >> 인터페이스와 제네릭을 이용한 재사용 알고리즘의 정의 및 사용 >> 사용자 특성의 정의와 적용 >> 예외 처리를 이용한 강력하고, 견고하면서 안전한 컴포넌트의 빌드 >> 가비지 수집기를 이용한 자동 메모리관리 메커니즘과 네이티브 리소스와의 작업 >> CLR 호스팅, AppDomain, 어셈블리 로딩 그리고 리플렉션을 적용하여 동적 확장 가능한 어플리케이션 디자인 |