목차
CHAPTER 1. .NET에 담긴 철학
   현재 상황 이해하기 ... 46
   .NET 솔루션 ... 50
   .NET 블록의 설계(CLR, CTS 그리고 CLS) ... 51
   .NET 지원 프로그래밍 언어들 ... 53
   VB .NET의 포장 뜯어보기 ... 56
   .NET 바이너리(혹은 어셈블리)가 뭐지? ... 57
   MSIL(Microsoft Intermediate Language)이 하는 일 ... 58
   메타데이터가 하는 일 ... 62
   IL을 특정 플랫폼의 명령어 집합 형태로 컴파일 하기 ... 63
   .NET 타입과 .NET 네임스페이스 ... 64
   CLR(Common Language Runtime) 이해하기 ... 65
   CTS(Common Type System) 이해하기 ... 66
   CLS(Common Language specification) 이해하기 ... 71
   네임스페이스 사용하기 ... 73
   .NET 네임스페이스와 함께 여행을! ... 74
   외부 어셈블리 참조하기 ... 77
   조금 더 네임스페이스를 파보자 ... 78
   요약 ... 85
CHAPTER 2. VB .NET 애플리케이션
   명령 행 컴파일러로 VB .NET 애플리케이션 만들기 ... 88
   처음으로 만드는 VB .NET 애플리케이션 ... 89
   Visual Studio .NET IDE로 VB .NET 애플리케이션 만들기 ... 94
   여러분의 VS .NET Test 애플리케이션 만들기 ... 98
   VB .NET 프로젝트 구성하기 ... 100
   속성 창(Properties Window) ... 104
   약간의 코드 추가해 보기 ... 105
   XML 관련 편집기 ... 109
   VB 6.0에 무슨 일이? ... 112
   VB 6.0 프로젝트를 VB .NET으로 바꾸기! ... 116
   Microsoft.VisualBasic.Compatability.VB6 네임스페이스 ... 119
   업그레이드를 해야 하는가? ... 119
   요약 ... 120
CHAPTER 3. VB .NET 언어 기초 다지기
   Module 타입의 역할 ... 122
   Main 메소드 ... 124
   데이터 타입과 변수의 선언 ... 125
   System 데이터 타입 알아보기 ... 129
   데이터 형 변환(Data Type Conversions) ... 132
   인접 연산자(Concatenation Operators) ... 134
   Console 클래스로 간단한 입·출력 배워보기 ... 135
   VB .NET의 문자열 형식 ... 136
   간단한 VB .NET 클래스 해부하기 ... 138
   객체 만들기 : 생성자가 뭐지? ... 139
   디폴트 값 ... 144
   프로그램 상수(Constants) 정의하기 ... 146
   값 타입(Value Type)과 참조 타입(Reference Type) 이해하기 ... 148
   System.Object는 우두머리 ... 153
   VB .NET의 반복문 ... 160
   VB .NET 제어문 ... 164
   그 밖의 VB .NET 연산자들 ... 166
   커스텀 클래스 메소드 정의하기 ... 167
   메소드 매개변수 수정자(ByRef와 ByVal) ... 173
shared 메소드 ... 179
   Static(Shared가 아닌) 데이터 ... 183
   VB .NET의 배열 조작 ... 185
   VB .NET의 문자열 조작 ... 190
   VB .NET 열거형 ... 193
   VB .NET의 구조체 ... 198
   커스텀 네임스페이스 정의하기 ... 200
   요약 ... 205
CHAPTER 4. VB .NET과 객체지향 프로그래밍
   VB .NET의 객체지향 관련 키워드들 ... 208
   VB .NET 클래스의 정의 ... 209
   객체지향 프로그래밍(OOP, Object Oriented Programming)의 세 기둥 ... 217
   첫 번째 이야기 : VB .NET의 캡슐화(Encapsulation) ... 223
   가상 캡슐화(Pseudo-Encapsulation) : 읽기 전용(Read_Only)의 필드 만들기 ... 231
   두 번째 이야기 : VB .NET의 상속(Inheritance) 지원 ... 233
   우리끼리의 비밀이야! : 'Protected' 키워드 ... 237
   중첩된 타입 정의(Nested Type Definitions) ... 244
   마지막 세 번째 이야기 : VB .NET의 다형성 지원 ... 245
   클래스 타입의 캐스팅(CType) ... 255
   예외 처리(Exception Handling) ... 257
   객체의 수명(lifetime)은 어디까지? ... 268
   객체 참조 끝내기(Finalizing) ... 270
   임시적인 소멸 메소드(Ad Hoc Destruction Method) ... 272
   가비지 컬렉터의 상호작용 ... 273
   요약 ... 279
CHAPTER 5. 인터페이스(Interfaces)와 컬렉션(Collections)
   인터페이스 기반 프로그래밍 이해하기 ... 282
   커스텀 열거형 만들기(IEnumerabled과 IEnumerator) ... 296
   복제 가능한 객체 만들기(ICloneable) ... 300
   객체 비교하기(IComparable) ... 306
   System.Collections 네임스페이스 탐험하기 ... 312
   요약 ... 318
