목차
Part 1. 업그레이드에 대한 소개
   Chapter 1. Visual Basic .NET은 Visual Basic 7 이상의 의미
      왜 호환성이 지원되지 않는가? ... 27
        신기능 추가 ... 27
        개발 언어 수정 ... 28
        개발 언어를 현대적으로 ... 29
      그래도 Visual Basic은 Visual Basic ... 29
        미묘한 차이 ... 30
        95%의 자동화된 업그레이드를 위한 계획 ... 31
      왜 업그레이드를 해야 하는가? ... 32
        개발 언어의 신기능들 ... 32
        윈도우 폼 ... 37
        새로운 웹 개발 기능들 ... 38
        더욱 향상된 개발 환경 ... 39
      Visual Basic은 Visual Basic 개발자에게 여전히 최상의 선택인가? ... 41
      결론 ... 43
   Chapter 2. Visual Basic 6과 Visual Basic .NET의 차이
      .NET Framework vs. ActiveX ... 46
        .NET Framework ... 47
        메모리 관리 ... 49
        형 정체성(Type Identity) ... 53
        스레딩 모델 ... 57
      개발 환경에서의 차이점 ... 58
        메뉴 편집기 ... 58
        도구 상자 ... 60
        속성 창 ... 62
        탭 순서 편집기 ... 63
      폼 패키지(Forms Packages) ... 64
        윈도우 폼의 단일 표준 ... 64
        한번의 수고로 두 개의 폼 패키지 이용 ... 64
      개발 언어의 차이점 ... 65
        모든 서브루틴 호출은 괄호로 처리되어야 한다 ... 68
        ByVal 또는 ByRef가 필요하다 ... 68
        이것이 나의 이벤트? ... 69
        배열은 하한이 0이어야 한다 ... 71
        고정 길이 문자열은 지원되지 않는다 ... 71
        Variant 데이터 형은 제거되었다 ... 72
        중첩 범위(Nested Scopes)에서 선언된 변수의 가시성은 한정되어 있다 ... 73
      디버거에서 바뀐 점 ... 74
        Edit and Continue 기능이 없다 ... 74
        에러 발생 후에는 계속 진행할 수 없다 ... 75
        중단 모드에서는 다시 그려지지 않는다 ... 75
      결론 ... 76
   Chapter 3. 업그레이드 옵션
      업그레이드는 필수가 아닌 선택 ... 78
        업그레이드하지 않는 경우 ... 78
        부분적인 업그레이드를 하는 경우 ... 79
        완전히 업그레이드시키는 경우 ... 80
        상호 연동성을 부여한 업그레이드 ... 80
      업그레이드 마법사의 역할 ... 81
        업그레이드 보고서 ... 81
      테스트 ... 82
      Visual Basic 6 이전 버전에서의 업그레이드 ... 83
      업그레이드할 프로젝트 선택 ... 84
        장점 평가하기 ... 85
        업그레이드에 필요한 요소 평가하기 ... 90
      업그레이드 계획 만들기 ... 93
      결론 ... 94
   Chapter 4. 프로젝트를 Visual Basic .NET으로 업그레이드하기 위한 준비
      왜 변경해야 하는가? ... 96
      레거시 코드를 간결하게 만든다 ... 96
        VarPtr, Deflnt와 사라지 사라진 것들 ... 97
        DAO와 RDO 데이터 바인딩 ... 98
      좋은 Visual Basic 6 코딩 습관 ... 99
        Variant와 변수 ... 99
        추상화(Abstraction) ... 101
        얼리 바인딩 vs. 레이트 바인딩 vs. 소프트 바인딩 ... 105
        Null과 Empty에 대하여 주의하자 ... 110
        묵시적인 객체 인스턴스화(Instantiation) ... 111
      결론 ... 115
