译者序
前言
第1章     ASP基础	1
1.1   ASP的起源	1
1.1.1   HTML的起源	2
1.1.2   动态页面的起源	2
1.2   ASP如何与IIS连接	5
1.2.1   关于应用程序的映射	5
1.2.2   处理一个ASP文件	7
1.3   相关设置问题和管理	12
1.3.1   IIS的安装	12
1.3.2   IIS管理工具	15
1.3.3   常见的管理任务	18
1.4   ASP 3.0对象模型概要	22
1.4.1   对象环境概念	22
1.4.2   ASP内置的对象	23
1.5   ASP 3.0中的新特性	24
1.5.1   ASP 3.0新特性概要	24
1.5.2   对ASP 2.0的改进	26
1.5.3   VBScript 5.0中的新特性	28
1.5.4   JScript 5.0中的新特性	30
1.5.5   其他的新特性	31
1.6   小结	32
第2章   请求和响应的处理	33
2.1   客户端和服务器的交流	33
2.2   Request和Response对象	35
2.2.1   Request对象成员的概述	35
2.2.2   Response对象成员概述	36
2.3   使用Form和QueryString集合	38
2.3.1   访问ASP集合的一般技术	38
2.3.2   访问和更新Cookies集合	44
2.3.3   Form和QueryString的差异	46
2.3.4   查看Request和Response对象内容	47
2.3.5   ASP中cookie的使用	52
2.4   使用ServerVariables集合	53
2.4.1   “自引用”页面	54
2.4.2   检测浏览器的版本	55
2.4.3   检测浏览器的语言	56
2.4.4   其他有用的ServerVariables集合的值	57
2.5   其他Request和Response技巧	57
2.5.1   连接、缓冲和页面重定向的管理	58
2.5.2   操作HTTP报头	60
2.5.3   使用客户证书	65
2.5.4   读写二进制数据	67
2.5.5   创建定制的日志消息	67
2.6   小结	69
第3章   ASP应用程序与会话	70
3.1   Web上的状态管理	70
3.1.1   状态的准确定义	70
3.1.2   状态的重要性	71
3.1.3   在Web上创建状态	71
3.2   Web应用程序的定义	73
3.2.1   ASP应用程序的定义	73
3.2.2   ASP会话的定义	81
3.3   ASP的Application对象和Session对象	83
3.3.1   ASP的Application对象成员概述	84
3.3.2   ASP的Session对象成员概述	85
3.3.3   使用Application和Session的事件	86
3.3.4   活动中的ASP Application对象	89
3.3.5   活动中的ASP Session对象	93
3.4   小结	96
第4章   服务器进程和ASP Server对象	98
4.1   动态页中服务器端的处理	98
4.2   服务器端的包含指令	100
4.2.1   不可思议的ASP #include指令	100
4.2.2   服务器端包含指令概要	102
4.2.3   服务器端包含指令的例子	104
4.3   ASP Server对象	109
4.3.1   ASP Server对象成员概述	109
4.3.2   创建其他对象的实例	110
4.3.3   执行其他的网页	114
4.3.4   Server对象的错误处理	118
4.3.5   获取Server对象的路径信息	125
4.3.6   使用Server对象格式化数据	127
4.4   小结	132
第5章   脚本运行期库对象	134
5.1   脚本对象的定义	134
5.1.1   不同类型的对象和组件	134
5.1.2   VBScript和JScript脚本对象	135
5.2   创建对象和组件实例	136
5.2.1   使用Server.CreateObject方法	136
5.2.2   使用<OBJECT>元素	136
5.2.3   Server.CreateObject与<OBJECT>的
区别	138
5.2.4   组件线程模型	138
5.2.5   引用对象类型库	139
5.2.6   在客户端上创建对象实例	140
5.3   Scripting.Dictionary对象	141
5.3.1   创建和使用Dictionary对象	141
5.3.2   Dictionary对象示例	143
5.4   Scripting.FileSystemObject对象	148
5.4.1   FileSystemObject对象成员概要	149
5.4.2   使用驱动器	151
5.5   Scripting.TextStream对象	161
5.5.1   创建TextStream对象的方法	161
5.5.2   TextStream对象成员概要	163
5.5.3   TextStream对象举例	165
5.6   小结	168
第6章   活动服务器组件	169
6.1   脚本对象与服务器组件的比较	169
6.2   ASP/IIS可安装组件	171
6.2.1   使用示例页面	172
6.2.2   Content Linking组件	173
6.2.3   Ad Rotator组件	177
6.2.4   Counters组件	182
6.2.5   Browser Capabilities组件	184
6.2.6   Content Rotator组件	188
6.2.7   Page Counter组件	190
6.2.8   Permission Checker组件	191
6.2.9   MyInfo 组件	194
6.2.10   Tools组件	195
6.2.11   Logging Utility组件	200
6.3   第三方服务器组件	204
6.3.1   BrowserHawk组件	204
6.3.2   SA-FileUp组件	206
6.3.3   RegEx注册表访问组件	207
6.4   小结	209
第7章   调试和错误处理	210
7.1   错误的种类	211
7.1.1   语法或“编译”错误	211
7.1.2   语义或“运行期”错误	215
7.2   各种运行期错误	218
7.2.1   逻辑错误	219
7.2.2   脚本运行期错误	220
7.2.3   ASP和SSI的运行期错误	221
7.2.4   客户端脚本错误	222
7.3   防止错误	224
7.4   处理错误	229
7.4.1   ASP缺省错误处理器	229
7.4.2   VBScript错误处理	230
7.4.3   JScript错误处理	232
7.4.4   使用IIS错误页面	232
7.5   程序调试—发现及处理错误	238
7.5.1   常规调试技术	238
7.5.2   Microsoft Script Debugger	239
7.5.3   获得ASP的帮助和支持	242
7.6   小结	243
第8章   ADO基础	244
8.1   ADO的定义	244
8.1.1   OLE DB和ADO的体系结构	245
8.1.2   消费者与提供者	246
8.1.3   提供者和驱动程序	247
8.2   ADO 2.5对象模型	248
8.2.1   Connection对象	248
8.2.2   Command对象	249
8.2.3   Recordset对象	249
8.2.4   Record对象	249
8.2.5   Stream对象	250
8.2.6   集合	250
8.2.7   ADO常数	252
8.3   连接到数据存储	252
8.3.1   连接字符串	253
8.3.2   使用包含文件	256
8.3.3   使用连接状态	256
8.3.4   连接语法	257
8.3.5   连接的例子	257
8.3.6   连接缓冲池	257
8.4   记录集	258
8.4.1   光标	258
8.4.2   锁定	260
8.4.3   创建记录集	261
8.4.4   过滤记录集	265
8.4.5   查找记录	266
8.4.6   修改记录	267
8.5   管理错误	269
8.5.1   Errors集合	269
8.5.2   ASP页面中的ADO错误	270
8.6   小结	272
第9章   连接、命令和过程	273
9.1   Connection对象	273
9.1.1   返回一个记录集	273
9.1.2   操作命令	274
9.2   Command对象	274
9.2.1   返回记录集	274
9.2.2   操作命令	275
9.2.3   存储过程	276
9.3   优化	289
9.3.1   常用的ADO技巧	289
9.3.2   对象变量	289
9.3.3   高速缓存大小	290
9.3.4   数据库设计	290
9.3.5   数据高速缓存	291
9.4   数据整形	293
9.4.1   使用数据整形	294
9.4.2   性能	297
9.5   小结	298
第10章   ASP与客户端数据	299
10.1   断开连接的记录集	299
10.2   远程数据服务	300
10.2.1   RDS服务器组件	300
10.2.2   RDS客户组件	301
10.2.3   支持RDS的浏览器	301
10.2.4   数据源对象	301
10.2.5   数据绑定	308
10.2.6   更新数据	316
10.3   在服务器和客户之间传输数据	319
10.3.1   基于服务器的组件	319
10.3.2   DataSpace对象	320
10.3.3   使用服务器端组件的优点	322
10.3.4   注册服务器端组件	322
10.3.5   自定义处理器	323
10.4   记录集分页	326
10.4.1   利用ASP页面分页记录集	327
10.4.2   利用ADO分页	330
10.4.3   利用SQL Server完成记录集分页	333
10.4.4   数据分页小结	336
10.5   使用数据库中的图像	337
10.6   小结	338
第11章   使用XML数据	339
11.1   XML的定义	339
11.1.1   XML和HTML的差别	340
11.1.2   标记和元素	343
11.1.3   模式和文档类型定义	346
11.1.4   名称空间	347
11.1.5   文档对象模型	348
11.2   ADO和IE5中的XML	354
11.2.1   存储为XML形式的ADO记录集	354
11.2.2   ADO记录集名称空间	355
11.2.3   ADO记录集模式	355
11.2.4   IE数据岛和绑定	358
11.2.5   以XML数据格式保存记录集	361
11.2.6   打开记录集	365
11.3   用XSL来设计XML	367
11.4   相关的领域	371
11.5   用于SQL Server的XML技术预览	372
11.6   小结	373
第12章   通用数据访问	375
12.1   UDA的构想	375
12.2   OLE DB提供者	376
12.2.1   Indexing Service	376
12.2.2   活动目录	383
12.2.3   Exchange Server	386
12.2.4   定制的提供者	386
12.3   半结构化的数据	389
12.3.1   Record对象	390
12.3.2   Internet 发布	390
12.3.3   WebDAV	401
12.4   企业数据	401
12.4.1   Access和SQL Server二者取一	402
12.4.2   SNA Server和传统数据访问	404
12.5   企业中的ASP	405
12.6   小结	407
第13章   组件和网络应用程序结构	408
13.1   分布式应用程序的结构	408
13.1.1   分层应用程序	408
13.1.2   Windows DNA	410
13.1.3   Windows DNA服务	411
13.1.4   网络结构	413
13.2   组件	415
13.2.1   组件定义	415
13.2.2   COM和COM＋	415
13.2.3   组件服务	416
13.2.4   以数据为中心的组件	417
13.2.5   业务组件	417
13.2.6   用户界面组件	418
13.3   组件应用程序设计	418
13.3.1   转换到组件	419
13.3.2   应用程序设计	419
13.3.3   设计网络组件	420
13.3.4   组件设计	422
13.3.5   组件集成	423
13.3.6   建立组件	424
13.4   应用程序设计范例的研究	425
13.4.1   明确问题	425
13.4.2   应用程序的设计	426
13.4.3   设计权衡	430
13.4.4   设计小结	431
13.5   小结	432
第14章   COM、COM+和ASP	433
14.1   COM的内容	433
14.1.1   COM无处不在	434
14.1.2   COM＋的三个方面	434
14.1.3   COM开发工具	436
14.2   接口	437
14.2.1   组件	438
14.2.2   缺省接口	438
14.2.3   GUID—实体的确定名称	439
14.2.4   接口的详细内容	439
14.2.5   IUnknown接口	442
14.2.6   使用IDispatch—后期绑定	442
14.2.7   组件信息的中央存储库	444
14.3   COM+运行期的变化	446
14.3.1   配置的和非配置的组件	447
14.3.2   COM+类别	447
14.4   创建一个ASP   COM组件	447
14.4.1   组件的接口	449
14.4.2   创建组件	449
14.5   小结	457
第15章   COM+应用程序	458
15.1   微软组件服务(COM+)	458
15.1.1   拦截原理	459
15.1.2   COM+结构	461
15.1.3   组件/对象的生存期和状态	464
15.2   单元和线程模型	467
15.2.1   线程	467
15.2.2   单元	468
15.2.3   线程模型的属性	470
15.2.4   线程模型和范围	472
15.3   COM+应用程序	476
15.3.1   ObjectContext接口	476
15.3.2   Visual Basic COM+组件	479
15.4   组件服务	487
15.5   组件的调试	494
15.6   小结	496
第16章   ASP脚本组件	497
16.1   使用WSC的环境	497
16.2   一个Windows脚本组件	498
16.2.1   发展历史	498
16.2.2   HelloWorld WSC	499
16.3   WSC的结构	499
16.3.1   描述层	500
16.3.2   脚本层	503
16.3.3   运行期层	504
16.4   可用的接口	504
16.5   编写一个ASP脚本组件	505
16.5.1   AspTable组件	506
16.5.2   使用AspTable对象	511
16.6   ASP脚本组件的特点	513
16.6.1   选择正确的工具	513
16.6.2   脚本组件与VBScript类的比较	513
16.7   小结	514
第17章   用C++建立ASP组件	515
17.1   C++语言	515
17.1.1   C++简史	515
17.1.2   使用C++的原因	516
17.1.3   不使用C++的原因	517
17.1.4   把ASP技巧转到C++上	517
17.2   VC++库	518
17.2.1   微软基础类库	518
17.2.2   活动模板库	519
17.2.3   标准模板库	519
17.3   建立一个C++服务器组件	521
17.3.1   问题	522
17.3.2   设计	522
17.3.3   实现	522
17.3.4   测试	531
17.3.5   错误处理	533
17.3.6   调试	535
17.4   小结	537
第18章   对C++组件的进一步讨论	538
18.1   与ASP进行接口	538
18.2   与COM+进行接口	543
18.2.1   IObjectContext的事务处理	546
18.2.2   IObjectControl的对象缓冲	547
18.3   数据访问	547
18.3.1   通过C++使用ADO	548
18.3.2   OLE DB消费者模板	553
18.3.3   使用ADO，还是使用OLE DB消费者
模板	557
18.4   小结	557
第19章   ASP和事务性Web应用程序	558
19.1   事务处理的定义	558
19.1.1   保持应用程序的完整性	558
19.1.2   ACID属性	559
19.2   分布式事务	560
19.3   事务性COM+应用程序	562
19.3.1   Transaction Support属性	562
19.3.2   活动与同步	564
19.3.3   事务的生存期	567
19.3.4   事务访问自定义资源	573
19.4   COM+事务和IIS	574
19.4.1   事务性ASP	574
19.4.2   事务性ASP中的ObjectContext
对象	575
19.4.3   事务事件	576
19.5   用ASP和COM+进行联机订购	577
19.5.1   业务需要	577
19.5.2   设计	577
19.5.3   实现	578
19.5.4   程序验证	585
19.6   小结	586
第20章   ASP和消息队列服务器	587
20.1   消息排队的定义	587
20.1.1   MSMQ的定义	588
20.1.2   使用MSMQ和ASP的原因	589
20.2   MSMQ结构	591
20.2.1   服务器类型	591
20.2.2   客户类型	592
20.2.3   站点布局图	593
20.2.4   投递选项	593
20.3   管理MSMQ	594
20.3.1   增加队列	594
20.3.2   消息队列的属性	596
20.3.3   消息属性	597
20.4   MSMQ对象模型	599
20.4.1   MSMQApplication对象	600
20.4.2   MSMQQuery对象	600
20.4.3   MSMQQueueInfos集合	601
20.4.4   MSMQQueueInfo对象	601
20.4.5   MSMQQueue对象	602
20.4.6   MSMQMessage对象	603
20.4.7   MSMQEvent对象	605
20.4.8   MSMQTransaction对象	605
20.4.9   MSMQTransactionDispenser对象	605
20.4.10   MSMQCoordinatedTransaction Dispenser对象	606
20.4.11   访问MSMQ的其他方式	606
20.5   用于MSMQ的MS DTC事务	606
20.6   高级MSMQ消息	606
20.7   COM+队列化组件	609
20.8   扩展联机订货的示例	610
20.8.1   在组件中添加MSMQ	610
20.8.2   处理队列化订单	612
20.9   小结	614
第21章   ADSI和AD介绍	615
21.1   ADSI的用途	615
21.2   必需的软件	616
21.3   AD的内部结构	617
21.3.1   目录里的对象和属性	617
21.3.2   对象的类	618
21.3.3   容器和叶	619
21.3.4   模式	619
21.3.5   继承	620
21.4   目录的特征	622
21.4.1   优化查找	622
21.4.2   查找功能	622
21.4.3   开放性	622
21.4.4   事务处理	622
21.4.5   复制	623
21.5   常见目录	623
21.5.1   Netscape目录服务器	623
21.5.2   IIS元数据库	623
21.5.3   Exchange Server目录和站点服务器
            成员目录	623