CHAPTER 6. 델리케이트(Delegate), 이벤트(Enevt), 그리고 콜백 인터페이스(Callback interfaces)
   VB 6.0의 이벤트에 대한 짧은 복습 ... 320
   이벤트 인터페이스 디자인하기 ... 324
   VB .NET의 델리게이트(Delegate) 키워드 ... 328
   간단한 예제 프로그램 ... 331
   좀더 정교한 델리게이트 예제 만들기 ... 334
   이벤트 이해하기(와 사용하기) ... 344
   요약 ... 353
CHAPTER 7. 어셈블리(Assembly), 쓰레드(Thread)와 AppDomain
   COM 바이너리의 문제점들 ... 356
   .NET 어셈블리에 대해 간단하게 살펴보기 ... 359
   테스트를 위한 단일 파일 어셈블리 만들어 보기 ... 367
   VB .NET 클라이언트 애플리케이션 ... 371
   C 클라이언트 애플리케이션 ... 372
   교차-언어 상속 ... 374
   CarLibrary의 매니페스트 살펴보기 ... 379
   CarLibrary의 타입들에 대해 살펴보기 ... 383
   다중 파일 어셈블리 만들기 ... 385
   전용 어셈블리(Private assembly)에 대해 이해하기 ... 391
   프로빙(Probing)에 대하여 ... 393
   공유 어셈블리 이해하기 ... 399
   공유 이름(Shared Name) 이해하기 ... 400
   공유 어셈블리 사용해 보기 ... 406
   .NET의 버전 정책 이해하기 ... 407
   버전 정보 기록하기 ... 408
   2.0 버전의 SaredAssembly 만들기 ... 411
   커스텀 버전 표시하기 ... 412
   .NET 관리 도구 사용하기(mscorcfg.msc) ... 414
   Ngen.exe 유틸리트 ... 422
   전형적인 Win32 쓰레드 프로그래밍에 대한 복습 ... 423
   System.AppDomain 이해하기 ... 426
   System.Threading 네임스페이스 ... 429
   Thread에 이름 붙이기 ... 432
   병행성 제어로의 회귀 ... 436
   VB .NET의 'SyncLock' 키워드 ... 439
   System.Threading.Interlocked ... 441
   요약 ... 443
CHAPTER 8. 리플렉션(Reflection)과 애트리뷰트(Attribute)
   리플렉션(Reflection) 이해하기 ... 446
   System.Type 클래스 ... 446
   System.Reflection 네임스페이스에 대해 알아보기 ... 452
   어셈블리 동적으로 로딩하기 ... 453
   동적 호출 이해하기(늦은 바인딩) ... 458
   동적 어셈블리 이해하기와 만들어 보기 ... 462
   애트리뷰트 기반 프로그래밍 이해하기 ... 470
   커스텀 애트리뷰트 만들기 ... 473
   VB .NET의 'AssemblyInfo.vb' 파일 ... 478
   런타임에 애트리뷰트 찾아내기 ... 479
   요약 ... 480
CHAPTER 9. 보다 나은 윈도우 설계를 위하여 윈도우 폼(Windows Forms) 소개
   두 가지 GUI 네임스페이스 ... 482
   윈도우 폼 네임스페이스 살펴보기 ... 483
   직접 윈도우 폼 생성하기 ... 484
   Visual Studio .NET 윈도우 폼 프로젝트 작업 공간 설계 ... 487
   System.Windows.Forms.Application 클래스 ... 492
   폼의 계층 구조 ... 497
   Form의 기본 상속 기능 ... 497
   System.ComponentModel.Component 클래스 ... 498
   Control 클래스 ... 499
   폼의 스타일 설정하기 ... 501
   Control 이벤트 ... 504
   키보드 이벤트 처리하기 ... 510
   Control 클래스 다시 살펴보기 ... 512
   ScrollableControl 클래스 ... 515
   ContainerControl 클래스 ... 516
   Form 클래스 ... 517
   메뉴를 이용한 윈도우 폼 설계 ... 519
   메뉴 시스템 설계하기 ... 522
   Visual Studio .NET을 이용하여 메뉴 만들기 ... 529
   StatusBar 이해하기 ... 532
   Visual Studio .NET을 사용하여 상태바 만들기 ... 538
   ToolBar 만들기 ... 540
   디자인 타임에서 툴바 만들기 ... 545
   최소한의 완벽한 윈도우 폼 애플리케이션 ... 549
   시스템 레지스트리와 상호작용하기 ... 550
   이벤트 뷰어(Event Viewer)와 상호작용하기 ... 554
   MDI 애플리케이션 설계하기 ... 559
   요약 ... 565
