1.1 .NET概述 1
第1章 什么是Microsoft.NET 1
1.1.1 未来应用广泛而深邃的平台 2
1.1.2 DNA和COM的缺陷 2
1.2 .NET Framework概述 3
1.3 公共语言运行库 4
1.3.1 主要的设计目标 4
1.3.2 元数据 6
1.3.3 多语言集成和支持 6
1.3.4 公共类型系统 7
1.3.5 命名空间 7
1.4 .NET Class Framework 7
1.5 用户和程序接口 9
1.5.1 Windows窗体 9
1.5.4 Web服务 10
1.5.2 Web窗体 10
1.5.3 控制台应用程序 10
1.6 作为.NET“元语言”的XML 11
1.7 COM的角色 11
1.8 永远不会改变的一些事实 12
1.9 .NET对VB的影响 12
1.10 .NET对我们的影响 12
1.10.1 编程模型 12
1.10.2 减少了Internet开发的障碍 13
1.10.3 预编写的功能库 13
1.10.4 部署更简单 13
1.11 .NET的未来 14
1.12 .NET 2.0的改进 14
1.13 小结 15
2.1 Visual Studio.NET——入门 17
第2章 VB 2005和VS 2005简介 17
2.2 Visual Studio 2005 18
2.2.1 Solution Explorer窗口 20
2.2.2 My Project视图 21
2.2.3 引用 21
2.2.4 程序集信息 22
2.2.5 新代码窗口 23
2.2.6 Properties窗口 26
2.2.7 动态帮助 27
2.3 使用Visual Basic 2005 27
2.3.1 运行ProVB.NET 28
2.3.2 在代码中设置窗体属性 28
2.4 增强范例应用程序的功能 29
2.4.1 添加控件和事件处理程序 30
2.4.2 定制代码 31
2.4.3 构建配置 35
2.4.4 创建应用程序 37
2.5 Visual Studio中的特色功能 40
2.5.1 任务列表 40
2.5.2 Command窗口 41
2.5.3 Server Explorer 41
2.5.4 在Visual Studio 2005中记录和使用宏 42
2.6 小结 43
第3章 变量和类型 45
3.1 值类型和引用类型的区别 46
3.2 值类型(结构) 47
3.3 显式转换 55
3.3.1 编译器选项 56
3.3.2 执行显式转换 57
3.4 引用类型(类) 59
3.4.1 Object类 60
3.4.2 String类 61
3.4.4 数组 64
3.4.3 DBNull类和IsDBNull函数 64
3.4.5 集合 67
3.5 参数传递 68
3.6 装箱 69
3.7 不再使用的关键字和方法 70
3.8 小结 72
第4章 对象语法综述 73
4.1 面向对象的术语 74
4.1.1 对象、类和实例 74
4.1.2 对象的组成 74
4.2 使用对象 77
4.2.1 对象的声明和实例化 77
4.2.2 对象引用 79
4.2.3 取消对象的引用 79
4.2.4 前期及后期绑定 79
4.3.1 创建基类 83
4.3 创建类 83
4.3.2 构造函数方法 100
4.3.3 终止和清除 101
4.4 高级概念 102
4.4.1 重载方法 103
4.4.2 重载构造函数方法 105
4.4.3 共享方法、变量和事件 106
4.4.4 运算符重载 111
4.4.5 委托 114
4.4.6 类和组件 118
4.5 小结 120
第5章 继承与接口 121
5.1 继承 121
5.2 多接口 165
5.2.1 对象接口 165
5.2.2 辅助接口 167
5.3 小结 172
第6章 公共语言运行库 175
6.1 .NET应用程序的组成元素 175
6.1.1 模块 176
6.1.2 程序集 177
6.1.3 类型 177
6.2 版本化与部署 178
6.2.1 对版本化更好的支持 178
6.2.2 更好的部署 179
6.3 跨语言集成 179
6.3.1 通用类型系统 180
6.3.2 元数据 181
6.3.3 对元数据更好的支持 181
6.3.4 属性 182
6.4 IL Disassembler 184
6.3.5 Reflection API 184
6.5 内存管理 185
6.5.1 传统的垃圾回收机制 186
6.5.2 更快地为对象分配内存 193
6.5.3 垃圾回收器的优化 193
6.6 小结 195
第7章 对象和组件的应用 197
7.1 抽象性 197
7.2 封装性 200
7.3 多态性 203
7.3.1 方法签名 203
7.3.2 实现多态性 203
7.4 继承 213
7.4.1 使用继承的场合 213
7.4.2 继承和多接口 216
7.4.3 进一步探讨 222
7.4.4 “脆弱”的基类问题 223
7.5 小结 226
第8章 泛型 227
8.1 泛型的使用 227
8.1.1 泛型类型 228
8.1.2 泛型方法 232
8.2 创建泛型 233
8.2.1 泛型类型 233
8.2.2 泛型方法 241
8.2.3 约束 242
8.2.4 泛型和后期绑定 245
8.3 小结 246
第9章 命名空间 247
9.1 命名空间的概念 247
9.1.1 命名空间与引用 250
9.1.2 常用的命名空间 252
9.2.1 导入命名空间 254
9.2 导入命名空间并指定别名 254
9.2.2 在ASP.NET中引用命名空间 255
9.2.3 为命名空间指定别名 256
9.3 创建自己的命名空间 256
9.4 My关键字 259
9.4.1 My.Application命名空间 260
9.4.2 My.Computer命名空间 264
9.4.5 My.User命名空间 267
9.4.6 My.WebServices命名空间 267
9.4.4 My.Resources命名空间 267
9.4.3 My.Forms命名空间 267
9.5 小结 268
第10章 异常处理和调试 269
10.1 VB 6中的错误处理 269
10.2 .NET中的异常处理 271
10.2.1 异常的重要属性和方法 271
10.3 VB.NET中结构化异常处理的关键字 272
10.2.2 异常与VB 6中Err对象的区别 272
10.4 与VB 6样式的错误处理交互操作 284
10.5 错误记录 285
10.6 使用Trace类分析问题和测试性能 290
10.7 小结 293
第11章 用ADO.NET 2.0访问数据 295
11.1 ADO.NET 2.0体系结构的改进 296
11.2 .NET数据提供程序 298
11.2.1 Connection对象 298
11.2.2 Command对象 298
11.2.3 通过Command对象使用存储过程 299
11.2.4 DataReader对象 303
11.2.5 命令的异步执行 305
11.2.6 DataAdapter对象 307
11.2.7 SQL Server.NET数据提供程序 311
11.3.1 DataTableCollection对象 312
11.2.8 OLEDB.NET数据提供程序 312
11.3 DataSet组件 312
11.3.2 DataRelationCollection对象 313
11.3.3 ExtendedProperties属性 313
11.3.4 创建和使用DataSet对象 314
11.3.5 ADO.NET DataTable对象 316
11.3.6 ADO.NET 2.0对DataSet和DataTable的改进 317
11.4 使用通用提供程序模型 319
11.5 ADO.NET 2.0对连接池的改进 321
11.6 创建DataAccess组件 321
11.6.1 构造函数 323
11.6.2 属性 324
11.6.3 存储过程使用的XML结构 325
11.6.4 方法 325
11.6.5 使用DataSet对象绑定DataGrid 338
11.7 小结 341
第12章 在VB 2005中使用XML 343
12.1 XML简介 344
12.2 XML串行化 345
12.3 System.Xml文档支持 351
12.4 XML流样式分析程序 352
12.4.1 写入XML流 353
12.4.2 读取XML流 356
12.4.3 使用MemoryStream对象 366
12.4.4 文档对象模型(DOM) 369
12.5 XSLT转换 375
12.5.1 使用XSLT转换不同的XML标准 380
12.5.2 在VB 2005中使用XML 380
12.5.3 System.Xml.Xsl中定义的其他类和接口 382
12.6 ADO.NET 383
12.6.1 ADO.NET和SQL Server 2000内置的XML功能 384
12.6.2 XML与SQL Server 2005 386
12.7 小结 387
第13章 .NET Framework 2.0版中的安全性 389
13.1 安全的概念与定义 390
13.2 System.Security.Permissions命名空间中的权限 391
13.2.1 代码访问权限 393
13.2.2 基于角色的权限 394
13.2.3 身份权限 396
13.3 管理代码访问权限 396
13.4 管理安全策略 401
13.4.1 应用程序顺利运行所需要的最少权限 410
13.4.2 使用VS 2005判断最少权限集合 411
13.4.3 安全性工具 414
13.4.4 使用SecurityException类处理异常 414
13.5 加密基础 416
13.6 小结 437
14.1 Windows窗体的重要性 439
第14章 Windows窗体 439
14.2.1 默认的窗体实例 440
14.2.2 现存控件的改进 440
14.2 Windows窗体2.0版的更新内容 440
14.2.3 新增控件 441
14.2.4 对老版本Windows窗体控件的替换 442
14.3 System.Windows.Forms命名空间 443
14.4 窗体的使用 443
14.4.1 通过Sub Main显示窗体 444
14.4.2 设置启动窗体 445
14.4.3 启动位置 445
14.4.4 窗体边框 445
14.4.5 始终置顶——TopMost属性 446
14.4.6 附属窗体 446
14.4.7 改变窗体的透明度 447
14.5 运行时的窗体 449
14.4.8 可视化继承 449
14.4.9 滚动窗体 449
14.6 控件 450
14.6.1 以Tab键切换控件的顺序 451
14.6.2 控件数组 451
14.6.3 自动调整控件的大小和布局 453
14.6.4 FlowLayoutPanel控件 457
14.6.5 TableLayoutPanel控件 458
14.6.6 扩展的Provider控件 459
14.6.7 数据输入的高级功能 462
14.6.8 验证数据输入 464
14.6.9 工具栏与新增的ToolStrip控件 465
14.6.10 菜单 468
14.6.11 通用对话框 470
14.6.12 拖放操作 472
14.6.13 Panel和GroupBox容器控件 474
14.6.14 标准Windows窗体控件小结 475
14.6.15 已撤销的控件 478
14.6.16 使用ActiveX控件 478
14.6.17 其他的编程技巧 478
14.6.18 MDI窗体 479
14.6.19 一个VB.NET中的MDI样例 480
14.6.20 对话框窗体 482
14.7 小结 484
第15章 Windows窗体的高级功能 485
15.1 在可视化控件中封装逻辑 485
15.2 在.NET中开发自定义的控件 486
15.2.1 继承现有的控件 486
15.3.1 基本步骤 487
15.3 继承现存的控件 487
15.2.3 从头编写控件 487
15.2.2 构建复合控件 487
15.3.2 给自定义控件添加逻辑 488
15.3.3 其他有用的特性 491
15.3.4 为派生的类自定义一个事件 492
15.3.5 创建一个可以限制选中对象数目的CheckedListBox 493
15.4 Control与UserControl基类 496
15.4.1 Control类 496
15.4.2 UserControl类 497
15.5 复合的UserControl控件 498
15.5.1 创建一个复合的UserControl 499
15.5.2 如何改变控件的大小 500
15.5.3 设定最小值 500
15.5.4 提供子控件的属性 500
15.5.5 一个具体的例子 500
15.6 从头构建控件 503
15.8 在控件中嵌入其他控件 510
15.7 给工具箱中的控件添加图标 510
15.9 小结 512
第16章 构建Web应用程序 515
16.1 Web站点样例 515
16.1.1 设置环境 515
16.1.2 HelloWorld Web窗体 516
16.2 Web窗体的结构 520
16.2.1 单文件页面模型 521
16.2.2 后台编码页面模型 522
16.2.3 显示模板 523
16.3 一个更复杂的例子 524
16.4 ASP.NET Web窗体的处理流程 526
16.5 Web窗体中的控件 527
16.5.1 服务器控件的概念 527
16.5.2 HTML服务器控件 529
16.5.3 ASP.NET服务器控件 530
16.5.4 验证控件 532
16.5.5 用户控件 534
16.6 Web窗体中的事件 534
16.6.1 Web窗体的生命周期 535
16.6.2 事件类别 536
16.7 Web窗体与ASP 537
16.8 在Web窗体间传送控件 538
16.9 最后一个例子 539
16.10 小结 551
第17章 ASP.NET 2.0的高级功能 553
17.1 应用程序和页面 553
17.1.1 跨页面发送 553
17.1.2 ASP.NET高级编译功能 557
17.2 主页面 559
17.2.1 主页面的创建 560
17.2.2 内容页面的创建 562
17.2.3 在应用程序范围内声明主页面 565
17.2.4 为主页面提供默认内容 566
17.3 应用程序中的数据访问 566
17.3.1 使用GridView和SqlDataSource控件 567
17.3.2 允许在GridView中编辑和删除记录 571
17.3.3 其他内容 576
17.4 页面导航 576
17.4.1 使用SiteMapPath服务器控件 577
17.4.2 Menu服务器控件 578
17.4.3 TreeView服务器控件 580
17.5 成员和角色管理 583
17.6 个性化功能 587
17.7 配置ASP.NET 588
17.8 小结 590
第18章 程序集 591
18.1 程序集 591
18.2 清单 592
18.2.1 标识部分 594
18.2.2 引用的程序集 595
18.3 程序集与部署 596
18.3.1 应用程序私有的程序集 596
18.3.2 共享程序集 596
18.4 版本化问题 598
18.4.1 应用程序隔离 598
18.4.2 并行执行 599
18.4.3 自描述 599
18.4.4 版本策略 599
18.4.5 配置文件 600
18.5 程序集的动态加载 604
18.5.1 Assembly类 604
18.5.2 传入程序集 605
18.6 小结 605
19.1 应用程序部署 607
第19章 应用程序部署 607
19.1.1 .NET对应用程序部署方法的改进 608
19.1.2 XCOPY部署 609
19.1.3 使用Windows Installer 609
19.2 VS.NET部署项目 611
19.2.1 项目模板 611
19.2.2 创建部署项目 613
19.2.3 两个范例 613
19.3 修改部署项目 622
19.3.1 项目属性 623
19.3.2 File System编辑器 626
19.3.3 Registry编辑器 630
19.3.4 File Types编辑器 632
19.3.5 User Interface编辑器 634
19.3.6 Custom Actions编辑器 636
19.3.7 Launch Conditions编辑器 638
19.4 构建部署/安装项目 641
19.5 Windows应用程序的Internet部署 641
19.5.1 “无接触”部署 641
19.5.2 ClickOnce部署 642
19.5.3 自定义的部署方法 650
19.6 小结 650
第20章 使用传统的COM和接口 653
20.1 传统的COM 653
20.2 COM和.NET的交互 654
20.2.1 传统的组件 654
20.2.2 .NET应用程序 657
20.2.3 调试 659
20.2.4 直接使用TlbImp 659
20.2.5 后期绑定 660
20.3 ActiveX控件 665
20.3.1 传统的ActiveX控件 666
20.3.2 另一个.NET应用程序 668
20.3.3 再次调试 670
20.4 在COM应用程序中使用.NET组件 670
20.4.1 .NET组件 670
20.4.2 RegAsm 672
20.4.3 TlbExp 675
20.5 小结 676
第21章 企业级服务 677
21.1 事务处理 677
21.2 事务处理组件 679
21.3 事务处理的其他方面 692
21.3.1 Just-In-Time 692
21.3.2 对象池 692
21.3.3 环境控制 692
21.4.1 一个排队组件样例 693
21.4 排队组件 693
21.4.2 使用排队组件进行事务处理 698
21.5 小结 700
第22章 线程技术 701
22.1 线程的含义 701
22.1.1 进程、应用程序域和线程 702
22.1.2 线程的调度 704
22.1.3 线程安全性与线程亲和性 706
22.1.4 何时使用线程 706
22.1.5 设计后台任务 707
22.1.6 交互式应用程序 707
22.2 线程的实现 708
22.2.1 一个简单的例子 708
22.2.2 线程的实现方式 711
22.2.3 手工创建线程 716
22.2.4 共享数据 717
22.2.5 避免共享数据的使用 718
22.2.6 通过同步共享数据 720
22.2.7 同步对象 722
22.3 小结 728
第23章 XML Web服务 729
23.1 Web服务介绍 729
23.2 早期的体系结构设计 730
23.2.1 网络角度 730
23.2.2 应用程序的发展 730
23.2.3 通过Web合并Internet和应用程序 731
23.2.4 Web服务基础 731
23.2.5 存在的问题 733
23.2.6 其他技术 733
23.2.7 被忽略的事实 734
23.3 构建Web服务 738
23.4 一个实际的例子 740
23.5 Visual Basic和System.Web.Services 749
23.5.1 System.Web.Services命名空间 749
23.5.2 System.Web.Services.Description命名空间 750
23.5.3 System.Web.Services.Discovery命名空间 751
23.5.4 System.Web.Services.Protocols命名空间 751
23.6 利用Web服务进行设计 752
23.6.1 Web服务的作用 752
23.6.2 Web服务的兼容性 753
23.6.3 XML Web服务的状态管理 753
23.6.4 把DNS用作模型 754
23.7 Web服务的安全 757
23.7.1 加密套接字层 757
23.7.2 目录级安全 757
23.8.3 事务处理方面的缺点 758
23.8.1 安全性方面的缺点 758
23.8.2 状态方面的缺点 758
23.8 分布式体系结构的缺点 758
23.7.3 其他形式的安全性 758
23.8.4 速度与连接性方面的缺点 759
23.9 Web服务的发展前景 759
23.10 小结 759
第24章 远程技术 761
24.1 远程技术概述 762
24.1.1 基本术语 762
24.1.2 SingleCall、Singleton和激活的对象 764
24.2 远程技术的实现 768
24.2.1 一个简单的例子 768
24.2.2 把IIS用作远程主机 778
24.2.3 使用Activator.GetObject 782
24.2.4 基于接口的设计 783
24.3 小结 785
24.2.5 使用生成的代理 785
第25章 Windows服务 787
25.1 Windows服务范例 787
25.2 Windows服务的特性 788
25.3 与Windows服务交互 788
25.4 创建Windows服务 789
25.4.1 用于Windows服务的.NET Framework类 790
25.4.2 其他类型的Windows服务 792
25.5 在VB 2005中创建Windows服务 793
25.6 创建计数监视器服务 794
25.6.1 安装服务 796
25.6.2 启动服务 797
25.6.3 卸载服务 798
25.7 监视性能计数器 798
25.7.1 创建性能计数器 798
25.7.2 把计数器集成到服务中 799
25.7.3 修改性能计数器中的值 800
25.8.1 ServiceController类 801
25.8 与Windows服务通信 801
25.8.2 把ServiceController集成到例子中 802
25.8.3 ServiceController的更多内容 804
25.9 定制命令 804
25.10 给服务传递字符串 806
25.11 创建文件监视程序 806
25.11.1 使用Eventlog编写事件 806
25.11.2 创建FileSystem Watcher 807
25.12 调试服务 811
25.13 小结 813
第26章 网络编程 815
26.1 传送消息:协议、地址和端口 815
26.1.1 地址与计算机名 817
26.1.2 端口:指定应用程序 817
26.2.1 Web请求与响应 818
26.1.3 防火墙:不离不弃 818
26.2 System.Net命名空间 818
26.2.2 使用WebClient简化常用的Web请求 835
26.2.3 使用HttpListener创建自己的Web服务器 837
26.3 小结 845
第27章 VB 2005与Internet 847
27.1 下载Internet资源 847
27.2 套接字 851
27.2.1 建立应用程序 851
27.2.2 创建Conversation窗口 853
27.2.3 发送消息 861
27.2.4 关闭应用程序 866
27.3 在应用程序中使用Internet Explorer 870
27.4 小结 879
附录A VB编译器 881
附录B Visual Basic资源 895