本书将全面阐述VB.NET 2003:首先讨论了.NET Framework;在本书的结尾,讨论了部署.NET 应用程序的最佳方式。中间部分讨论了从数据库访问到与诸如XML等其他技术集成的一切内容,并且详细地介绍了新增功能。您将会看到,VB.NET已经成为一种强大且易于使用的语言,使您在编写网络程序时,就如同编写桌面程序一样得心应手。
本书主要针对有经验的、希望深入学习VB.NET的开发人员。本书讨论了最常见的编程任务和概念,既适合于从早期版本过渡到VB.NET版本的开发人员,也适合于以前使用过VB.NET,目前需要更深入理解VB.NET的开发人员。
第1章 什么是Microsoft .NET 1
1.1 .NET概述 1
1.1.1 未来应用广泛而深邃的平台 1
1.1.2 DNA和COM的缺陷 2
1.2 .NET Framework概述 4
1.3 公共语言运行库 5
1.3.1 主要的设计目标 5
1.3.2 元数据 7
1.3.3 多语言集成和支持 7
1.3.4 公共类型系统 7
1.3.5 命名空间 8
1.4 .NET Class Framework 8
1.5 用户和程序接口 10
1.5.1 Windows窗体 10
1.5.2 Web窗体 10
1.5.3 控制台应用程序 11
1.5.4 Web服务 11
1.6 作为.NET“元语言”的XML 11
1.7 COM的角色 12
1.8 永远不会改变的一些事实 12
1.9 .NET对VB的影响 12
1.10 .NET对我们的影响 13
1.10.1 编程模型谱 13
1.10.2 减少了Internet开发的障碍 13
1.10.3 预编写的功能库 14
1.10.4 部署更简单 14
1.11 .NET的未来 14
1.12 小结 14
第2章 VB.NET和VS.NET简介 15
2.1 Visual Studio .NET—— 入门 15
2.2 Visual Studio .NET 17
2.2.1 Solution Explorer窗口 17
2.2.2 命名空间 18
2.2.3 新代码窗口 19
2.2.4 Properties窗口 22
2.2.5 动态帮助 23
2.3 使用VB.NET 23
2.3.1 在代码中设置窗体属性 23
2.3.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 VS.NET的有用功能 37
2.5.1 任务列表 37
2.5.2 Command窗口 38
2.5.3 Server Explorer 38
2.5.4 在Visual Studio .NET中记录和使用宏 39
2.6 小结 40
第3章 公共语言运行库 41
3.1 .NET应用程序的元素 41
3.1.1 程序集 41
3.1.2 模块 42
3.1.3 类型 42
3.2 版本化和部署 43
3.2.1 对于版本化的更好支持 43
3.2.2 更好的部署 44
3.3 内存管理 44
3.3.1 更好的垃圾回收功能 44
3.3.2 更快的对象内存分配 49
3.3.3 GC的优化 49
3.4 跨语言的集成 51
3.4.1 通用类型系统 51
3.4.2 元数据 53
3.4.3 对元数据的更好支持 53
3.4.4 属性 54
3.4.5 Reflection API 56
3.5 IL Disassembler 56
3.6 小结 57
第4章 变量和类型 58
4.1 值类型和引用类型的区别 58
4.2 值类型(结构) 60
4.3 显式转换 68
4.3.1 Option Strict、Option Explicit和Option Compare 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 面向对象的术语 85
5.1.1 对象、类和实例 85
5.1.2 对象的组成 85
5.2 使用对象 88
5.2.1 对象的声明和实例化 89
5.2.2 对象引用 91
5.2.3 取消对象的引用 91
5.2.4 前期及后期绑定 91
5.3 创建类 95
5.3.1 创建基类 95
5.3.2 构造函数方法 111
5.3.3 终止和清除 112
5.4 高级概念 115
5.4.1 重载方法 115
5.4.2 重载构造函数方法 117
5.4.3 共享方法、变量和事件 119
5.4.4 委托 123
5.4.5 类和组件 128
5.5 小结 131
第6章 继承和接口 132
6.1 继承 132
6.2 多接口 177
6.2.1 对象接口 177
6.2.2 辅助接口 178
6.3 小结 184
第7章 对象和组件的应用 185
7.1 抽象性 185
7.2 封装性 187
7.3 多态性 190
7.3.1 方法签名 190
7.3.2 实现多态性 190
7.4 继承 200
7.4.1 使用继承的场合 200
7.4.2 继承和多接口 203
7.4.3 进一步探讨 209
7.4.4 “脆弱”的基类问题 210
7.5 小结 213
第8章 命名空间 214
8.1 命名空间的定义 214
8.1.1 命名空间和引用 217
8.1.2 通用的命名空间 218
8.2 导入命名空间并指定别名 221
8.2.1 导入命名空间 221
8.2.2 为命名空间指定别名 222
8.3 创建自己的命名空间 222
8.4 小结 225
第9章 错误处理 226
9.1 VB6中的错误处理 226
9.2 .NET中的异常 228
9.2.1 异常的属性和方法 228
9.2.2 异常与VB6中Err对象的区别 229
9.2.3 常用的异常类型 229
9.3 VB.NET中的结构化异常处理关键字 230
9.3.1 Try、Catch和Finally关键字 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.1 Message属性 237
9.4.2 InnerException 属性和 TargetSite 属性 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.5.2 其他的System.Xml.Xsl 类和接口 287
10.6 ADO.NET 287
10.6.1 ADO.NET和SQL Server 的内置XML特征 289
10.6.2 类型化的DataSet对象 291
10.6.3 生成类型化的DataSet 291
10.7 小结 296
第11章 用ADO.NET访问数据 297
11.1 ADO.NET体系结构 298
11.1.1 ADO.NET组件 298
11.1.2 ADO和ADO.NET之间的区别 299
11.2 .NET 数据提供程序 302
11.2.1 Connection对象 303
11.2.2 Command对象 303
11.2.3 DataReader对象 304
11.2.4 DataAdapter对象 306
11.2.5 SQL Server .NET数据提供程序 309
11.2.6 OLE DB .NET数据提供程序 309
11.3 DataSet组件 309
11.3.1 DataTableCollection 310
11.3.2 DataRelationCollection 310
11.3.3 ExtendedProperties 310
11.3.4 创建和使用DataSet对象 311
11.3.5 ADO.NET的DataTable对象 315
11.4 ADO.NET中的连接池 316
11.5 在ADO.NET中使用存储过程 316
11.5.1 创建存储过程 317
11.5.2 调用存储过程 319
11.6 创建Data Access组件 321
11.6.1 构造函数 323
11.6.2 属性 324
11.6.3 存储过程XML结构 325
11.6.4 方法 325
11.7 使用DataSet对象绑定DataGrid 338
11.8 小结 340
第12章 Windows窗体 341
12.1 Windows 窗体的重要性 341
12.2 System.Windows.Forms命名空间 341
12.3 将窗体用作类 343
12.3.1 通过Sub Main使用窗体 344
12.3.2 .NET中的窗体定义 344
12.4 设计时的窗体 345
12.4.1 设计期间显示的网格 345
12.4.2 设置启动窗体 345
12.4.3 窗体边框 346
12.4.4 始终置顶—— TopMost属性 346
12.4.5 owned form 347
12.4.6 启动位置 348
12.4.7 窗体的透明性 348
12.4.8 可视化继承 350
12.4.9 窗体尺寸限制的设置 350
12.4.10 滚动窗体 350
12.5 运行时的窗体 351
12.6 控件 351
12.6.1 以Tab键切换控件的顺序 352
12.6.2 控件数组 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.13 使用 ActiveX 控件 377
12.6.14 其他方便的编程技巧 377
12.6.15 MDI窗体 377
12.6.16 VB.NET中的MDI示例 379
12.6.17 对话框窗体 380
12.7 小结 382
第13章 创建Windows控件 383
13.1 控件源 383
13.1.1 内置控件 383
13.1.2 现有的ActiveX 控件 383
13.1.3 第三方控件 384
13.1.4 自定义控件 384
13.2 在.NET中开发自定义控件 384
13.2.1 从另一个控件继承 384
13.2.2 建立复合控件 385
13.2.3 从头编写控件 385
13.3 从现有的控件中继承 385
13.3.1 进程的概述 386
13.3.2 创建一个仅能输入数值的文本框 386
13.3.3 修改自定义控件 389
13.3.4 为自定义控件增加额外的逻辑处理 389
13.3.5 为自定义控件创建属性 390
13.3.6 其他有用的特性 393
13.3.7 为继承的控件建立自定义事件 393
13.3.8 创建一个限制所选项数量的复选列表框 394
13.4 Control和UserControl基类 397
13.4.1 Control类 397
13.4.2 UserControl 类 399
13.5 复合的UserControl 399
13.5.1 创建一个复合的UserControl 400
13.5.2 调整控件的大小 401
13.5.3 为控件设置最小尺寸 401
13.5.4 提供子控件的属性 401
13.5.5 完成例子的步骤 402
13.6 从头建立控件 406
13.7 在工具箱上附加一个图标 412
13.8 小结 413
第14章 Web窗体 414
14.1 Web 窗体 414
14.1.1 设置环境 414
14.1.2 HelloWorld Web 窗体 414
14.2 剖析Web窗体 418
14.2.1 模板的表示方式 419
14.2.2 代码部分 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.5.5 用户控件 432
14.6 Web窗体中的事件 432
14.6.1 Web窗体的生存期 432
14.6.2 事件类别 433
14.7 Web窗体与ASP 434
14.8 在Web窗体之间传送控件 436
14.9 最后一个示例 436
14.10 小结 449
第15章 创建Web控件 450
15.1 创建自定义控件的原因 450
15.2 何时创建自己的控件 451
15.3 自定义Web控件的类型 451
15.3.1 Web用户控件 451
15.3.2 子类控件 452
15.3.3 复合控件 453
15.3.4 模板控件 453
15.4 何时使用自定义的Web控件 453
15.5 创建Web用户控件 454
15.5.1 建立一个简单的WUC 454
15.5.2 把Web页面转换为WUC 459
15.5.3 把Web用户控件项添加到项目中 467
15.5.4 在Web用户控件中重用代码 470
15.5.5 @ Control指令 471
15.5.6 Web用户控件和@ Register指令 471
15.5.7 Web用户控件 472
15.5.8 扩展 Web用户控件 484
15.5.9 Web用户控件的其他功能 485
15.6 创建子类控件 485
15.6.1 创建一个试验台项目 486
15.6.2 子类控件和Web自定义控件模板 487
15.6.3 Render方法 489
15.6.4 开发子类控件 491
15.7 小结 499
第16章 数据绑定 500
16.1 显示数据 500
16.1.1 保存所做更改 502
16.1.2 Update语句简述 505
16.2 主/从数据绑定 507
16.2.1 一个DataGrid中有多个相关的表 507
16.2.2 更有用的解决方案 511
16.3 窗体 514
16.3.1 在记录之间移动 517
16.3.2 保存改变的内容 520
16.4 什么数据可以进行绑定 524
16.4.1 列表 524
16.4.2 对象的属性 525
16.5 小结 526
第17章 使用传统的COM和接口 528
17.1 传统的COM 528
17.2 现在使用的COM和.NET 529
17.2.1 传统的组件 529
17.2.2 .NET应用程序 532
17.2.3 调试 534
17.2.4 直接使用TlbImp 535
17.2.5 后期绑定 535
17.3 ActiveX控件 540
17.3.1 传统ActiveX控件 541
17.3.2 另一个.NET应用程序 543
17.3.3 再次调试 544
17.4 在COM中使用.NET组件 545
17.4.1 .NET组件 545
17.4.2 RegAsm 547
17.4.3 TlbExp 550
17.5 小结 550
第18章 组件服务 551
18.1 事务处理 551
18.2 事务处理组件 553
18.3 事务处理的其他方面 566
18.3.1 人工事务处理 566
18.3.2 JIT 567
18.3.3 对象池 567
18.3.4 其他情况 567
18.4 排队组件 568
18.4.1 排队组件的范例 568
18.4.2 使用排队组件进行事务处理 574
18.5 小结 575
第19章 线程 576
19.1 线程的含义 576
19.1.1 进程、应用程序域与线程 577
19.1.2 线程的调度 579
19.1.3 线程安全和线程亲和 580
19.1.4 何时使用线程 581
19.1.5 设计后台任务 582
19.2 实现线程 583
19.2.1 概述 583
19.2.2 线程选项 589
19.2.3 共享的数据 594
19.2.4 取消后台任务 613
19.3 小结 619
第20章 远程技术 620
20.1 远程技术概述 621
20.1.1 基本术语 621
20.1.2 SingleCall、Singleton和激活的对象 623
20.2 远程技术的实现 626
20.2.1 一个简单的例子 627
20.2.2 把IIS用作远程主机 636
20.2.3 使用Activator.GetObject 641
20.2.4 基于接口的设计 641
20.2.5 使用生成的代理 643
20.3 小结 644
第21章 Windows服务 645
21.1 Windows服务范例 645
21.2 Windows服务的特性 646
21.3 与Windows服务交互 646
21.4 创建Windows服务 647
21.4.1 用于Windows 服务的.NET Framework类 647
21.4.2 Windows服务的其他类型 650
21.5 用VB.NET创建Windows服务 650
21.6 创建计数监视器服务 652
21.6.1 安装服务 653
21.6.2 启动服务 654
21.6.3 卸载服务 655
21.7 监视性能计数器 655
21.7.1 创建性能计数器 655
21.7.2 把计数器集成到服务中 656
21.7.3 修改性能计数器中的值 657
21.8 与服务通信 658
21.8.1 ServiceController类 658
21.8.2 把ServiceController集成到例子中 659
21.8.3 ServiceController的更多内容 660
21.9 定制命令 661
21.10 创建文件监视程序 663
21.10.1 使用Eventlog编写事件 663
21.10.2 创建FileSystemWatcher 664
21.11 调试服务 667
21.12 小结 670
第22章 Web服务 671
22.1 Web服务简介 671
22.2 早期的体系结构设计 672
22.2.1 网络角度 672
22.2.2 应用程序的发展 672
22.2.3 通过Web合并Internet和应用程序 673
22.2.4 Web服务基础 673
22.2.5 问题 674
22.2.6 其他技术 675
22.2.7 Web服务的基础所忽略的问题 675
22.3 建立Web服务 680
22.4 一个更真实的例子 682
22.5 返回各种数据集 686
22.6 VB.NET和System.Web.Services 688
22.6.1 System.Web.Services命名空间 688
22.6.2 System.Web.Services.Description命名空间 689
22.6.3 System.Web.Services.Discovery命名空间 690
22.6.4 System.Web.Services.Protocols命名空间 690
22.7 利用Web服务进行设计 691
22.7.1 Web服务的作用 692
22.7.2 Web服务与其他协议和工具的组合 692
22.7.3 Web服务代理 692
22.7.4 XML Web服务的状态管理 692
22.7.5 把DNS用作模型 693
22.8 Web服务中的安全性 696
22.8.1 加密套接字层 696
22.8.2 目录级安全性 697
22.8.3 其他类型的安全性 697
22.9 分布式体系结构的缺点 697
22.9.1 安全性方面的缺点 697
22.9.2 状态方面的缺点 698
22.9.3 事务处理方面的缺点 698
22.9.4 速度和连接性方面的缺点 698
22.10 Web服务的发展前景 698
22.11 小结 699
第23章 VB.NET和Internet 700
23.1 下载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.1 代码访问权限 736
24.2.2 基于角色的权限 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 DLL Hell 788
25.5.2 XCOPY部署 788
25.5.3 .NET以前的部署选项 789
25.5.4 Visual Studio .NET中的应用程序部署 791
25.6 Visual Studio .NET部署项目 791
25.6.1 项目模板 791
25.6.2 创建一个部署项目 793
25.6.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 User Interface编辑器 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 升级:使用Visual Basic兼容库 842
A.1 转换为VB.NET 842
A.1.1 什么是兼容库 842
A.1.2 引用兼容库 843
A.1.3 升级工具 843
A.2 兼容库引用列表 848
A.2.1 语法声明的改变 848
A.2.2 元素替换为方法 848
A.2.3 数据类型的改变 849
A.2.4 布尔运算符的改变 850
A.2.5 类和接口的改变 850
Visual Basic.NET是世界上使用得最广泛的编程语言。随着.NET应用的增多,VB的重要性也日益凸现。而新推出的Visual Studio .NET 2003则将VB推向了新的高点,极大地提高了开发人员的效率,为公司和企业带来了新的商机。Microsoft公开宣称,当生产率是最重要的因素时,VB.NET是开发应用程序的最佳语言。VB.NET 2003为广大程序员提供了更为强大、便捷、易用的编程工具。
为了便于读者更全面、深入地了解VB.NET 2003的核心功能和新增特性,本书首先详细解释了.NET性能,随后逐一介绍了公共语言运行库、OOP、命名空间、ADO.NET、Windows窗体和Web窗体、数据绑定、线程、服务,并特别讲述了VB.NET 2003中新增加的针对移动设备的应用程序开发。每章均针对VB.NET 2003的新功能进行了详细的阐述和介绍。
全书内容全面,翔实,并提供大量的程序示例,便于读者上机练习,巩固所学到的编程技术。另外本书的合作站点还提供了源代码下载,以方便读者实践。
读者朋友在阅读本书时,宜循序渐进,按章节顺序进行学习,以便于系统地了解全书内容,为您的职业生涯奠定良好的基础。您也可直接选读特定章节,快速了解相关主题的内容。
由于受时间和译者自身水平的限制,翻译过程中难免出现错误和疏漏,敬请大家多多批评指正,反馈信息请发致fwkbook@tup.tsinghua.edu.cn信箱。
杨浩,大学老师,在机械和程序设计等方面有着多年的教学和实战经验,曾翻译过《VB.NET入门经典(第3版)》等多部与.NET技术有关图书。审校者简介杨智,计算机专业硕士,软件开发项目经理,从事VB应用程序开发多年,近几年,利用VB.NET和C#等语言开发多个基于.NET框架的大型系统。
2002年,Visual Basic进行了自发布以来最大的变革,引入了Visual Basic .NET(VB.NET)。十几年来,VB一直没有进行大的修订,但.NET已经远远超出了这种修订,它改变了软件开发的几乎所有方面。从集成Internet功能到创建面向对象的架构,VB.NET向传统的VB开发人员发出了挑战,要求他们学习全新的概念和技术。
首先,需要学习的是VB.NET和旧版本之间的区别。在一些情况下,相同的功能要采用不同的方式来实现。这些改变不是任意的,而是有很充足的理由。但我们必须抛弃一些旧习惯,培养新习惯。
接着,必须接受新概念。完全的面向对象、新的组件技术、用于本地和Internet界面的新可视化工具,所有这些都是在VB.NET中高效开发应用程序的必备技能。
本书将全面阐述VB.NET 2003:首先讨论了.NET Framework;在本书的结尾,讨论了部署.NET 应用程序的最佳方式。中间部分讨论了从数据库访问到与诸如XML等其他技术集成的一切内容,并且详细地介绍了新增功能。您将会看到,VB.NET已经成为一种强大且易于使用的语言,使您在编写网络程序时,就如同编写桌面程序一样得心应手。
VB的重要性
在.NET的早期应用中,Microsoft的新语言C#得到了广泛的关注。但随着.NET应用的增多,VB的重要性也逐渐显现出来。Microsoft对外宣称,当生产率是最重要的因素时,VB.NET是开发应用程序的最佳语言。
VB的未来开发将强调以最高效的方式访问整个.NET Framework的能力,而C#开发强调的是编写代码的经验,这非常切合VB的传统作用:语言开发人员在现实世界中使用它尽可能快地创建商务应用程序。
区别不仅仅在学术方面。.NET Framework的一个最重要的优点是,它允许用非常少的代码编写应用程序。在商务应用程序中,主要目标是编写业务逻辑,尽可能减少例程编码任务。其价值在新的.NET Framework中不是编写出许多代码,而是用尽可能少的代码编写出更健壮、有效的应用程序。
VB非常适合于这种类型的开发,所以成为目前既经济又实惠的软件开发工具,将来它还会为此目的做进一步的细化和改进。
本书读者对象
本书主要针对有经验的、希望深入学习VB.NET的开发人员。本书讨论了最常见的编程任务和概念,既适合于从早期版本过渡到VB.NET版本的开发人员,也适合于以前使用过VB.NET,目前需要更深入理解VB.NET的开发人员。
本书对VB.NET概念进行了全面的介绍,但.NET Framework的内容广博而丰富,不可能在一本书里讲清楚,本书没有把Web开发作为最重要的内容,但包含了VB.NET中基于浏览器的编程内容,专业的Web开发人员应该参考由清华大学出版社引进并出版的《ASP.NET 1.1高级编程》一书。
使用本书需要的条件
为了完全而充分地利用本书,尽管可以使用包含在.NET Framework SDK中的命令行工具创建VB.NET应用程序,但仍需要VS.NET 2003(Professional版或更高版本),其中包含.NET Framework SDK。可以使用VS.NET 2002,但一些对话框和菜单会略有不同。
此外:
● 一些章节要使用SQL Server 2000,但也可以使用Visual Studio .NET附带的MSDE (Microsoft Data Engine)来运行示例代码。
● 有几章要使用Internet Information Services (IIS),在Windows 2003 Server、Windows 2000 Server、Windows 2000 Professional和Windows XP系统中均配有IIS,但在默认状态下是不安装的。
● 第18章要使用MSMQ来进行排队事务处理,在Windows 2003 Server、Windows 2000 Server和Windows 2000 Professional系统中均配有MSMQ,但在默认状态下是不安装的。
本书主要内容
第1章解释了.NET的重要性和它对应用程序开发的影响。为了理解为什么需要.NET,以及当前开发技术存在哪些缺陷,我们首先讨论了包括COM和DNA在内的体系结构模式,然后讲述.NET如何使用公共语言运行库(Common Language Runtime, CLR)来纠正这些技术中的缺点。
第2章讨论了一个VB.NET应用程序。在开发这个应用程序时,我们将讨论VS.NET的一些新功能。
第3章探讨了.NET平台的核心—— 公共语言运行库。CLR负责管理为.NET平台编译的代码的执行。我们将论述版本变化和部署、内存管理、跨语言集成、元数据和IL反汇编程序。
第4章将讨论Visual Basic中的许多常用类型。本章的主要目的是让读者熟悉值类型和引用类型,帮助具有VB 6背景的开发人员理解VB.NET中定义变量的方式的主要差异。
从第5章开始论述VB.NET中面向对象编程的特性。本章将定义对象、类、实例、封装、抽象、多态性和继承性。
第6章讲述了继承的概念及在VB.NET中如何利用继承。我们将解释如何创建简单和抽象的基类,如何创建可以派生其他类的基类。
第7章把第5章和第6章的理论应用于实践。我们将讨论4个主要的面向对象概念(抽象性、封装性、多态性、继承),以及如何将这些概念应用到设计和开发中,以创建高效的面向对象的应用程序。
第8章介绍了命名空间及其层次结构。解释了命名空间的概念和某些常用的命名空间。此外,还介绍了如何创建新的命名空间,以及在项目中如何导入命名空间,如何给命名空间起别名。
第9章通过详细讨论CLR异常处理程序和新的Try…Catch…Finally结构,描述了VB.NET中错误处理的原理。除此之外,还描述了错误和跟踪的记录,以及如何利用这些方法获取程序工作方式的反馈。
第10章展示了.NET Framework用于XML的生成和操作的功能,讲述了.NET Framework中与XML相关的命名空间,并且详细地讨论了这些命名空间所包含的类的子集。该章还概述了一系列利用XML的技术,特别是ADO.NET和SQL Server。
第11章集中讨论了需要了解的ADO.NET对象模型,以便能够建立灵活、快速和可伸缩的数据访问对象和应用程序。该章还讲述了ADO向ADO.NET的转化,讨论了为了建立对.NET应用程序的数据访问而需要理解的ADO.NET主要对象。
第12章讲述了Windows窗体,主要讨论了窗体和内置控件。还讨论了哪些是新的,哪些是对Visual Basic以前版本的修改,还讨论了System.Windows.Forms命名空间。
第13章讨论了如何创建自己的Windows控件。特别是讨论了如何从其他控件继承,如何建立复合控件,如何根据Control类从头开始编写控件。
第14章探讨了Web窗体以及如何从它们的使用中受益。本章通过使用越来越复杂的示例,讲述了如何利用快速应用程序开发(Rapid Application Development,一般与Windows应用程序相关)的强大功能开发Web应用程序。
第15章讨论的是开发Visual Basic控件的一种全新形式:定制Web控件。它描述了.NET Framework中可用的各种形式的自定义Web控件开发,还探讨了Web用户的基本结构和子类控件,以及复合控件和模板控件。
第16章介绍了.NET中的数据绑定是如何把底层数据库和控件关联起来的,这比使用以前版本的VB容易一些。我们将论述.NET如何自动从底层数据库中为控件填充数据,并提供更新底层数据库的一种机制,以响应用户可能对Windows应用程序所做的修改。
第17章介绍了COM和.NET组件的互操作性,Microsoft提供了哪些工具将这两项技术链接起来。
第18章探讨了.NET组件服务,特别讨论了事务处理和排队组件。
第19章将学习线程,理解.NET Framework中的各种对象如何让用户开发出多线程的应用程序。我们将讨论如何创建线程,如何将它们与进程关联在一起,以及多任务和多线程之间的差异。
第20章讨论如何在传统的3层应用程序设计中使用远程服务。本章将论述远程服务的基本体系结构,并建立一个基本服务器和客户程序,使用一个对象将客户的请求传递到业务层上。接着介绍如何使用串行化把服务器上更复杂的对象传递给客户,以及如何使用调用环境(call context),在每个调用中,把额外的数据从客户端传递给服务器,但无需改变对象模型。
第21章讨论了在Windows服务的生成过程中,如何使用VB.NET。该章将讨论Windows服务的创建、安装、运行和调试。
第22章探讨了如何利用VB.NET创建和使用Web服务。该章还讨论了CLR提供的用于建立和利用Web服务的抽象类,论述了一些支持Web服务的技术。最后,该章讲述了使用分布式体系结构的缺点和Web服务的前景。
第23章介绍了如何从Web上下载资源,如何设计自己的通信协议,如何在应用程序中复用Web浏览器控件。
第24章研究为了注重安全性而由.NET提供的附加工具和功能。在该章中,我们讨论了Caspol.exe和Permview.exe,以及它们如何帮助建立和维护安全策略,还描述了System. Security.Permissions命名空间,以及它与管理权限的关系。最后讨论了System.Security.Cryptography命名空间,并运行一些代