CHAPTER 10. 보다 나은 페인팅 프레임워크(Painting Framework) 설계(GDI+)
   VB 6.0의 그래픽 프로그래밍 세계를 돌아보자 ... 568
   GDI+ 네임스페이스 살펴보기 ... 568
   System.Drawing 네임스페이스 살펴보기 ... 569
   GDI+ 프로젝트 작업 공간 구성하기 ... 572
   System.Drawing 유틸리트 타입 살펴보기 ... 572
   Paint 부분 이해하기 ... 577
   Graphics 클래스 이해하기 ... 581
   디폴트 GDI+ 좌표 시스템 ... 583
   색 설정하기 ... 587
   폰트 다루기 ... 590
   System.Drawing.Drawing2D 네임스페이스 살펴보기 ... 602
   펜을 이용한 작업하기 ... 604
   이미지 다루기 ... 619
   Dragging, Hit Testing 그리고 PictrueBox 컨트롤 ... 622
   .NET 리소스 형식 이해하기 ... 632
   System.Resources 네임스페이스 ... 633
   ResourccWriter 이용하기 ... 639
   ResourceManager 사용하기 ... 640
   Visual Studio .NET을 이용한 리소스 구성 자동 설정 ... 641
   요약 ... 644
CHAPTER 11. 윈도우 폼 컨트롤을 이용한 프로그래밍
   윈도우 폼 컨트롤 상속 관계 이해하기 ... 646
   폼에 컨트롤 추가하기(어려운 방법) ... 647
   폼에 컨트롤 추가하기(손쉽게 추가하는 방법) ... 651
   TextBox 컨트롤 ... 652
   강력한 Button 타입(그리고 ButtonBase 부모 클래스) 기능 살펴보기 ... 657
   CheckBox 사용하기 ... 660
   RadioButton과 GroupBox 사용하기 ... 662
   ListBox와 ComboBox ... 667
   텝 순서 설정하기 ... 672
   TrackBar 컨트롤 ... 674
   MonthCalendar 컨트롤 ... 677
   System.DataTime 타입에 대해 좀더 살펴보기 ... 680
   Spin 컨트롤 : DomainUpDown과 NumericUpDown ... 682
   Panel 컨트롤 사용하기 ... 684
   컨트롤에 툴팁 추가하기 ... 686
   ErrorProvider 사용하기 ... 688
   컨트롤의 앵커링(Anchoring) 기능 설정하기 ... 691
   컨트롤의 도킹(Docking) 기능 설정하기 ... 692
   커스텀 대화상자 만들기 ... 694
   Form의 상속 관계 ... 702
   커스텀 컨트롤 이해하기 ... 704
   Class, Control, UserControl 그리고 Component의 구분 ... 704
   커스텀 UserControl 만들기 ... 707
   이미지 만들기 ... 708
   디자인 타임 GUI 설계 ... 710
   디폴트 Public 부분 구성하기 ... 711
   커스텀 이벤트 정의하기 ... 713
   커스텀 프로터티 제공하기 ... 713
   애니메이션 다루기 ... 715
   VB .NET 클라이언트 애플리케이션 설계하기 ... 716
   System.ComponentModel 네임스페이스의 멤버 선택하기 ... 719
   디자인 타임에서 CarControl의 모습 업그레이드하기!! ... 720
   .NET(Data) 컴포넌트 설계 ... 723
   Cars 데이터베이스에 연결하기 ... 724
   커스텀 컴포넌트 사용하기 ... 726
   요약 ... 730
CHAPTER 12. 입출력(Input, Output)과 객체 직렬화(Object Serialization)
   System.IO 네임스페이스 살펴보기 ... 732
   Directory(Info)와 File(Info) 타입 ... 733
   DirectoryInfo 타입을 사용하여 파일 나열하기 ... 737
   DirectoryInfo 타입으로 서브디렉토리 만들기 ... 738
   Directory 클래스의 shared 멤버들 ... 740
   FileInfo 클래스 ... 742
   추상형의 Stream 클래스 ... 747
   StreamWriter와 StreamReader ... 751
   StringWriter에 대해 알아보기 ... 756
   StringReader에 대해 알아보기 ... 758
   바이너리 데이터 다루어 보기(BinaryReader와 BinaryWriter) ... 759
   .NET 프레임워크에서의 객체 영속성(Object Persistence) ... 764
   객체 그래프의 역할 ... 764
   직렬화를 하기 위해 객체 구성하기 ... 765
   바이너리 포맷터를 사용하여 직렬화하기 ... 770
   SOAP 포맷터를 사용하여 직렬화하기 ... 772
   커스텀 직렬화(와 ISerializable 인터페이스) ... 773
   윈도우 폼의 Car Logger 애플리케이션 ... 778
   요약 ... 785