Part 2. 애플리케이션 업그레이드
   Chapter 5. 첫 번째 업그레이드
      메모 ... 118
        업그레이드 연습 ... 120
        어떤 일이 일어났는가? ... 126
        개발 언어의 변화 ... 130
        프로젝트의 다른 파일들 ... 136
      프로젝트 그룹 업그레이드하기 ... 138
      커맨드 라인을 사용하여 업그레이드하기 ... 142
      결론 ... 144
   Chapter 6. Visual Basic .NET에서의 일반적인 작업
      Visual Basic .NET에서의 작업에 대한 가이드 ... 146
        Visual Basic .NET 프로젝트 만들기 ... 147
        Visual Basic .NET IDE 배우기 ... 149
        프로젝트 실행하기 ... 151
        디버깅에 대한 간단한 설명 ... 152
      그 밖의 항목들 ... 154
        빌드 에러 처리하기 ... 154
        작업 목록 사용하기 ... 155
        중단점(Breakpoint) 사용하기 ... 156
        참조(References) ... 156
      문제를 해결하는 기법 ... 158
        System.Diagnostics 라이브러리 사용하기 ... 158
        CorDbg 사용하기 ... 159
        복잡한 표현식을 간단하게 만들기 ... 160
      결론 ... 161
   Chapter 7. 업그레이드 마법사의 기능들
      업그레이드 철학 ... 164
        그건 당신 코드야 ... 164
        동작만 하게 만들어 ... 165
      호환성 라이브러리(Compatibility Library) ... 166
      업그레이드 마법사의 능력과 한계 ... 166
      마법사의 방법론 ... 166
        프로젝트 업그레이드 ... 169
        폼과 고유 컨트롤 ... 175
        ActiveX 컨트롤과 ActiveX 참조 ... 185
        Visual Basic 코드 ... 189
        전역 객체(Global Objects) ... 196
        클래스 모듈과 사용자 컨트롤 ... 196
        데이터 액세스용 객체 ... 198
        디자이너 ... 199
      결론 ... 199
   Chapter 8. 에러, 경고, 문제들
      다양한 종류의 EWI ... 206
        업그레이드 문제 ... 206
        Upgrade ToDo ... 207
        런타임 경고 ... 208
        디자인 문제 ... 209
        업그레이드 노트와 전역적 경고 ... 210
      업그레이드 보고서 이해하기 ... 210
        수정 시간 예측하기 ... 212
      EWI 사용하기 ... 214
      다양한 업그레이드 EWI ... 215
        업그레이드 문제 ... 216
        ToDo 항목 업그레이드 ... 218
        UPGRADE_WARNING ... 219
        디자인 에러 ... 222
        전역적 경고(Global Warnings) ... 224
        업그레이드 노트(Upgrade Notes) ... 225
      어떤 문제가 탐지되지 않는가? ... 226
      결론 ... 229
   Chapter 9. Visual Basic 6과 Visual Basic .NET 사용하기 : COM Interop
      COM Interop이 활약하는 부분 ... 233
        ActiveX 컨트롤 ... 234
        .NET 클라이언트와 COM 서버 컴포넌트 간의 통신 ... 234
        COM 클라이언트와 .NET 서버 컴포넌트 간의 통신 ... 234
      Visual Basic 6 클라이언트/서버 애플리케이션 업그레이드하기 ... 235
      COM 서버와 통신하는 .NET 클라이언트 만들기 ... 237
        Visual Basic .NET 클라이언트와 Visual Basic 6 서버 간의 디버깅 ... 239
        VB 6 프로젝트가 Visual Studio .NET에서 디버깅될 수 있도록 준비하기 ... 239
        VB 6 클라이언트가 VB .NET 컴포넌트를 호출할 수 있도록 공개하기 ... 242
        Visual Basic 6 클라이언트와 .NET 서버 간을 디버깅하기 ... 246
        이제 전부 시도해보자 ... 247
        COM을 .NET과 교체하기 : 이진형 호환성 ... 248
        간접 교체 모델 ... 249
        Visual Basic .NET 클래스에서 이진형 호환성을 가능하게 만들기 ... 250
      결론 ... 256
