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