CHAPTER 13. 비관리 코드(Unmanaged Code)와의 대화
   상호운용성에 대해 이해하기 ... 788
   아주 간단한 예제 : VB 6.0 COM 타입과 통신할 수 있는 VB .NET 애플리케이션 ... 789
   System.Runtime.InteropServices 네임스페이스 ... 792
   .NET의 COM에 대한 상호운용성 이해하기 ... 793
   COM IDL의 역할 ... 797
   타입 라이브러리 사용하기 ... 803
   생성된 어셈블리의 매니페스트 살펴보기 ... 807
   좀더 흥미로운 VB 6.0 COM 서버 만들어 보기 ... 809
   연결 어셈블리에 대해 알아보기 ... 812
   완전한 VB .NET 클라이언트 ... 817
   COM의 .NET에 대한 상호운용성 이해하기 ... 819
   CCW의 역할 ... 820
   '클래스 인터페이스(Class Interface)' 이해하기 ... 821
   여러분들만의 .NET 타입 만들기 ... 822
   타입 라이브러리 만들기와 .NET 타입 등록하기 ... 824
   타입 정보 살펴보기 ... 825
   OLE/COM 개체 뷰어를 사용하여 타입 살펴보기 ... 828
   등록된 목록들에 대해 알아보기 ... 829
   Visual Basic 6.0용 테스트 클라이언트 만들어 보기 ... 830
   COM과 .NET 사이의 타입 매핑에 대해서... ... 832
   생성된 IDL 제어하기(나 Tlbexp.exe 가지고 놀아 보기) ... 836
   COM+ 컴포넌트 서비스에 대하여... ... 838
   COM+를 지원하는 타입 만들기 ... 842
   COM+를 지원하는 VB .NET 타입 만들기 ... 843
   구성 요소 서비스 탐색기 알아보기 ... 846
   요약 ... 847
CHAPTER 14. ADO.NET을 이용한 데이터 접근
   ADO.NET의 필요성 ... 850
   ADO.NET 네임스페이스 이해하기 ... 852
   System.Data의 타입들 ... 854
   DataColumn 타입 살펴보기 ... 855
   DataRow 타입 살펴보기 ... 862
   DataTable 세부사항 살펴보기 ... 867
   완전한 DataTable 설계하기 ... 868
   DataView 타입 이해하기 ... 878
   DataSet의 역할 이해하기 ... 881
   DataRelation 타입을 이용하여 릴레이션 표현하기 ... 887
   XML 기반의 데이터 셋 읽고 쓰기 ... 892
   간단한 테스트 데이터베이스 만들기 ... 895
   ADO.NET 관리화 프로바이더(Managed Providers) ... 896
   OleDb 관리화 프로바이더 사용하기 ... 897
   OleDbDataAdapter 타입 역할 이해하기 ... 908
   SQL 관리화 프로바이더(Managed Provider) 사용하기 ... 911
   SQL 명령어 자동 생성(Autoenerate)하기 ... 918
   여러 개의 테이블을 갖는 데이터 셋 채우기(DataRelation 추가하기) ... 920
   마법사 사용하기 ... 923
   요약 ... 931
CHAPTER 15. 웹 개발과 ASP.NET
   웹 애플리케이션과 웹 서버 ... 934
   HTML 문서의 기본 구조 ... 937
   HTML의 텍스트 표시 형식 태그들 ... 939
   Visual Studio .NET HTML 에디터 ... 942
   HTML 폼 만들기 ... 943
   클라이언트 측 스크립트의역할 ... 949
   폼 데이터를 전송하기(GET과 POST) ... 954
   기존 ASP(Active Server Page) 페이지 만들기 ... 955
   첫 번째 ASP.NET 애플리케이션 만들어 보기 ... 960
   기존 ASP의 문제점 ... 961
   ASP.NET의 장점 ... 962
   ASP.NET 네임스페이스 ... 962
   간단한 VB .NET 웹 애플리케이션 만들기 ... 964
   ASP.NET 웹 애플리케이션의 구조 ... 969
   애플리케이션(Application)과 세션(Session)의 차이 이해하기 ... 977
   Globals.asax 파일과 HttpApplication 타입 ... 981
   Page를 상속받은 클래스의 라이프 사이클 ... 982
   뷰스테이트(ViewState) 이해하기 ... 986
   ASP.NET 애플리케이션 디버깅하기와 추적(trace)하기 ... 988
   웹 폼 컨트롤(Web Form)의 장점 ... 990
   웹 폼 컨트롤 알아보기 ... 992
   웹 폼 컨트롤의 범주 ... 995
   서버 측에서 웹 폼 컨트롤 이벤트 핸들링 하기 ... 1006
   ASP.NET 예제 애플리케이션 완성하기 ... 1011
   요약 ... 1019
CHAPTER 16. 웹 서비스 만들기
   웹 서비스의 역할 이해하기 ... 1022
   웹 서비스의 해부 ... 1023
   웹 서비스 네임스페이스의 개요 ... 1024
   System.Web.Services 네임스페이스에 대해서 알아보기 ... 1024
   간단한 웹 서비스 만들기 ... 1025
   WebMethodAttribute 타입 ... 1031
   WSDL(Web Service Description Language) 이해하기 ... 1036
   웹 서비스 프로토콜 ... 1039
   WSDL을 VB .NET 코드로(프록시 만들기) ... 1044
   어셈블리 만들기 ... 1048
   클라이언트 만들기 ... 1049
   VB .NET으로 프록시 만들기 ... 1050
   웹 서비스와 웹 클라이언트에 관한 좀더 재미있는 부분들 ... 1052
   커스텀 타입 직렬화하기(좀더 자세히) ... 1057
   디스커버리 서비스 프로토콜(Discovery Service Protocol) 이해하기 ... 1060
   요약 ... 1061