Part 3. 프로젝트 동작하게 만들기
   Chapter 10. 10가지 일반적인 업그레이드 문제들
      기본 속성들 ... 260
      COM 객체에서의 AddItem과 ToString ... 263
      수명 결정과 가비지 컬렉션 ... 265
        가능한 한 원하는 시기로 수명 결정하기 ... 268
      일반(Generic) 객체들(Control/Form/Screen) ... 268
      Dim...As New ... 270
      Sub Main(또는 Default Form) ... 272
      폰트의 차이 ... 273
      부적절한 상수(Bad Constants) ... 275
      드래그 앤 드롭 ... 277
        Visual Basic 6에서의 드래그 앤 드롭 ... 277
        Visual Basic .NET에서의 드래그 앤 드롭 ... 280
      컬렉션 클래스(Collection Class) ... 284
      결론 ... 288
   Chapter 11. 개발 언어와 관련된 문제 해결하기
      개발 언어 요소들 ... 290
        If...End If 프리 컴파일문 ... 291
        상수와 상수 수식 ... 291
        제어문의 흐름(Control Flow) ... 295
        파일 함수 ... 301
      형과 형 연산 ... 309
        Object가 Variant를 대체 ... 309
        배열 ... 314
        구조체(Structures) ... 319
      코드를 스레드 안정형으로 만들기 ... 323
      Windows API ... 327
        형 변경 ... 327
        As Any는 더 이상 지원되지 않는다 ... 328
        AddressOf 변경 ... 330
        사용자 정의 형을 API 함수에 전달하기 ... 335
        ObjPtr과 StrPtr은 지원되지 않는다 ... 339
      결론 ... 341
   Chapter 12. 폼 문제 해결하기
      폼 구조상의 유사점 ... 344
      일반적인 문제들 ... 346
        기술의 차이 ... 349
      폼과 관련된 문제 ... 355
        이벤트 발생의 차이점 ... 355
        기본 폼 : DefInstance ... 359
        애플리케이션의 수명과 폼 ... 361
        MDI 폼 ... 366
      결론 ... 367
   Chapter 13. ActiveX 컨트롤과 컴포넌트 업그레이드하기
      ActiveX 컨트롤을 사용할 수 있다 ... 370
        ActiveX 업그레이드 전략 ... 371
      ActiveX 컨트롤 호스팅의 제약 사항 ... 371
      ActiveX .NET 컨트롤 : 최상의 선택 ... 374
        ActiveX Interop Ax 랩퍼(Wrapper) : 윈도우 폼 랩퍼 ... 374
        속성과 파라미터 형의 매핑 ... 376
      표준 컴포넌트 랩퍼와 ActiveX 컨트롤 하위객체(Subobject) ... 379
        형 변환이 필요한 일반적 예외 사항 ... 381
      이름의 충돌(Name Collision) ... 383
        이벤트 이름 충돌 ... 384
      .NET에서 ActiveX 컴포넌트 사용하기 ... 384
        ByRef에 문제가 있는 경우 ... 384
        컬렉션이 컬렉션이 아닌 경우 ... 387
        Nonzero-Bound 배열 ... 388
        형 별칭(Alias Type)은 지원되지 않는다 ... 390
        모듈 메서드는 지원되지 않는다 ... 390
      결론 ... 392
   Chapter 14. 데이터 액세스 문제 해결하기
      Visual Basic의 데이터 액세스 ... 394
        코드 ... 394
        데이터 바인딩 ... 396
        ADO Data Environment ... 397
        업그레이드되지 않는 컴포넌트 ... 397
      미래는 ADO.NET ... 398
      데이터 액세스 코드에 대한 일반적인 문제들 ... 399
        DAO와 RDO 모듈 메서드 ... 399
        ADO 버전 2.7 ... 401
        이벤트에서의 에러 ... 401
        RDO 연결 ... 404
        Null, vbNullString, vbNullChar ... 406
      ADO Data Environment ... 407
        Dispose 호출하기 ... 408
        Initialize 이벤트 ... 408
        Microsoft Access 데이터베이스의 커서위치 ... 408
      ADO 데이터 바인딩 ... 409
        ADO Data 컨트롤의 컨트롤 배열 ... 411
      결론 ... 411
   Chapter 15. 재디자인이 필요한 문제들
      OLE Container 컨트롤 대체하기 ... 414
      페인팅 함수 대체하기 ... 419
      클립보드 코드 다시 작성하기 ... 423
      컨트롤 컬렉션 사용하기 ... 425
      폼 컬렉션 사용하기 ... 428
      PrintForm 코드 업그레이드하기 ... 431
      속성 페이지 대체하기 ... 433
      ObjPtr, VarPtr, StrPtr 제거하기 ... 436
      결론 ... 439
   Chapter 16. COM+ 컴포넌트 업그레이드하기
      COM+ 애플리케이션 형 ... 442
      Visual Basic .NET에서 COM+ 사용하기 ... 443
        Visual Basic .NET에서의 COM+ 요구사항 ... 445
        ServicedComponent 클래스에서 상속받기 ... 446
        특성(Attribute) 다루기 ... 447
        어셈블리에 대한 강력한 이름(Strong Name) 만들기 ... 453
        COM+ 애플리케이션 등록하기 ... 454
      COM+ 컴포넌트 업그레이드하기 ... 457
      .NET과 COM 컴포넌트가 연동되게 만들기 ... 462
      결론 ... 462
   Chapter 17. VB 응용 프로그램 마법사 프로젝트 업그레이드하기
      App.Revision ... 468
      frmAbout 폼 ... 470
      frmLogin 폼 ... 471
      frmMain 폼 ... 472
        API Declare 명령문 ... 472
        mnuHelpAbout_Click 이벤트 프로시저 ... 473
        App.HelpFile ... 474
        MDI 프로젝트의 ActiveMdiChild ... 475
        frmMain_Closed의 폼 컬렉션 ... 478
        MDI 프로젝트의 클립보드 ... 479
      frmSplash 폼 ... 481
      frmBrowser 폼 ... 484
      데이터 폼 ... 485
        Module 1 모듈 ... 485
        LoadResStrings 메서드 ... 485
      결론 ... 488