21.5.4   Netware目录服务	623
21.5.5   WinNT	623
21.6   ADSI的适用范围	624
21.7   LDAP的适用范围	625
21.8   绑定到一个ADSI对象	626
21.8.1   ADSI对象和Directory对象	626
21.8.2   查看ADSI对象的属性	627
21.9   浏览目录：枚举容器的所有子对象	628
21.10   使用模式定义的属性	631
21.11   Get和GetEx	634
21.12   PropertyBrowseEx示例	634
21.13   AD与WinNT提供者比较	636
21.14   属性缓存	638
21.15   设置属性的值	639
21.16   目录的验证	639
21.17   查找	641
21.17.1   用以查找ADSI目录的命令字符串	644
21.17.2   查找过滤器	645
21.18   小结	646
第22章   ASP和用于NT服务器的CDO	647
22.1   CDO是什么	647
22.2   使用CDO的原因	647
22.2.1   NT服务器下的CDO	648
22.2.2   CDO与CDONTS的比较	648
22.2.3   CDO for Windows 2000	649
22.3   CDONTS库	649
22.3.1   引用类型库	650
22.3.2   NewMail对象	651
22.3.3   其他的CDONTS对象	658
22.3.4   设置SMTP Service	666
22.3.5   SMTP Service配置	667
22.4   在ASP应用程序中使用CDONTS	670
22.4.1   简单邮箱应用程序	671
22.4.2   Inbox应用程序	676
22.5   小结	683
第23章   ASP、CDO与Exchange Server	684
23.1   CDO库	684
23.1.1   通用/共享对象	684
23.1.2   Session对象	695
23.1.3   文件夹	697
23.1.4   地址列表	698
23.1.5   信息存储	699
23.1.6   消息	699
23.1.7   通用属性	704
23.2   邮件客户端应用程序	705
23.2.1   概述	705
23.2.2   服务器配置	705
23.2.3   类型库	707
23.2.4   Login.asp	707
23.2.5   FrameSet.asp	708
23.2.6   FolderList.asp	709
23.2.7   MessageList.asp	712
23.2.8   ViewMessage.asp	715
23.2.9   SendMessage.asp	719
23.2.10   SendMail.asp	722
23.2.11   Logout.asp	725
23.3   小结	725
第24章   服务器防护	726
24.1   安全的定义	726
24.1.1   Internet上的安全问题	726
24.1.2   安全策略	728
24.2   Windows 2000的防护	730
24.2.1   磁盘格式	730
24.2.2   Window 2000安全检查列表	730
24.2.3   防火墙和代理服务器	737
24.3   IIS 5.0的防护	739
24.3.1   IIS的安全配置	739
24.3.2   验证方法	742
24.4   SQL Server 7.0和ODBC的安全	744
24.4.1   保护sa帐号	744
24.4.2   为数据库访问建立替代帐号	744
24.5   建立自己的ASP安全系统	746
24.6   小结	755
第25章   证书的使用	756
25.1   安全性、一致性和可靠性	756
25.2   证书与证书机构	759
25.3   从证书机构获取证书	762
25.4   使用证书	768
25.4.1   使用服务器证书	768
25.4.2   使用个人证书	768
25.4.3   使用软件发行者证书	769
25.4.4   客户证书映射	769
25.4.5   证书的生存期	772
25.5   管理证书	772
25.5.1   证书存储	772
25.5.2   IIS证书管理	774
25.5.3   IE证书管理	775
25.5.4   Outlook Express证书管理	776
25.6   证书与ASP	776
25.7   成为自己的证书机构	777
25.7.1   Certificate Services	778
25.7.2   建立证书机构	779
25.7.3   管理证书机构	779
25.7.4   与证书机构的交互	780
25.8   小结	781
第26章   优化ASP的性能	782
26.1   衡量工作性能的标准	782
26.1.1   吞吐量	782
26.1.2   响应时间	783
26.1.3   衡量性能的其他指标	784
26.2   改善服务器的硬件性能	786
26.2.1   内存	786
26.2.2   硬盘	787
26.2.3   网络带宽	787
26.2.4   CPU	787
26.2.5   更多的服务器	787
26.3   性能的调整	787
26.3.1   解决性能问题	787
26.3.2   强度工具	788
26.3.3   脚本优化	789
26.3.4   会话和应用程序状态	789
26.3.5   安全套接字层	793
26.3.6   进程隔离	793
26.3.7   缓存技术和字典	794
26.3.8   数据库性能	795
26.3.9   真正充足的时间：MSMQ	796
26.3.10   脚本与组件的比较	796
26.3.11   多处理器的可扩展性	798
26.3.12   线程闸门	800
26.3.13   设置元数据库	801
26.3.14   性能计数器	802
26.4   各种小技巧	805
26.4.1   Stm的重命名技巧	805
26.4.2   避免嵌套的包含	806
26.4.3   不使用非脚本映射的文件扩展名	806
26.4.4   关闭脚本调试器	806
26.4.5   最小化脚本块转换	806
26.4.6   不要混用脚本引擎	807
26.4.7   在“费时”操作前使用Response.Is Client Connected	807
26.4.8   使用<OBJECT>标记	808
26.4.9   不使用OnStartPage和OnEndPage	808
26.4.10   发挥客户端的作用	808
26.5   小结	808
第27章   建立多服务器网站	810
27.1   多服务器网站	810
27.1.1   Web阵的不足	811
27.1.2   Web阵基础	812
27.2   负载平衡模式	813
27.2.1   DNS循环复用法	813
27.2.2   硬件负载平衡	814
27.2.3   TCP/IP Network Load Balancing	817
27.2.4   复合方式	819
27.2.5   High Availability Clustering Service	820
27.2.6   COM＋Dynamic Load Balancing	822
27.3   状态管理	824
27.3.1   不管理状态	824
27.3.2   客户端存储	824
27.3.3   亲和性	824
27.3.4   在一个中心服务器上存储状态	826
27.4   安全	826
27.5   小结	827
第28章   XML驱动的报纸实例	829
28.1   报纸的剖析	829
28.1.1   作者写稿	831
28.1.2   编辑修改	832
28.1.3   读者阅读	834
28.1.4   结构要求	835
28.2   网站的大脑：settings.xml	835
28.2.1   <Specifications>元素	836
28.2.2   <colors>元素	836
28.2.3   <navigation>元素	836
28.2.4   准备global.asa	837
28.2.5   插入导航	838
28.2.6   <content>和<glossary>元素	840
28.3   网站的躯干：headlines.asp	841
28.3.1   ShowHeadlines过程	842
28.3.2   ShowBlurbs过程	843
28.3.3   ShowBriefs过程	844
28.3.4   ShowStory过程	846
28.3.5   使用ShowStory过程	849
28.3.6   主页	852
28.4   管理工具	854
28.4.1   setting_stories.asp	854
28.4.2   setting_glossary.asp	858
28.4.3   关于admin文件夹的其他内容	861
28.5   系统集成	861
28.6   小结	864
附录A   ASP 3.0的对象模型	865
附录B   脚本运行期库对象	871
附录C   微软服务器组件	877
附录D   错误代码	881
附录E   ADO 2.5对象模型	893
附录F   ADO 2.5常量	902
附录G   有用的资料	920
附录H   p2p.wrox.com	926