찾아보기 ... 1063
CHAPTER 1. .NET에 담긴 철학
   현재 상황 이해하기 ... 46
   .NET 솔루션 ... 50
   .NET 블록의 설계(CLR, CTS 그리고 CLS) ... 51
   .NET 지원 프로그래밍 언어들 ... 53
   VB .NET의 포장 뜯어보기 ... 56
   .NET 바이너리(혹은 어셈블리)가 뭐지? ... 57
   MSIL(Microsoft Intermediate Language)이 하는 일 ... 58
   메타데이터가 하는 일 ... 62
   IL을 특정 플랫폼의 명령어 집합 형태로 컴파일 하기 ... 63
   .NET 타입과 .NET 네임스페이스 ... 64
   CLR(Common Language Runtime) 이해하기 ... 65
   CTS(Common Type System) 이해하기 ... 66
   CLS(Common Language specification) 이해하기 ... 71
   네임스페이스 사용하기 ... 73
   .NET 네임스페이스와 함께 여행을! ... 74
   외부 어셈블리 참조하기 ... 77
   조금 더 네임스페이스를 파보자 ... 78
   요약 ... 85
CHAPTER 2. VB .NET 애플리케이션
   명령 행 컴파일러로 VB .NET 애플리케이션 만들기 ... 88
   처음으로 만드는 VB .NET 애플리케이션 ... 89
   Visual Studio .NET IDE로 VB .NET 애플리케이션 만들기 ... 94
   여러분의 VS .NET Test 애플리케이션 만들기 ... 98
   VB .NET 프로젝트 구성하기 ... 100
   속성 창(Properties Window) ... 104
   약간의 코드 추가해 보기 ... 105
   XML 관련 편집기 ... 109
   VB 6.0에 무슨 일이? ... 112
   VB 6.0 프로젝트를 VB .NET으로 바꾸기! ... 116
   Microsoft.VisualBasic.Compatability.VB6 네임스페이스 ... 119
   업그레이드를 해야 하는가? ... 119
   요약 ... 120
CHAPTER 3. VB .NET 언어 기초 다지기
   Module 타입의 역할 ... 122
   Main 메소드 ... 124
   데이터 타입과 변수의 선언 ... 125
   System 데이터 타입 알아보기 ... 129
   데이터 형 변환(Data Type Conversions) ... 132
   인접 연산자(Concatenation Operators) ... 134
   Console 클래스로 간단한 입·출력 배워보기 ... 135
   VB .NET의 문자열 형식 ... 136
   간단한 VB .NET 클래스 해부하기 ... 138
   객체 만들기 : 생성자가 뭐지? ... 139
   디폴트 값 ... 144
   프로그램 상수(Constants) 정의하기 ... 146
   값 타입(Value Type)과 참조 타입(Reference Type) 이해하기 ... 148
   System.Object는 우두머리 ... 153
   VB .NET의 반복문 ... 160
   VB .NET 제어문 ... 164
   그 밖의 VB .NET 연산자들 ... 166
   커스텀 클래스 메소드 정의하기 ... 167
   메소드 매개변수 수정자(ByRef와 ByVal) ... 173
shared 메소드 ... 179
   Static(Shared가 아닌) 데이터 ... 183
   VB .NET의 배열 조작 ... 185
   VB .NET의 문자열 조작 ... 190
   VB .NET 열거형 ... 193
   VB .NET의 구조체 ... 198
   커스텀 네임스페이스 정의하기 ... 200
   요약 ... 205
CHAPTER 4. VB .NET과 객체지향 프로그래밍
   VB .NET의 객체지향 관련 키워드들 ... 208
   VB .NET 클래스의 정의 ... 209
   객체지향 프로그래밍(OOP, Object Oriented Programming)의 세 기둥 ... 217
   첫 번째 이야기 : VB .NET의 캡슐화(Encapsulation) ... 223
   가상 캡슐화(Pseudo-Encapsulation) : 읽기 전용(Read_Only)의 필드 만들기 ... 231
   두 번째 이야기 : VB .NET의 상속(Inheritance) 지원 ... 233
   우리끼리의 비밀이야! : 'Protected' 키워드 ... 237
   중첩된 타입 정의(Nested Type Definitions) ... 244
   마지막 세 번째 이야기 : VB .NET의 다형성 지원 ... 245
   클래스 타입의 캐스팅(CType) ... 255
   예외 처리(Exception Handling) ... 257
   객체의 수명(lifetime)은 어디까지? ... 268
   객체 참조 끝내기(Finalizing) ... 270
   임시적인 소멸 메소드(Ad Hoc Destruction Method) ... 272
   가비지 컬렉터의 상호작용 ... 273
   요약 ... 279
CHAPTER 5. 인터페이스(Interfaces)와 컬렉션(Collections)
   인터페이스 기반 프로그래밍 이해하기 ... 282
   커스텀 열거형 만들기(IEnumerabled과 IEnumerator) ... 296
   복제 가능한 객체 만들기(ICloneable) ... 300
   객체 비교하기(IComparable) ... 306
   System.Collections 네임스페이스 탐험하기 ... 312
   요약 ... 318
