本书面向具有ASP或Visual Basic开发经验的高级开发人员,全面深入地介绍了ASP.NET及其相关知识,是进行ASP.NET开发的高级编程指南。通过本书的学习,可以全面掌握利用.NET Framework进行Web应用程序开发的技巧。
本书主要内容包括:ASP.NET和.NET Framework的基本概念;使用服务器控件以及数据管理技术创建ASP.NET页面;开发、保护和配置Web应用程序;基类库、组件及其可扩展性;Web服务和ASP.NET在移动领域中的应用;调试技术、性能、迁移性和互操作性等问题;ASP.NET相关知识在实际开发环境中的集成等。
第1章 ASP.NET概述 1
1.1 是升级还是创新 1
1.2 开始使用ASP.NET 2
1.3 安装.NET 2
1.3.1 配置范例 3
1.3.2 运行范例 3
1.4 Visual Studio .NET 2003 5
1.5 在Visual Studio .NET 2003中创建ASP.NET应用程序 7
1.6 ASP.NET与ASP的区别 8
1.6.1 使用新技术的原因 8
1.6.2 ASP.NET的优点 9
1.7 编写ASP.NET页面 18
1.7.1 创建Web站点 18
1.7.2 页面范例 18
1.8 本章小结 21
第2章 认识.NET Framework 22
2.1 .NET简介 23
2.1.1 .NET的组成 23
2.1.2 .NET战略 23
2.1.3 Windows DNA存在的问题 25
2.1.4 需要.NET的原因 27
2.2 公共语言运行库(CLR) 31
2.2.1 CLR服务 31
2.2.2 通用功能 32
2.2.3 使用对象 32
2.2.4 命名空间 33
2.2.5 通用类型系统 34
2.2.6 程序集——版本化和安全性代码 40
2.2.7 CLR和COM 44
2.2.8 中间语言 44
2.2.9 应用程序域 45
2.3 .NET Framework详解 46
2.3.1 应用程序开发技术 47
2.3.2 类库 49
2.3.3 基类库 49
2.4 ASP.NET的设计目标 50
2.4.1 消除对脚本引擎的依赖性 51
2.4.2 性能 51
2.4.3 在ASP基础上的升级 52
2.4.4 便于部署 52
2.4.5 强大的工具支持 53
2.4.6 更简单、更灵活的配置 54
2.4.7 分解的“开放”设计 55
2.4.8 与语言无关 57
2.4.9 代码更少、更简练、更易于维护 58
2.4.10 功能强大的身份确认模型 58
2.4.11 正确认识错误的存在 59
2.5 本章小结 59
第3章 .NET语言 60
3.1 所提供的语言 61
3.1.1 VBScript何去何从 61
3.1.2 Visual Studio还是Notepad 61
3.2 Visual Basic .NET 62
3.2.1 面向对象功能 62
3.2.2 语言的变化 71
3.3 C# 75
3.3.1 类 76
3.3.2 方法 77
3.3.3 属性 78
3.3.4 构造函数 79
3.3.5 析构函数 79
3.3.6 继承性 80
3.3.7 接口 81
3.3.8 引用 82
3.3.9 异常处理 82
3.3.10 XML文档 84
3.3.11 非安全代码 87
3.3.12 运算符重载 88
3.4 JScript .NET 88
3.5 C++ 89
3.6 Visual J# .NET 89
3.7 所支持的其他语言 89
3.8 .NET语言编译器 90
3.9 CLR的优点 93
3.9.1 通用API 93
3.9.2 通用类型 94
3.9.3 跨语言继承性 95
3.9.4 跨语言调试和记录 97
3.10 性能问题 97
3.10.1 语言 97
3.10.2 后期绑定代码 97
3.11 常用范例 98
3.11.1 变量声明 98
3.11.2 函数和过程 98
3.11.3 语法的区别 99
3.11.4 循环 100
3.11.5 类型转换 102
3.12 本章小结 103
第4章 编写ASP.NET页面 104
4.1 编码问题 104
4.1.1 以前的编码方式 104
4.1.2 ASP.NET页面中的编码 106
4.1.3 回送识别 110
4.2 Page类 112
4.2.1 HttpRequest 对象 115
4.2.2 HttpResponse对象 117
4.2.3 页面处理步骤 120
4.2.4 页面状态 129
4.2.5 页面指令 130
4.3 后台编码 135
4.3.1 开发工具中的后台编码 135
4.3.2 使用后台编码 136
4.3.3 在ASP.NET页面中继承后台编码类文件 138
4.4 页面高速缓存 139
4.4.1 输出高速缓存范例 139
4.4.2 通过浏览器实现高速缓存 140
4.5 智能导航 141
4.6 用户控件 141
4.6.1 建立用户控件的方法 142
4.6.2 用户控件属性 146
4.6.3 用户控件事件 147
4.6.4 用户控件的后台编码 148
4.6.5 用户控件的局部页面高速缓存 149
4.7 本章小结 151
第5章 服务器控件与验证控件 152
5.1 服务器控件的概念 152
5.1.1 再论ASP.NET页面模型 152
5.1.2 练习使用服务器控件 155
5.1.3 关于范例应用程序 156
5.1.4 使用服务器控件的场合 157
5.1.5 ASP.NET中的可用控件 158
5.2 HTML服务器控件 159
5.2.1 HtmlControl基类 159
5.2.2 HTMLGenericControl类 160
5.2.3 HTML控件的专有类 161
5.2.4 HTML服务器控件的用法 163
5.2.5 HTML服务器控件范例 164
5.3 ASP.NET输入验证控件 181
5.3.1 输入验证控件的作用 181
5.3.2 BaseValidator类 182
5.3.3 验证控件的特有成员 182
5.3.4 验证控件的用法 183
5.4 本章小结 190
第6章 ASP.NET Web Form控件 191
6.1 基本的ASP.NET Web Form控件 191
6.1.1 为什么要有另外一组控件 192
6.1.2 基类WebControl 192
6.1.3 特殊的Web Form控件类 194
6.1.4 使用Web Form控件 195
6.1.5 ASP Web Form控件范例 201
6.2 ASP.NET列表控件 216
6.2.1 ListControl基类 216
6.2.2 特殊的列表控件类 217
6.2.3 使用ASP列表控件 218
6.3 ASP.NET中的其他多功能控件 223
6.4 本章小结 228
第7章 列表控件和数据绑定 229
7.1 获取范例文件 229
7.2 数据绑定的相关概念 230
7.2.1 在服务器上完成所有操作 230
7.2.2 显示数据—— ASP和ASP.NET 231
7.2.3 数据绑定的语法 232
7.2.4 单值数据绑定 232
7.2.5 重复值数据绑定 236
7.2.6 重复值数据绑定的简单范例 243
7.3 添加样式和模板 256
7.3.1 使用样式属性 256
7.3.2 给DataGrid控件添加样式 257
7.3.3 对数据绑定控件使用模板 258
7.3.4 处理数据绑定事件 273
7.3.5 对DataGrid中的行进行排序和筛选 275
7.3.6 DataGrid中的自动分页 280
7.4 使用数据绑定控件编辑数据 284
7.4.1 利用DataGrid控件编辑数据 284
7.4.2 利用DataList控件选择和编辑数据 289
7.5 本章小结 295
第8章 .NET数据管理引论 296
8.1 数据存储和数据访问 296
8.1.1 转向分布式环境 297
8.1.2 XML——将来的数据格式 297
8.1.3 是否是另一项数据访问技术 298
8.1.4 .NET意味着断开数据的连接 299
8.1.5 .NET意味着XML数据 301
8.1.6 .NET意味着托管代码 301
8.1.7 .NET意味着新的编程模型 301
8.2 .NET中的数据管理 302
8.2.1 数据管理的系统命名空间 302
8.2.2 导入所需的命名空间 303
8.3 基本的ADO.NET类 305
8.3.1 ADO和ADO.NET的技术比较 306
8.3.2 Connection类 307
8.3.3 Command类 308
8.3.4 DataAdapter类 308
8.3.5 DataSet类 310
8.3.6 DataTable类 311
8.3.7 DataView类 312
8.3.8 DataReader类 313
8.3.9 DataReader和DataSet的选取 315
8.3.10 .NET中的关系数据提供程序 315
8.4 .NET中常见的数据访问任务 316
8.4.1 在自己的系统上创建范例 317
8.4.2 ASP.NET与IIS 6.0和Windows Server 2003 318
8.4.3 使用DataReader对象 319
8.4.4 一个简单的DataSet范例 321
8.4.5 含有多个表的DataSet范例 323
8.4.6 返回DataSet对象的用户控件 327
8.5 .NET中的XML引论 328
8.5.1 基本的XML对象 328
8.5.2 XPathNavigator类 331
8.5.3 XmlTextWriter类 333
8.5.4 XmlReader类 333
8.5.5 XmlValidatingReader类 334
8.5.6 XslTransform类 335
8.6 .NET中常见的XML任务 335
8.6.1 通过DOM的XML文档访问操作 336
8.6.2 使用XPathNavigator对象的XML文档访问操作 338
8.6.3 搜索XML文档 342
8.6.4 XML TextWriter对象范例 344
8.6.5 XML TextReader对象范例 347
8.6.6 XSL Transform对象范例 349
8.7 选择一种数据存储的方法 350
8.7.1 关键在于访问和处理 351
8.7.2 查询的新方法 351
8.7.3 传输协议是大势所趋 352
8.7.4 .NET是一套伟大的解决方案 352
8.8 本章小结 352
第9章 处理关系数据 353
9.1 获得范例文件 353
9.2 访问复杂数据 354
9.2.1 利用DataReader访问复杂数据 354
9.2.2 通过DataSet访问复杂数据 356
9.2.3 访问和显示嵌套的数据 357
9.2.4 使用数据库的存储过程 360
9.3 处理DataTable对象 368
9.3.1 创建和填充新DataTable的代码 368
9.3.2 在表中添加数据行 369
9.3.3 为DataSet添加表 370
9.3.4 管理约束和默认值 370
9.3.5 指定主键和外键 373
9.3.6 添加、修改、移去和删除行 377
9.3.7 处理DataTable事件 384
9.3.8 使用表和列映射 388
9.4 数据的排序和筛选 391
9.4.1 DataTable对象中的排序和筛选 391
9.4.2 DataView对象中的排序和筛选 396
9.5 本章小结 398
第10章 关系数据源的更新 399
10.1 获得范例文件 399
10.2 利用Command对象更新数据 400
10.2.1 使用Command对象和SQL语句 400
10.2.2 使用存储过程和Command对象 403
10.3 使用事务处理更新数据源 406
10.3.1 数据库事务 407
10.3.2 基于连接的事务处理 410
10.4 更新DataSet对象中的数据 414
10.4.1 深入到DataAdapter对象内部 414
10.4.2 使用DataAdapter.Update方法 419
10.4.3 使用存储过程更新DataSet 424
10.4.4 DataAdapter中的更新事件 431
10.5 对并发数据更新的管理 435
10.5.1 避免出现并发错误 436
10.5.2 一个并发错误范例 436
10.5.3 仅更新已改变的列 438
10.5.4 利用RowUpdated事件捕获错误 443
10.5.5 更新完成后查找错误 452
10.6 本章小结 456
第11章 .NET中的XML数据管理 457
11.1 获取范例文件 457
11.2 XML和DataSet对象 458
11.2.1 DataSet基于XML的方法 458
11.2.2 将数据从DataSet写入XML文件 459
11.2.3 将数据从XML文件读入DataSet 462
11.2.4 以字符串的形式从DataSet中得到XML 465
11.2.5 DataSet中的嵌套XML和关系数据 466
11.3 处理XmlDataDocument对象 470
11.4 直接从SQL Server中读取XML数据 476
11.5 验证XML文档的有效性 478
11.6 创建和编辑XML文档 486
11.7 使用XSL和XSLT转换 492
11.7.1 一个XSL转换的范例 492
11.7.2 用XmlResolver加载样式表和模式 496
11.8 本章小结 498
第12章 Web应用程序和global.asax 499
12.1 IIS Web根目录以及应用程序 499
12.1.1 创建IIS虚拟目录 500
12.1.2 把文件夹标记为应用程序 501
12.1.3 Windows Server 2003 503
12.2 ASP.NET Web应用程序 506
12.2.1 注册组件 506
12.2.2 应用程序代码:global.asax 510
12.3 应用程序状态的管理 514
12.3.1 Session—— 管理用户状态 515
12.3.2 Application—— 管理应用程序状态 517
12.3.3 Cache—— 管理瞬时状态 519
12.4 应用程序事件 528
12.4.1 事件的语法和原型 529
12.4.2 支持的事件 529
12.4.3 事件范例 532
12.5 高级主题 537
12.5.1 静态变量 538
12.5.2 为global.asax使用自己的基类 539
12.5.3 将文件扩展名映射到ASP.NET中 540
12.5.4 异步应用程序事件 542
12.6 本章小结 547
第13章 ASP.NET的配置 549
13.1 配置综述 549
13.1.1 ASP的配置 550
13.1.2 ASP.NET的配置 551
13.1.3 配置文件格式 554
13.2 常用的配置设置 558
13.2.1 通用配置设置 558
13.2.2 页面配置 561
13.3 跟踪 571
13.3.1 传统的ASP 跟踪 571
13.3.2 ASP.NET 跟踪 572
13.3.3 查看跟踪输出 572
13.3.4 跟踪配置设置 574
13.4 定制错误 575
13.4.1 错误模式 576
13.4.2 总是显示ASP.NET错误页面 577
13.4.3 定制错误页面 577
13.4.4 配置IIS和ASP.NET来支持相同的错误页面 578
13.5 身份验证和授权 579
13.5.1 身份验证 579
13.5.2 护照验证 581
13.5.3 授权 582
13.6 Web服务 582
13.6.1 国际化和编码 583
13.6.2 编译选项 585
13.6.3 执行身份的控制 590
13.6.4 用HTTP处理程序来扩展ASP.NET 592
13.6.5 用HTTP模块扩展ASP.NET 596
13.6.6 配置ASP.工作进程 597
13.6.7 机器密钥 606
13.7 高级问题 607
13.7.1 指定位置 607
13.7.2 设置路径 608
13.7.3 锁定配置设置 608
13.7.4 定制配置处理程序 611
13.8 本章小结 613
第14章 保障ASP.NET应用程序的安全 614
14.1 Windows 2000和IIS安全性概述 614
14.1.1 安全性需求 614
14.1.2 安全性概念 615
14.1.3 Windows的身份验证过程 618
14.1.4 在IIS中验证身份 619
14.1.5 在Windows中授权 623
14.1.6 在IIS中授权 624
14.2 ASP.NET安全概述 624
14.2.1 ASP.NET安全进程 625
14.2.2 ASP.NET模仿 625
14.2.3 Windows Server 2003和IIS 6.0 626
14.2.4 ASP.NET安全选项 630
14.3 程序设计的安全和个性化处理 647
14.3.1 角色和身份概述 647
14.3.2 获取用户的身份和角色 647
14.4 ASP.NET安全范例 649
14.4.1 获取范例文件 649
14.4.2 在服务器上建立范例 650
14.4.3 Windows身份验证范例 652
14.4.4 基于表单的身份验证范例 655
14.4.5 简单的个性化范例 667
14.5 ASP.NET进程账户和信任级别 671
14.5.1 指定进程账户 671
14.5.2 指定信任级别 674
14.6 本章小结 675
第15章 处理集合和列表 677
15.1 处理集合和列表 677
15.2 System.Collections核心接口 678
15.2.1 IEnumerable和IEnumerator接口 679
15.2.2 ICollection和IList接口 682
15.2.3 列表排序——IComparer和IComparable 689
15.2.4 ICollection接口 694
15.2.5 处理字典对象 699
15.3 System.Collections.Specialized命名空间 711
15.3.1 StringCollection类 711
15.3.2 StringDictionary类 712
15.4 强制类型的集合 712
15.4.1 定义定制类型 713
15.4.2 创建集合类 714
15.4.3 使用集合类 716
15.4.4 DictionaryBase和CollectionBase类 717
15.4.5 可任意处理的枚举对象 719
15.5 本章小结 720
第16章 使用其他基类 721
16.1 目录和文件的处理 721
16.1.1 类的概述 721
16.1.2 DirectoryInfo类和Directory类 722
16.1.3 File类和FileInfo类 724
16.1.4 常见的目录和文件操作 725
16.2 正则表达式 756
16.2.1 模式匹配 756
16.2.2 正则表达式类 758
16.3 本章小结 762
第17章 .NET组件 764
17.1 编写业务对象 764
17.1.1 创建对象 765
17.1.2 编译类 776
17.1.3 测试类 777
17.2 跨语言继承 783
17.2.1 跨语言继承范例 783
17.2.2 .NET中的事务处理 786
17.2.3 服务组件 787
17.3 部署组件 791
17.3.1 什么是程序集 791
17.3.2 程序集和版本问题 792
17.3.3 程序集清单 793
17.3.4 并排执行 795
17.4 本章小结 795
第18章 建立ASP.NET服务器控件 796
18.1 编写简单的控件 796
18.1.1 创建一个C#控件 796
18.1.2 Visual Basic中的控件开发 800
18.1.3 多步页面显示 803
18.1.4 组合控件 816
18.2 编写文本框控件 825
18.2.1 IPostBackDataHandler接口 827
18.2.2 引发事件的控件 829
18.2.3 使用视图状态 836
18.2.4 类型和视图状态 842
18.2.5 关于对象属性和UI模板的更多内容 843
18.2.6 DataBind和OnDataBinding 852
18.3 其他问题 854
18.3.1 访问ASP.NET内部对象 854
18.3.2 编写自适应控件 856
18.3.3 控件属性 857
18.3.4 定制控件构建器 858
18.4 用户控件 858
18.5 本章小结 859
第19章 公布Web服务 860
19.1 Web服务概况 861
19.1.1 常见问题 861
19.1.2 规范 862
19.2 构建ASP.NET Web服务 863
19.3 编写ASP.NET Web服务 869
19.3.1 内联 869
19.3.2 后台编码 869
19.3.3 WebService指令 870
19.3.4 应用程序代码 872
19.4 协议 875
19.4.1 HTTP-GET 875
19.4.2 HTTP-POST 876
19.4.3 SOAP 876
19.5 数据类型 877
19.6 WebMethod和WebService属性 878
19.6.1 WebMethod属性 878
19.6.2 WebService属性 885
19.7 设计ASP.NET Web服务 890
19.7.1 繁琐和简洁 890
19.7.2 无状态与有状态 891
19.7.3 高速缓存与静态 892
19.7.4 异步与同步 893
19.8 高级ASP.NET Web服务 894
19.8.1 控制并整理XML 894
19.8.2 修改Web服务帮助页 897
19.8.3 SOAP头 898
19.9 本章小结 903
第20章 使用Web服务 904
20.1 查找和描述Web服务 904
20.1.1 UDDI 905
20.1.2 Web服务描述语言 907
20.2 构建Web服务代理 910
20.2.1 Fibonacci代理 911
20.2.2 使用Visual Studio .NET 913
20.2.3 使用wsdl.exe 917
20.3 使用代理类 922
20.3.1 控制超时 922
20.3.2 设置URL 923
20.3.3 为访问Web服务器设置代理 924
20.3.4 维护状态 925
20.4 从Web站点到Web服务 928
20.4.1 编写WSDL 928
20.4.2 构建代理 930
20.4.3 使用ScreenScrape代理 931
20.5 设计选择 933
20.5.1 SOAP异常 933
20.5.2 使用SOAP头文件 935
20.6 Web服务的安全性 938
20.6.1 ASP.NET身份验证和授权 938
20.6.2 HTTPS加密和客户证书 943
20.7 高级主题 946
20.7.1 定制的身份验证和授权 947
20.7.2 SOAP Extensions 952
20.8 本章小结 960
第21章 移动控件 961
21.1 无线Web概述 961
21.1.1 WAP 963
21.1.2 WML 964
21.1.3 设备的互操作性 969
21.2 移动控件 970
21.2.1 简单范例 971
21.2.2 查看生成的代码 973
21.2.3 移动控件窗体 976
21.2.4 控件引用 978
21.2.5 978
21.2.6 979
21.2.7 981
21.2.8 983
21.2.9 984
21.2.10 986
21.2.11 990
21.2.12 992
21.2.13 998
21.2.14 999
21.2.15 1002
21.2.16 1002
21.2.17 1002
21.2.18 验证控件 1002
21.3 移动控件的高级主题 1004
21.3.1 设置样式 1004
21.3.2 使用设备的功能 1005
21.3.3 模板 1009
21.3.4 分页 1011
21.4 本章小结和未来展望 1013
21.4.1 移动Internet的未来发展 1013
21.4.2 移动控件的未来发展 1013
第22章 跟踪、错误处理、调试和性能 1015
22.1 跟踪 1015
22.1.1 页面级跟踪 1015
22.1.2 写跟踪信息 1017
22.1.3 应用程序级跟踪 1020
22.2 错误处理 1021
22.2.1 结构化的异常处理 1021
22.2.2 ASP.NET错误处理 1027
22.2.3 向管理员通知错误 1029
22.3 调试 1031
22.3.1 SDK调试器 1032
22.3.2 在Visual Studio .NET中调试代码 1034
22.4 测试与性能 1035
22.4.1 实施 1036
22.4.2 抽样 1043
22.4.3 定制抽样 1043
22.4.4 分析 1046
22.5 本章小结 1046
第23章 迁移和互操作性 1047
23.1 迁移、集成还是重写 1047
23.1.1 迁移 1048
23.1.2 集成 1048
23.1.3 重写 1048
23.1.4 不做任何改动 1048
23.2 ASP.NET 1049
23.2.1 准备工作 1049
23.2.2 内部对象 1049
23.2.3 页面的改变 1057
23.3 语言的变化 1058
23.4 互操作性 1061
23.4.1 跨边界 1061
23.4.2 在.NET中使用COM对象 1064
23.4.3 在COM中使用.NET组件 1067
23.4.4 API调用 1074
23.5 本章小结 1080
第24章 案例研究——IBuyAdventure.NET 1081
24.1 应用程序概述 1081
24.2 IBuyAdventure.NET (IBA.NET) 1081
24.2.1 目标用户 1082
24.2.2 伸缩性—— Web解决方案平台 1082
24.2.3 设计企业的伸缩性 1082
24.3 业务对象和程序集 1083
24.3.1 ProductsDB业务对象 1083
24.3.2 程序集 1087
24.4 IBuyAdventure .NET 数据库 1089
24.4.1 Accounts表 1089
24.4.2 Orders表 1089
24.4.3 Products表 1090
24.4.4 ShoppingCarts表 1090
24.5 应用程序的用户界面 1091
24.6 IBuyAdventure.NET中的用户控件 1092
24.6.1 只有一个服务器端的元素 1095
24.6.2 用C#来编写用户控件和代码 1095
24.6.3 特殊用户控件—— Specials.ascx 1097
24.6.4 类别用户控件—— Categories.ascx 1099
24.6.5 产品详细说明 1104
24.6.6 购物车 1105
24.6.7 显示购物车和改变订单 1109
24.6.8 结账处理与安全性 1114
24.6.9 结账处理 1119
24.7 本章小结 1123
附录A 公用的系统命名空间 1124
附录B 提高性能的技巧 1128
B.1 管理视图状态 1128
B.2 管理会话状态 1128
B.3 使用输出高速缓存 1129
B.4 仅在合适的位置使用服务器控件 1129
B.5 使用DataReader,而不是DataSet 1130
B.6 使用SQL TDS类访问数据 1130
B.7 尽可能使用数据绑定 1130
B.8 在Visual Basic中使用Option Explicit或Strict 1130
B.9 对组件使用早期绑定 1131
B.10 避免ASP兼容性问题 1131
B.11 记住新的请求和响应对象 1132
附录C ASP.NET 1.1中的变动 1133
C.1 新的命名空间 1133
C.2 System命名空间中的变化 1133
C.3 System.Data命名空间中的变化 1133
C.4 System.IO命名空间中的变化 1133
C.5 System.Net命名空间中的变化 1134
C.6 System.Web命名空间中的变化 1134
C.7 Web服务类中的变化 1136
C.8 System.Xml命名空间中的变化 1136
附录D 参考资料及其他信息 1137
ASP.NET是微软整个Visual Studio.NET战略中的一个重要组成部分,具有开发效率高、平台无关性、安全性强等方面的优势,广泛用于创建动态Web站点和基于Web的分布式应用,是广大Windows程序员开发Web应用的有效工具。本书介绍的是ASP.NET的最新版本——ASP.NET 1.1,该版本修正了原有ASP.NET 1.0中的一些Bug,在移动应用开发、代码安全以及数据库Oracle和ODBC的支持等方面,都做了很多改进。
本书由浅入深地介绍了ASP.NET的基本概念和开发机理,内容涵盖了ASP.NET与.NET Framework原理,如何创建ASP.NET页面和使用服务器控件,数据处理与ADO.NET,ASP.NET类库,配置、部署问题,作为数据处理有机组成部分的XML技术,以及如何使用Web服务为应用程序提供异步后台服务,同时还深入分析了软件的迁移问题。
本书比较全面地囊括了在.NET Framework下构建ASP.NET应用程序的方方面面。在讲解各个主题时,既有系统化的理论说明,也提供了相关的实际样例代码。书中的大量实例演示了实际应用中ASP.NET的大部分通用特性,便于读者理解与立即着手练习。
书中所有的源代码都可以在www.worx.com下载。该站点为读者提供了学习本书的丰富资源,包括源代码、相关控件、技术文章、多媒体教学工具等,读者也可以注册并登录论坛,与图书的作者、编辑直接进行交流。
由于受时间和译者自身水平的限制,翻译过程中难免出现错误和疏漏,敬请大家多多批评指正,反馈信息请发至fwkbook@tup.tsinghua.edu.cn。
李敏波,01年1月获清华大学工学博士,随后在新加坡国立大学从事协同产品设计与门户的博士后研究。02年11月至今 在金蝶软件(中国)公司中央研究院担任高级研究员,04年10月将加入复旦大学软件学院零售管理系统中心从事教学和科研工作。
Microsoft的ASP.NET自从第一次发布为预览技术以来,已经取得了巨大的成功。对于使用Microsoft技术开发Web站点的开发人员来说,ASP.NET提供了丰富的编程模型,可以轻松地构建站点。ASP.NET自发布以来对它的评论非常多,但撇开宣传和新闻这些炒作不谈,.NET确实为开发人员提供了一个能够开发所有应用程序的坚实基础。
虽然目前Microsoft开发的Active Server Pages(ASP)仍然是一个相对年轻的产品,但它已经成为最主要的Web开发工具。它的成功要归功于易用性和灵活性,这为创建动态网站提供了一种简单的方式。尽管这种成功还不完善,但其中出现了许多问题仅仅是因为ASP发展太快,超出了它的能力所限。当初设计ASP的初衷就是将COM的基础结构作为ASP的基础,而COM本身的功能就有一定的限制。
作为整个.NET Framework的一部分,ASP.NET建立在Common Language Runtime(公共语言运行库,CLR)的基础上——CLR是一个功能强大而又灵活的结构,它的设计目标不仅满足开发人员的当前需要,而且还可以满足长远需要。此处需明确的是,ASP.NET不仅是ASP以前的升级版本,还大大超越了对现有技术的升级—— 因为它开创了Web开发的全新时代。而本书将为您打开通往这项新技术的大门。
一种全新的ASP
那么对开发人员来说,“一种全新的ASP”意味着什么呢?毕竟,许多产品在发行时都把自己标榜为“有重大的突破”或“革命性的”,但事实上只不过是在某些方面进行了升级而已。而ASP.NET不是这样,它致力于为Internet应用程序的开发提供一种功能丰富而灵活的环境。它不仅提供了许多新的功能,而且从根本上改变了基于Web的应用程序的传统设计方式。
之所以发生了如此大的变化,是由于ASP.NET的体系结构更加模块化,同时在更大程度上坚持了基于组件的原则。每个页面都是一个可编程访问的完全编译的对象,并且利用了诸如面向对象设计、实时编译和动态高速缓存这样的技术。同时,ASP.NET所具有的向下兼容性表明现有的页面和应用程序仍然能够按以前的方式进行处理,因此没有进行突然移植的必要。
ASP.NET的一个主要目标是对应用程序的安装、配置和更新进行重大的改进。因此组件再也不必在Web服务器上进行注册了,同时一个完整的应用程序可以简单地使用文件复制命令、FTP或指定的应用程序(如FrontPage Server Extensions),从一个服务器上移植到另一个服务器上。
本书的内容
本书将介绍ASP.NET的基本概念、使用方法及其用途。第1章将简要介绍ASP.NET的相关问题,包括基本概念和对本书其他部分的概述。其目的是让您能够尽快掌握一些基础知识,同时运行一些页面范例。
第2章将介绍.NET Framework,并检验这个支撑起整个.NET的体系结构。其中将讨论有关CLR的问题,说明使用它的原因以及使用它所带来的好处。另外还会介绍ASP.NET的设计目标,并说明它们是如何提供一个强大的开发结构的。
第3章将详细介绍各种.NET语言,学习面向对象的结构,并讨论Visual Basic和JScript的变化,以及新的C#语言。另外,还将介绍有关这些语言的CLR的各种优点,以及CLR是如何克服以前的语言问题的。
第4章开始详细介绍ASP.NET,考察ASP.NET页面是如何构建的。我们将介绍一个简单的ASP页面,学习它是如何转换为ASP.NET页面的,并研究一个更简练的新页面。此外,还会介绍新ASP.NET页面中的代码管理问题,同时说明Visual Basic相对ASP而言与新的事件模型更为相似。
第5、6、7章将仔细讨论ASP.NET服务器控件,首先介绍这些控件的概念及其工作原理。接下来还要介绍验证控件,这些控件提供了一种验证用户输入的方式,然后介绍Web Form控件和列表控件,这些控件都提供了强大的内容管理功能,最后讨论数据绑定问题,说明控件是怎样从数据源中自动显示数据的。
第8章开始讨论ASP.NET中的数据管理问题,包括ADO.NET及其设计目标和体系结构。第9章将讨论关系数据和如何从数据库中操作数据的内容。第10章将介绍这些数据库中的数据更新问题。而在第11章中,除了继续关注数据问题外,还要介绍.NET中的XML使用问题,以及XML对象是如何实现处理XML数据的强大功能的。
第12章的中心问题则是Web应用程序的准确概念,以及怎样实现对应用程序的管理。要介绍的内容包括:状态管理、应用程序事件体系结构,以及应用程序体系结构的扩展。
应用程序编写完成以后,接下来的工作就是对它们进行部署,而这正是第13章要介绍的问题,此外还要讨论配置问题。我们将介绍XML配置文件,包括对其选项的详细讨论,最后学习ASP.NET的扩展问题。
第14章的内容包括编写安全的ASP.NET应用程序,Windows 2000和IIS(Internet信息服务系统)的安全性,以及ASP.NET是如何整合这种安全性的。此外还要介绍声明和编程安全问题,其中包括像基于Form和Passport身份验证这样的问题。
第15章和第16章要解决的是基类库问题,先详细介绍集合和列表,然后介绍文件系统对象、流、网络类和正则表达式。基类提供了一组非常丰富的功能,这些功能的应用范围非常广泛,使得开发人员付出比ASP少得多的编程工作量来建立网站。
在以前的DNA(内外层网络寻址技术)体系结构中,将业务组件放置在中间层是通行的做法。而在.NET中,整个体系结构更加简化了。第17章将讨论业务对象和事务处理页面的使用问题。我们将看到新体系结构的优点,以及如何设计应用程序来创建大多数新组件模型。
第18章将介绍可扩展性问题并考察服务器控件,还将讨论如何编写这些控件。我们将介绍一些用于创建这些控件的简便编码技巧,以及写好这些控件后,它们是如何与现有的服务器控件并存的。
第19章和第20章将详细介绍Web服务。虽然这个问题并不是专门针对ASP.NET的,但在设计和编写应用程序方面,它确实是一种主要的手段。由于将现有的功能转换为Web服务是非常简单的,因此利用Web服务来提供并使用B2B(企业到企业)模型可以实现众多的功能。
第21章介绍的是用于不同领域的各种网络设备,如电话、PDA以及其他诸如此类的设备。目前网站的用途已不再局限于那些带有大显示屏幕的计算机了,各种较小的设备在未来会得到越来越广泛的应用。本章将介绍Mobile Internet Toolkit,看看如何利用它来创建可供小设备访问的网站。
第22章主要包括两个问题:调试和错误处理。虽然有些新功能属于ASP.NET所有,但其他新功能却是整个基础架构的一部分。不过不管它们属于谁,最后的受益者都必然是开发人员。这些功能为调试和处理错误工作提供了简单且灵活的方式。
第23章覆盖了迁移和互操作性能方面的内容。目前的ASP代码非常之多,因此如何将现有的应用程序迁移到新的架构中是一个非常重要的问题。另外,还要讨论与现有的COM组件的互操作性问题,这种互操作性可允许中间层逐渐迁移。
最后,第24章将进行案例研究。该案例融合了本书介绍的许多技巧和方法。该案例是一个简单的电子商务网站,其中使用了数据访问、服务器控件和类库等。
读者对象
本书面向具有ASP或Visual Basic开发经验的高级开发人员。而对于那些未掌握基本编程技术和编程语言的用户来说,需要进一步学习才可以使用本书。
本书旨在对ASP.NET的概念作全面介绍—— 书中介绍了一些背景知识,同时对ASP.NET的设计开发思路进行了说明。之后本书对各种功能进行深入探讨,而这些功能要求开发人员之前必须使用过。此外还对如何快速明了地利用这些新功能进行了介绍。
如果您以前使用过ASP,就不会对本书涉及的各种概念太陌生,那么在使用本书时,就无需借助其他参考资料(随ASP.NET提供的SDK和帮助文件除外)。同时,您应该对组件、Visual Basic和VBScript语言的常规使用原则有所了解。本书中的某些范例是用其他语言编写的,如CLR所支持的JScript和C#(这是一种新的语言),但即使您对这些语言比较陌生,也不妨碍您使用本书。
使用本书的要求
要运行本书中的各种范例,需要事先满足以下条件:
Windows 2000、Windows Server 2003或Windows XP
ASP.NET。既可以是新发布的版本(包括在.NET SDK中),也可以是Visual Studio .NET。
本书中所有范例的完整源代码均可以从下面的网站中下载:http://www.wrox.com/。其中包含了Visual Basic .NET和C#版本(参见下面的“源代码”一节)。
源代码
对于本书中的所有范例来说,您可能更愿意亲自将所有代码都输入到计算机中。许多读者更喜欢采用这种方式,因为这可以更加有效地掌握那些正在使用的技术。本书中的所有源代码都放在http://www.wrox. com/网站中。在您登录到Wrox.com站点http://www.wrox.com/时,只需使用Search工具框或使用书名列表就可以找到本书。接着单击本书信息页面上的Download Code链接,就可以获得所有的源代码。
说明:
因为很多书的标题相类似,所以最简单的方法是通过ISBN进行搜索。本书的英文ISBN号是0-7645-5890-0。
从该站点上下载的文件是已经使用了WinZip进行压缩的文件。在把附件保存到硬盘的一