Part 4. 가치를 높이는 기법
   Chapter 18. 애플리케이션의 가치 높이기
      예제 애플리케이션에 대한 설명 ... 492
      새로운 파일 함수 ... 493
        디렉터리의 내용 읽기 ... 494
        DLL에서 모든 폼 발견하기 ... 495
        다이나믹하게 폼 로딩하기 ... 496
        파일 읽고 쓰기 ... 497
        다이나믹 속성 사용하기 ... 498
      새로운 윈도우 기능 ... 500
        레지스트리에 접속하기 ... 500
        컨트롤 엥커(Control Anchoring) 설정 ... 503
        그랙픽 기능 ... 503
        Windows XP 스타일의 컨트롤 ... 508
      XCopy 전개 ... 510
      결론 ... 512
   Chapter 19. ActiveX 컨트롤을 윈도우 폼 컨트롤로 바꾸기
      컨트롤 업그레이드의 장점 ... 514
        100% .NET 호환성 ... 514
        버전 부여 기능의 강화 ... 515
        더 쉬워진 전개 ... 516
      컨트롤을 대체하는 과정 ... 516
        컨트롤을 수작업으로 업그레이드하기 ... 517
      Visual Basic 6 ActiveX 컨트롤의 매핑 ... 525
        ActiveX 컨트롤 vs. 윈도우 폼 컨트롤 ... 525
      결론 ... 529
   Chapter 20. ADO를 ADO.NET으로 전환하기
      ADO 프로그래머를 위한 ADO.NET ... 532
        ADO.NET의 소개 ... 532
        DataSet ... 534
      ADO 코드를 Visual Basic .NET 애플리케이션과 통합하기 ... 536
        ADO Recordset을 .NET 컨트롤에 연결하기 ... 536
        ADO에서 XML 웹 서비스 사용하기 ... 538
      ADO 객체를 ADO.NET에 매핑하기 ... 540
        Connection과 Command 객체 ... 541
        Recordset ... 543
      DataView 사용하기 ... 546
      데이터 바인딩 ... 547
        윈도우 폼 컨트롤에 연결하기 ... 547
      성능에 대한 설명 ... 549
      결론 ... 552
   Chapter 21. 분산형 애플리케이션 업그레이드하기
      느슨하게 연결된 애플리케이션 vs. 밀접하게 연결된 애플리케이션 ... 555
      메서드 호출(Invocation)의 부하 ... 555
      컴포넌트화(Componentization)의 논리적 조직 ... 558
      .NET의 분산형 기술 ... 559
      XML 웹 서비스 ... 559
        간단한 XML 웹 서비스 만들기 ... 560
        기존의 애플리케이션에서 웹 서비스 지원하기 ... 566
      리모팅(Remoting) ... 573
        Simple Remoting 예제 ... 574
        리모팅을 위한 아키텍처 ... 578
      분산형 COM+ 애플리케이션 ... 584
        COM+와 리모팅 ... 585
        SOAP 서비스 사용하기 ... 585
        .NET에서의 COM+ 애플리케이션 프록시 ... 587
      결론 ... 588
Part 5. Appendix
   Appendix A. 객체 매핑 참조
   Appendix B. 함수 매핑 참조
INDEX ... 662
닫기