CHAPTER 6. 델리케이트(Delegate), 이벤트(Enevt), 그리고 콜백 인터페이스(Callback interfaces)
   VB 6.0의 이벤트에 대한 짧은 복습 ... 320
   이벤트 인터페이스 디자인하기 ... 324
   VB .NET의 델리게이트(Delegate) 키워드 ... 328
   간단한 예제 프로그램 ... 331
   좀더 정교한 델리게이트 예제 만들기 ... 334
   이벤트 이해하기(와 사용하기) ... 344
   요약 ... 353
CHAPTER 7. 어셈블리(Assembly), 쓰레드(Thread)와 AppDomain
   COM 바이너리의 문제점들 ... 356
   .NET 어셈블리에 대해 간단하게 살펴보기 ... 359
   테스트를 위한 단일 파일 어셈블리 만들어 보기 ... 367
   VB .NET 클라이언트 애플리케이션 ... 371
   C 클라이언트 애플리케이션 ... 372
   교차-언어 상속 ... 374
   CarLibrary의 매니페스트 살펴보기 ... 379
   CarLibrary의 타입들에 대해 살펴보기 ... 383
   다중 파일 어셈블리 만들기 ... 385
   전용 어셈블리(Private assembly)에 대해 이해하기 ... 391
   프로빙(Probing)에 대하여 ... 393
   공유 어셈블리 이해하기 ... 399
   공유 이름(Shared Name) 이해하기 ... 400
   공유 어셈블리 사용해 보기 ... 406
   .NET의 버전 정책 이해하기 ... 407
   버전 정보 기록하기 ... 408
   2.0 버전의 SaredAssembly 만들기 ... 411
   커스텀 버전 표시하기 ... 412
   .NET 관리 도구 사용하기(mscorcfg.msc) ... 414
   Ngen.exe 유틸리트 ... 422
   전형적인 Win32 쓰레드 프로그래밍에 대한 복습 ... 423
   System.AppDomain 이해하기 ... 426
   System.Threading 네임스페이스 ... 429
   Thread에 이름 붙이기 ... 432
   병행성 제어로의 회귀 ... 436
   VB .NET의 'SyncLock' 키워드 ... 439
   System.Threading.Interlocked ... 441
   요약 ... 443
CHAPTER 8. 리플렉션(Reflection)과 애트리뷰트(Attribute)
   리플렉션(Reflection) 이해하기 ... 446
   System.Type 클래스 ... 446
   System.Reflection 네임스페이스에 대해 알아보기 ... 452
   어셈블리 동적으로 로딩하기 ... 453
   동적 호출 이해하기(늦은 바인딩) ... 458
   동적 어셈블리 이해하기와 만들어 보기 ... 462
   애트리뷰트 기반 프로그래밍 이해하기 ... 470
   커스텀 애트리뷰트 만들기 ... 473
   VB .NET의 'AssemblyInfo.vb' 파일 ... 478
   런타임에 애트리뷰트 찾아내기 ... 479
   요약 ... 480
CHAPTER 9. 보다 나은 윈도우 설계를 위하여 윈도우 폼(Windows Forms) 소개
   두 가지 GUI 네임스페이스 ... 482
   윈도우 폼 네임스페이스 살펴보기 ... 483
   직접 윈도우 폼 생성하기 ... 484
   Visual Studio .NET 윈도우 폼 프로젝트 작업 공간 설계 ... 487
   System.Windows.Forms.Application 클래스 ... 492
   폼의 계층 구조 ... 497
   Form의 기본 상속 기능 ... 497
   System.ComponentModel.Component 클래스 ... 498
   Control 클래스 ... 499
   폼의 스타일 설정하기 ... 501
   Control 이벤트 ... 504
   키보드 이벤트 처리하기 ... 510
   Control 클래스 다시 살펴보기 ... 512
   ScrollableControl 클래스 ... 515
   ContainerControl 클래스 ... 516
   Form 클래스 ... 517
   메뉴를 이용한 윈도우 폼 설계 ... 519
   메뉴 시스템 설계하기 ... 522
   Visual Studio .NET을 이용하여 메뉴 만들기 ... 529
   StatusBar 이해하기 ... 532
   Visual Studio .NET을 사용하여 상태바 만들기 ... 538
   ToolBar 만들기 ... 540
   디자인 타임에서 툴바 만들기 ... 545
   최소한의 완벽한 윈도우 폼 애플리케이션 ... 549
   시스템 레지스트리와 상호작용하기 ... 550
   이벤트 뷰어(Event Viewer)와 상호작용하기 ... 554
   MDI 애플리케이션 설계하기 ... 559
   요약 ... 565
