1.1 .NET概述 1
1.1.1 未来应用广泛而深邃的平台 1
目录 1
第1章 什么是Microsoft.NET 1
1.1.2 DNA和COM的缺陷 2
1.2 .NET Framework概述 4
1.3.1 主要的设计目标 5
1.3 公共语言运行库 5
1.3.4 公共类型系统 7
1.3.3 多语言集成和支持 7
1.3.2 元数据 7
1.4 .NET Class Framework 8
1.3.5 命名空间 8
1.5.2 Web窗体 10
1.5.1 Windows窗体 10
1.5 用户和程序接口 10
1.6 作为.NET“元语言”的XML 11
1.5.4 Web服务 11
1.5.3 控制台应用程序 11
1.9 .NET对VB的影响 12
1.8 永远不会改变的一些事实 12
1.7 COM的角色 12
1.10.2 减少了Internet开发的障碍 13
1.10.1 编程模型谱 13
1.10 .NET对我们的影响 13
1.12 小结 14
1.11 .NET的未来 14
1.10.3 预编写的功能库 14
1.10.4 部署更简单 14
2.1 Visual Studio.NET——入门 15
第2章 VB.NET和VS.NET简介 15
2.2.1 Solution Explorer窗口 17
2.2 Visual Studio.NET 17
2.2.2 命名空间 18
2.2.3 新代码窗口 19
2.2.4 Properties窗口 22
2.3.1 在代码中设置窗体属性 23
2.3 使用VB.NET 23
2.2.5 动态帮助 23
23.2 AssemblyInfo.vb文件 24
2.4 增强范例应用程序的功能 26
2.4.1 添加控件和事件处理程序 27
2.4.2 定制代码 28
2.4.3 构建配置 32
2.4.4 创建应用程序 34
2.5.1 任务列表 37
2.5 VS.NET的有用功能 37
2.5.3 Server Explorer 38
2.5.2 Command窗口 38
2.5.4 在Visual Studio.NET中记录和使用宏 39
2.6 小结 40
3.1.1 程序集 41
3.1 .NET应用程序的元素 41
第3章 公共语言运行库 41
3.1.3 类型 42
3.1.2 模块 42
3.2.1 对于版本化的更好支持 43
3.2 版本化和部署 43
3.3.1 更好的垃圾回收功能 44
3.3 内存管理 44
3.2.2 更好的部署 44
3.3.3 GC的优化 49
3.3.2 更快的对象内存分配 49
3.4.1 通用类型系统 51
3.4 跨语言的集成 51
3.4.3 对元数据的更好支持 53
3.4.2 元数据 53
3.4.4 属性 54
3.5 IL Disassembler 56
3.4.5 Reflection API 56
3.6 小结 57
4.1 值类型和引用类型的区别 58
第4章 变量和类型 58
4.2 值类型(结构) 60
4.3.1 Option Strict、Option Explicit和Option Compare 68
4.3 显式转换 68
4.3.2 执行显式转换 69
4.4 引用类型(类) 71
4.4.1 Object类 72
4.4.2 String类 73
4.4.3 DBNull类 75
4.4.4 数组 76
4.4.5 集合 78
4.5 参数传递 80
4.6 装箱 81
4.7 不再使用的关键字和方法 82
4.8 小结 83
第5章 对象语法综述 84
5.1.2 对象的组成 85
5.1.1 对象、类和实例 85
5.1 面向对象的术语 85
5.2 使用对象 88
5.2.1 对象的声明和实例化 89
5.2.4 前期及后期绑定 91
5.2.3 取消对象的引用 91
5.2.2 对象引用 91
5.3.1 创建基类 95
5.3 创建类 95
5.3.2 构造函数方法 111
5.3.3 终止和清除 112
5.4.1 重载方法 115
5.4 高级概念 115
5.4.2 重载构造函数方法 117
5.4.3 共享方法、变量和事件 119
5.4.4 委托 123
5.4.5 类和组件 128
5.5 小结 131
6.1 继承 132
第6章 继承和接口 132
6.2.1 对象接口 177
6.2 多接口 177
6.2.2 辅助接口 178
6.3 小结 184
7.1 抽象性 185
第7章 对象和组件的应用 185
7.2 封装性 187
7.3.2 实现多态性 190
7.3.1 方法签名 190
7.3 多态性 190
7.4.1 使用继承的场合 200
7.4 继承 200
7.4.2 继承和多接口 203
7.4.3 进一步探讨 209
7.4.4 “脆弱”的基类问题 210
7.5 小结 213
8.1 命名空间的定义 214
第8章 命名空间 214
8.1.1 命名空间和引用 217
8.1.2 通用的命名空间 218
8.2.1 导入命名空间 221
8.2 导入命名空间并指定别名 221
8.3 创建自己的命名空间 222
8.2.2 为命名空间指定别名 222
8.4 小结 225
9.1 VB6中的错误处理 226
第9章 错误处理 226
9.2.1 异常的属性和方法 228
9.2 .NET中的异常 228
9.2.3 常用的异常类型 229
9.2.2 异常与VB6中Err对象的区别 229
9.3.1 Try、Catch和Finally关键字 230
9.3 VB.NET中的结构化异常处理关键字 230
9.3.2 Throw关键字 231
9.3.3 抛出新的异常 232
9.3.4 Exit Try语句 233
9.3.5 嵌套的Try结构 234
9.4 使用异常属性 236
9.4.2 InnerException属性和TargetSite属性 237
9.4.1 Message属性 237
9.4.3 Source和StackTrace属性 239
9.4.4 GetBaseException、GetHashCode和Equals方法 240
9.4.5 HelpLink属性 241
9.5 错误记录 242
9.5.1 事件日志 243
9.5.2 写入追踪文件 246
9.6 调试与测定性能 247
9.7 小结 251
第10章 在VB.NET中使用XML 253
10.1 XML简介 254
10.2 XML串行化 255
10.3 System.Xml文档支持 261
10.4 XML流样式的分析程序 261
10.4.1 写入XML流 262
10.4.2 读取XML流 265
10.4.3 使用MemoryStream对象 271
10.4.4 DOM 274
10.5 XSLT转换 280
10.5.1 不同XML标准之间的XSLT转换 284
10.6 ADO.NET 287
10.5.2 其他的System.Xml.Xsl类和接口 287
10.6.1 ADO.NET和SQL Server的内置XML特征 289
10.6.3 生成类型化的DataSet 291
10.6.2 类型化的DataSet对象 291
10.7 小结 296
第11章 用ADO.NET访问数据 297
11.1.1 ADO.NET组件 298
11.1 ADO.NET体系结构 298
11.1.2 ADO和ADO.NET之间的区别 299
11.2 .NET数据提供程序 302
11.2.2 Command对象 303
11.2.1 Connection对象 303
11.2.3 DataReader对象 304
11.2.4 DataAdapter对象 306
11.3 DataSet组件 309
11.2.6 OLE DB.NET数据提供程序 309
11.2.5 SQL Server.NET数据提供程序 309
11.3.3 ExtendedProperties 310
11.3.2 DataRelationCollection 310
11.3.1 DataTableCollection 310
11.3.4 创建和使用DataSet对象 311
11.3.5 ADO.NET的DataTable对象 315
11.5 在ADO.NET中使用存储过程 316
11.4 ADO.NET中的连接池 316
11.5.1 创建存储过程 317
11.5.2 调用存储过程 319
11.6 创建Data Access组件 321
11.6.1 构造函数 323
16.4.1 列表 324
11.6.2 属性 324
11.6.4 方法 325
11.6.3 存储过程XML结构 325
11.7 使用DataSet对象绑定DataGrid 338
11.8 小结 340
12.2 System.Windows.Forms命名空间 341
第12章 Windows窗体 341
12.1 Windows窗体的重要性 341
12.3 将窗体用作类 343
12.3.2 .NET中的窗体定义 344
12.3.1 通过Sub Main使用窗体 344
12.4.2 设置启动窗体 345
12.4 设计时的窗体 345
12.4.1 设计期间显示的网格 345
12.4.4 始终置顶—一TopMost属性 346
12.4.3 窗体边框 346
12.4.5 owned form 347
12.4.7 窗体的透明性 348
12.4.6 启动位置 348
12.4.10 滚动窗体 350
12.4.8 可视化继承 350
12.4.9 窗体尺寸限制的设置 350
12.6 控件 351
12.5 运行时的窗体 351
12.6.2 控件数组 352
12.6.1 以Tab键切换控件的顺序 352
12.6.3 自动调整控件的尺寸和位置 354
12.6.4 扩展的Provider控件 357
12.6.5 数据输入的验证 359
12.6.6 菜单 361
12.6.7 工具栏 365
12.6.8 通用对话框 367
12.6.9 拖放操作 369
12.6.10 Panel和GroupBox容器控件 371
12.6.11 标准Windows.Forms控件的总结 372
12.6.12 已撤销的控件 376
12.6.15 MDI窗体 377
12.6.13 使用ActiveX控件 377
12.6.14 其他方便的编程技巧 377
12.6.16 VB.NET中的MDI示例 379
12.6.17 对话框窗体 380
12.7 小结 382
13.1.2 现有的ActiveX控件 383
第13章 创建Windows控件 383
13.1 控件源 383
13.1.1 内置控件 383
13.2.1 从另一个控件继承 384
13.1.3 第三方控件 384
13.1.4 自定义控件 384
13.2 在.NET中开发自定义控件 384
13.3 从现有的控件中继承 385
13.2.2 建立复合控件 385
13.2.3 从头编写控件 385
13.3.2 创建一个仅能输入数值的文本框 386
13.3.1 进程的概述 386
13.3.4 为自定义控件增加额外的逻辑处理 389
13.3.3 修改自定义控件 389
13.3.5 为自定义控件创建属性 390
13.3.7 为继承的控件建立自定义事件 393
13.3.6 其他有用的特性 393
13.3.8 创建一个限制所选项数量的复选列表框 394
13.4.1 Control类 397
13.4 Control和UserControl基类 397
13.5 复合的UserControl 399
13.4.2 UserControl类 399
13.5.1 创建一个复合的UserControl 400
13.5.4 提供子控件的属性 401
13.5.2 调整控件的大小 401
13.5.3 为控件设置最小尺寸 401
13.5.5 完成例子的步骤 402
13.6 从头建立控件 406
13.7 在工具箱上附加一个图标 412
13.8 小结 413
14.1.2 HelloWorld Web窗体 414
第14章 Web窗体 414
14.1 Web窗体 414
14.1.1 设置环境 414
14.2 剖析Web窗体 418
14.2.2 代码部分 419
14.2.1 模板的表示方式 419
14.3 一个更复杂的示例 420
14.4 ASP.NET Web窗体的处理流程 422
14.5 Web窗体中可用的控件 425
14.5.1 服务器端控件的概念 426
14.5.2 HTML服务器控件 427
14.5.3 ASP.NET服务器控件 428
14.5.4 验证控件 430
14.6.1 Web窗体的生存期 432
14.5.5 用户控件 432
14.6 Web窗体中的事件 432
14.6.2 事件类别 433
14.7 Web窗体与ASP 434
14.9 最后一个示例 436
14.8 在Web窗体之间传送控件 436
14.10 小结 449
15.1 创建自定义控件的原因 450
第15章 创建Web控件 450
15.3.1 Web用户控件 451
15.2 何时创建自己的控件 451
15.3 自定义Web控件的类型 451
15.3.2 子类控件 452
15.4 何时使用自定义的Web控件 453
15.3.3 复合控件 453
15.3.4 模板控件 453
15.5.1 建立一个简单的WUC 454
15.5 创建Web用户控件 454
15.5.2 把Web页面转换为WUC 459
15.5.3 把Web用户控件项添加到项目中 467
15.5.4 在Web用户控件中重用代码 470
15.5.6 Web用户控件和@Register指令 471
15.5.5 @Control指令 471
15.5.7 Web用户控件 472
15.5.8 扩展Web用户控件 484
15.6 创建子类控件 485
15.5.9 Web用户控件的其他功能 485
15.6.1 创建一个试验台项目 486
15.6.2 子类控件和Web自定义控件模板 487
15.6.3 Render方法 489
15.6.4 开发子类控件 491
15.7 小结 499
16.1 显示数据 500
第16章 数据绑定 500
16.1.1 保存所做更改 502
16.1.2 Update语句简述 505
16.2.1 一个DataGrid中有多个相关的表 507
16.2 主/从数据绑定 507
16.2.2 更有用的解决方案 511
16.3 窗体 514
16.3.1 在记录之间移动 517
16.3.2 保存改变的内容 520
16.4 什么数据可以进行绑定 524
16.4.2 对象的属性 525
16.5 小结 526
17.1 传统的COM 528
第17章 使用传统的COM和接口 528
17.2.1 传统的组件 529
17.2 现在使用的COM和.NET 529
1 7.2.2 .NET应用程序 532
17.2.3 调试 534
17.2.5 后期绑定 535
17.2.4 直接使用TlbImp 535
17.3 ActiveX控件 540
17.3.1 传统ActiveX控件 541
17.3.2 另一个.NET应用程序 543
17.3.3 再次调试 544
17.4.1 .NET组件 545
17.4 在COM中使用.NET组件 545
17.4.2 RegAsm 547
17.5 小结 550
17.4.3 TlbExp 550
18.1 事务处理 551
第18章 组件服务 551
18.2 事务处理组件 553
18.3.1 人工事务处理 566
18.3 事务处理的其他方面 566
18.3.4 其他情况 567
18.3.3 对象池 567
18.3.2 JIT 567
18.4.1 排队组件的范例 568
18.4 排队组件 568
18.4.2 使用排队组件进行事务处理 574
18.5 小结 575
19.1 线程的含义 576
第19章 线程 576
19.1.1 进程、应用程序域与线程 577
19.1.2 线程的调度 579
19.1.3 线程安全和线程亲和 580
19.1.4 何时使用线程 581
19.1.5 设计后台任务 582
19.2.1 概述 583
19.2 实现线程 583
19.2.2 线程选项 589
19.2.3 共享的数据 594
19.2.4 取消后台任务 613
19.3 小结 619
第20章 远程技术 620
20.1.1 基本术语 621
20.1 远程技术概述 621
20.1.2 SingleCall、Singleton和激活的对象 623
20.2 远程技术的实现 626
20.2.1 一个简单的例子 627
20.2.2 把IIS用作远程主机 636
20.2.4 基于接口的设计 641
20.2.3 使用Activator.GetObject 641
20.2.5 使用生成的代理 643
20.3 小结 644
21.1 Windows服务范例 645
第21章 Windows服务 645
21.3 与Windows服务交互 646
21.2 Windows服务的特性 646
21.4.1 用于Windows服务的.NET Framework类 647
21.4 创建Windows服务 647
21.5 用VB.NET创建Windows服务 650
21.4.2 Windows服务的其他类型 650
21.6 创建计数监视器服务 652
21.6.1 安装服务 653
21.6.2 启动服务 654
21.7.1 创建性能计数器 655
21.7 监视性能计数器 655
21.6.3 卸载服务 655
21.7.2 把计数器集成到服务中 656
21.7.3 修改性能计数器中的值 657
21.8.1 ServiceController类 658
21.8 与服务通信 658
21.8.2 把ServiceController集成到例子中 659
21.8.3 ServiceController的更多内容 660
21.9 定制命令 661
21.10.1 使用Eventlog编写事件 663
21.10 创建文件监视程序 663
21.10.2 创建FileSystemWatcher 664
21.11 调试服务 667
21.12 小结 670
22.1 Web服务简介 671
第22章 Web服务 671
22.2.2 应用程序的发展 672
22.2.1 网络角度 672
22.2 早期的体系结构设计 672
22.2.4 Web服务基础 673
22.2.3 通过Web合并Internet和应用程序 673
22.2.5 问题 674
22.2.7 Web服务的基础所忽略的问题 675
22.2.6 其他技术 675
22.3 建立Web服务 680
22.4 一个更真实的例子 682
22.5 返回各种数据集 686
22.6.1 System.Web.Services命名空间 688
22.6 VB.NET和System.Web.Services 688
22.6.2 System.Web.Services.Description命名空间 689
22.6.4 System.Web.Services.Protocols命名空间 690
22.6.3 System.Web.Services.Discovery命名空间 690
22.7 利用Web服务进行设计 691
22.7.4 XMLWeb服务的状态管理 692
22.7.3 Web服务代理 692
22.7.1 Web服务的作用 692
22.7.2 Web服务与其他协议和工具的组合 692
22.7.5 把DNS用作模型 693
22.8.1 加密套接字层 696
22.8 Web服务中的安全性 696
22.9.1 安全性方面的缺点 697
22.9 分布式体系结构的缺点 697
22.8.2 目录级安全性 697
22.8.3 其他类型的安全性 697
22.10 Web服务的发展前景 698
22.9.4 速度和连接性方面的缺点 698
22.9.2 状态方面的缺点 698
22.9.3 事务处理方面的缺点 698
22.11 小结 699
23.1 下载Internet资源 700
第23章 VB.NET和Internet 700
23.2 套接字 703
23.2.1 建立应用程序 704
23.2.2 创建Conversation窗口 706
23.2.3 发送消息 714
23.2.4 关闭应用程序 720
23.3 在应用程序中使用Internet Explorer 724
23.4 小结 731
第24章 .NET Framework中的安全性 732
24.1 安全性的概念与定义 733
24.2 System.Security.Permissions命名空间中的权限 734
24.2.2 基于角色的权限 736
24.2.1 代码访问权限 736
24.2.3 身份权限 738
24.3 管理代码访问权限 739
24.4 管理安全性策略 744
24.5 加密基础 753
24.6 小结 774
第25章 程序集和部署 775
25.1 程序集 775
25.2 清单 776
25.2.1 标识部分 777
25.2.2 引用的程序集 779
25.3 程序集和部署 779
25.3.1 应用程序私有的程序集 780
25.3.2 共享程序集 780
25.4 版本化问题 781
25.4.1 应用程序隔离 782
25.4.2 并行执行 782
25.4.3 自描述 783
25.4.4 版本策略 783
25.4.5 配置文件 784
25.5 应用程序部署 787
25.5.1 DLLHell 788
25.5.2 XCOPY部署 788
25.5.3 .NET以前的部署选项 789
25.6 Visual Studio.NET部署项目 791
25.6.1 项目模板 791
25.5.4 Visual Studio.NET中的应用程序部署 791
25.6.2 创建一个部署项目 793
256.3 创建部署项目的两个范例 793
25.7 修改部署项目 803
25.7.1 项目属性 803
25.7.2 File System编辑器 806
25.7.3 Registry编辑器 810
25.7.4 File Types编辑器 812
25.7.5 UserInterface编辑器 813
25.7.6 Custom Actions编辑器 815
25.7.7 Launch Conditions编辑器 817
25.8 构建 820
25.9 小结 821
第26章 可移式应用程序的开发 822
26.1 可移式Web应用程序 822
26.1.1 可移式应用程序的Web服务 823
26.1.2 可移式Web模板的局限性 823
26.1.3 创建可移式Web应用程序 825
26.1.4 可移式Web应用程序和.NET Compact Framework应用程序的区别 828
26.2 .NET Compact Framework简介 828
26.2.1 .NET Compact Framework的局限性 829
26.2.2 .NET Compact Framework特有的命名空间 832
26.2.3 可移式设备模拟器 832
26.3 第一个.NET Compact Framework应用程序 834
26.4 小结 841
A.1 转换为VB.NET 842
A.1.1 什么是兼容库 842
附录A 升级:使用Visual Basic兼容库 842
A.1.2 引用兼容库 843
A.1.3 升级工具 843
A.2.1 语法声明的改变 848
A.2.2 元素替换为方法 848
A.2 兼容库引用列表 848
A.2.3 数据类型的改变 849
A.2.4 布尔运算符的改变 850
A.2.5 类和接口的改变 850