CHAPTER 10. 보다 나은 페인팅 프레임워크(Painting Framework) 설계(GDI+)
   VB 6.0의 그래픽 프로그래밍 세계를 돌아보자 ... 568
   GDI+ 네임스페이스 살펴보기 ... 568
   System.Drawing 네임스페이스 살펴보기 ... 569
   GDI+ 프로젝트 작업 공간 구성하기 ... 572
   System.Drawing 유틸리트 타입 살펴보기 ... 572
   Paint 부분 이해하기 ... 577
   Graphics 클래스 이해하기 ... 581
   디폴트 GDI+ 좌표 시스템 ... 583
   색 설정하기 ... 587
   폰트 다루기 ... 590
   System.Drawing.Drawing2D 네임스페이스 살펴보기 ... 602
   펜을 이용한 작업하기 ... 604
   이미지 다루기 ... 619
   Dragging, Hit Testing 그리고 PictrueBox 컨트롤 ... 622
   .NET 리소스 형식 이해하기 ... 632
   System.Resources 네임스페이스 ... 633
   ResourccWriter 이용하기 ... 639
   ResourceManager 사용하기 ... 640
   Visual Studio .NET을 이용한 리소스 구성 자동 설정 ... 641
   요약 ... 644
CHAPTER 11. 윈도우 폼 컨트롤을 이용한 프로그래밍
   윈도우 폼 컨트롤 상속 관계 이해하기 ... 646
   폼에 컨트롤 추가하기(어려운 방법) ... 647
   폼에 컨트롤 추가하기(손쉽게 추가하는 방법) ... 651
   TextBox 컨트롤 ... 652
   강력한 Button 타입(그리고 ButtonBase 부모 클래스) 기능 살펴보기 ... 657
   CheckBox 사용하기 ... 660
   RadioButton과 GroupBox 사용하기 ... 662
   ListBox와 ComboBox ... 667
   텝 순서 설정하기 ... 672
   TrackBar 컨트롤 ... 674
   MonthCalendar 컨트롤 ... 677
   System.DataTime 타입에 대해 좀더 살펴보기 ... 680
   Spin 컨트롤 : DomainUpDown과 NumericUpDown ... 682
   Panel 컨트롤 사용하기 ... 684
   컨트롤에 툴팁 추가하기 ... 686
   ErrorProvider 사용하기 ... 688
   컨트롤의 앵커링(Anchoring) 기능 설정하기 ... 691
   컨트롤의 도킹(Docking) 기능 설정하기 ... 692
   커스텀 대화상자 만들기 ... 694
   Form의 상속 관계 ... 702
   커스텀 컨트롤 이해하기 ... 704
   Class, Control, UserControl 그리고 Component의 구분 ... 704
   커스텀 UserControl 만들기 ... 707
   이미지 만들기 ... 708
   디자인 타임 GUI 설계 ... 710
   디폴트 Public 부분 구성하기 ... 711
   커스텀 이벤트 정의하기 ... 713
   커스텀 프로터티 제공하기 ... 713
   애니메이션 다루기 ... 715
   VB .NET 클라이언트 애플리케이션 설계하기 ... 716
   System.ComponentModel 네임스페이스의 멤버 선택하기 ... 719
   디자인 타임에서 CarControl의 모습 업그레이드하기!! ... 720
   .NET(Data) 컴포넌트 설계 ... 723
   Cars 데이터베이스에 연결하기 ... 724
   커스텀 컴포넌트 사용하기 ... 726
   요약 ... 730
CHAPTER 12. 입출력(Input, Output)과 객체 직렬화(Object Serialization)
   System.IO 네임스페이스 살펴보기 ... 732
   Directory(Info)와 File(Info) 타입 ... 733
   DirectoryInfo 타입을 사용하여 파일 나열하기 ... 737
   DirectoryInfo 타입으로 서브디렉토리 만들기 ... 738
   Directory 클래스의 shared 멤버들 ... 740
   FileInfo 클래스 ... 742
   추상형의 Stream 클래스 ... 747
   StreamWriter와 StreamReader ... 751
   StringWriter에 대해 알아보기 ... 756
   StringReader에 대해 알아보기 ... 758
   바이너리 데이터 다루어 보기(BinaryReader와 BinaryWriter) ... 759
   .NET 프레임워크에서의 객체 영속성(Object Persistence) ... 764
   객체 그래프의 역할 ... 764
   직렬화를 하기 위해 객체 구성하기 ... 765
   바이너리 포맷터를 사용하여 직렬화하기 ... 770
   SOAP 포맷터를 사용하여 직렬화하기 ... 772
   커스텀 직렬화(와 ISerializable 인터페이스) ... 773
   윈도우 폼의 Car Logger 애플리케이션 ... 778
   요약 ... 785
CHAPTER 13. 비관리 코드(Unmanaged Code)와의 대화
   상호운용성에 대해 이해하기 ... 788
   아주 간단한 예제 : VB 6.0 COM 타입과 통신할 수 있는 VB .NET 애플리케이션 ... 789
   System.Runtime.InteropServices 네임스페이스 ... 792
   .NET의 COM에 대한 상호운용성 이해하기 ... 793
   COM IDL의 역할 ... 797
   타입 라이브러리 사용하기 ... 803
   생성된 어셈블리의 매니페스트 살펴보기 ... 807
   좀더 흥미로운 VB 6.0 COM 서버 만들어 보기 ... 809
   연결 어셈블리에 대해 알아보기 ... 812
   완전한 VB .NET 클라이언트 ... 817
   COM의 .NET에 대한 상호운용성 이해하기 ... 819
   CCW의 역할 ... 820
   '클래스 인터페이스(Class Interface)' 이해하기 ... 821
   여러분들만의 .NET 타입 만들기 ... 822
   타입 라이브러리 만들기와 .NET 타입 등록하기 ... 824
   타입 정보 살펴보기 ... 825
   OLE/COM 개체 뷰어를 사용하여 타입 살펴보기 ... 828
   등록된 목록들에 대해 알아보기 ... 829
   Visual Basic 6.0용 테스트 클라이언트 만들어 보기 ... 830
   COM과 .NET 사이의 타입 매핑에 대해서... ... 832
   생성된 IDL 제어하기(나 Tlbexp.exe 가지고 놀아 보기) ... 836
   COM+ 컴포넌트 서비스에 대하여... ... 838
   COM+를 지원하는 타입 만들기 ... 842
   COM+를 지원하는 VB .NET 타입 만들기 ... 843
   구성 요소 서비스 탐색기 알아보기 ... 846
   요약 ... 847
CHAPTER 14. ADO.NET을 이용한 데이터 접근
   ADO.NET의 필요성 ... 850
   ADO.NET 네임스페이스 이해하기 ... 852
   System.Data의 타입들 ... 854
   DataColumn 타입 살펴보기 ... 855
   DataRow 타입 살펴보기 ... 862
   DataTable 세부사항 살펴보기 ... 867
   완전한 DataTable 설계하기 ... 868
   DataView 타입 이해하기 ... 878
   DataSet의 역할 이해하기 ... 881
   DataRelation 타입을 이용하여 릴레이션 표현하기 ... 887
   XML 기반의 데이터 셋 읽고 쓰기 ... 892
   간단한 테스트 데이터베이스 만들기 ... 895
   ADO.NET 관리화 프로바이더(Managed Providers) ... 896
   OleDb 관리화 프로바이더 사용하기 ... 897
   OleDbDataAdapter 타입 역할 이해하기 ... 908
   SQL 관리화 프로바이더(Managed Provider) 사용하기 ... 911
   SQL 명령어 자동 생성(Autoenerate)하기 ... 918
   여러 개의 테이블을 갖는 데이터 셋 채우기(DataRelation 추가하기) ... 920
   마법사 사용하기 ... 923
   요약 ... 931
CHAPTER 15. 웹 개발과 ASP.NET
   웹 애플리케이션과 웹 서버 ... 934
   HTML 문서의 기본 구조 ... 937
   HTML의 텍스트 표시 형식 태그들 ... 939
   Visual Studio .NET HTML 에디터 ... 942
   HTML 폼 만들기 ... 943
   클라이언트 측 스크립트의역할 ... 949
   폼 데이터를 전송하기(GET과 POST) ... 954
   기존 ASP(Active Server Page) 페이지 만들기 ... 955
   첫 번째 ASP.NET 애플리케이션 만들어 보기 ... 960
   기존 ASP의 문제점 ... 961
   ASP.NET의 장점 ... 962
   ASP.NET 네임스페이스 ... 962
   간단한 VB .NET 웹 애플리케이션 만들기 ... 964
   ASP.NET 웹 애플리케이션의 구조 ... 969
   애플리케이션(Application)과 세션(Session)의 차이 이해하기 ... 977
   Globals.asax 파일과 HttpApplication 타입 ... 981
   Page를 상속받은 클래스의 라이프 사이클 ... 982
   뷰스테이트(ViewState) 이해하기 ... 986
   ASP.NET 애플리케이션 디버깅하기와 추적(trace)하기 ... 988
   웹 폼 컨트롤(Web Form)의 장점 ... 990
   웹 폼 컨트롤 알아보기 ... 992
   웹 폼 컨트롤의 범주 ... 995
   서버 측에서 웹 폼 컨트롤 이벤트 핸들링 하기 ... 1006
   ASP.NET 예제 애플리케이션 완성하기 ... 1011
   요약 ... 1019
CHAPTER 16. 웹 서비스 만들기
   웹 서비스의 역할 이해하기 ... 1022
   웹 서비스의 해부 ... 1023
   웹 서비스 네임스페이스의 개요 ... 1024
   System.Web.Services 네임스페이스에 대해서 알아보기 ... 1024
   간단한 웹 서비스 만들기 ... 1025
   WebMethodAttribute 타입 ... 1031
   WSDL(Web Service Description Language) 이해하기 ... 1036
   웹 서비스 프로토콜 ... 1039
   WSDL을 VB .NET 코드로(프록시 만들기) ... 1044
   어셈블리 만들기 ... 1048
   클라이언트 만들기 ... 1049
   VB .NET으로 프록시 만들기 ... 1050
   웹 서비스와 웹 클라이언트에 관한 좀더 재미있는 부분들 ... 1052
   커스텀 타입 직렬화하기(좀더 자세히) ... 1057
   디스커버리 서비스 프로토콜(Discovery Service Protocol) 이해하기 ... 1060
   요약 ... 1061
찾아보기 ... 1063
닫기