ASP.NET AJAX编程参考手册(涵盖ASP.NET 3.5及2.0 )

分類: 图书,计算机与互联网,程序语言与软件开发,语言与开发工具,.net,ASP.net,
品牌: Shahran Khosravi
基本信息·出版社:清华大学出版社
·页码:1229 页
·出版日期:2009年
·ISBN:7302194823/9787302194828
·条形码:9787302194828
·包装版本:1版
·装帧:平装
·开本:16
·正文语种:中文
产品信息有问题吗?请帮我们更新产品信息。
内容简介《ASP.NET AJAX编程参考手册》以AJAX为核心阐述对象,介绍了它对JavaScript所做的各种扩展,还介绍了在ASP.NET环境下创建客户端应用所需的一些核心控件。通过大量的实例,《ASP.NET AJAX编程参考手册》详述了AJAX的内部机制,并且紧跟时代潮流,重点描述了如何依靠异步通信机制,更快、更好、更有效地实现客户端和服务器端之间的通信。
作者简介Shahram Khosravi,博士。他是一名资深的软件工程师、顾问、作家和讲师。在面向对象的分析、设计和编程方面有十多年的经验。讲授课程包括ASPNET、Web服务、.NET技术、XML技术、C#等。Shahr8m还撰写了多本关于ASP、NET的书,并在微软的MSDN存线文档以及Dr.Dobb’S Journal、asp.neetPRO等杂志上发表技术文章多篇。
译者简介:
刘志忠,博士,毕业于国防科技大学计算机科学与技术专业,现仟解放军理工大学指挥自动化学院教员。主要研究基于Web,E报务的分布式计算技术,精通.NET、Java、C++和VB等程序设计语言,对AJAX和HTML技术也有深入的了解,具有多年程序开发经验,曾参与973、863、国家自然科学基金等科研项目。业余时间以写文章,翻译图书为乐,译著包括《CSS基础教程》等。
编辑推荐《ASP.NET AJAX编程参考手册(涵盖ASP.NET 3.5及2.0)》将为您提供开发ASP.NET AJAX应用所必需的技能和知识。ASP.NET AJAX将ASP.NET/.NET Framework中的服务器端编程技术引入到客户端框架,从而带来了客户端编程的丰富特性。《ASP.NET AJAX编程参考手册(涵盖ASP.NET 3.5及2.0)》主要阐述ASP.NET AJAX是如何在客户端模拟这些丰富特性的。 《ASP.NET AJAX编程参考手册(涵盖ASP.NET 3.5及2.0)》通过大量实例、深入的描述以及代码分析,全面涵盖了ASP.NET AJAX服务器端和客户端框架。书中的所有代码都通过了ASP.NET 2.0和ASP.NET 3.5的测试。通过《ASP.NET AJAX编程参考手册(涵盖ASP.NET 3.5及2.0)》,您将学习到这些框架之间是如何进行协同以满足AJAx应用需求的。
目录
第1章 AJAX相关技术 1
1.1 GoogleSuggest 1
1.2 XMLHttpRequest 3
1.3 XML 13
1.4 JSON 17
1.4.1 对象 17
1.4.2 数组 17
1.4.3 字符串 17
1.4.4 数字 18
1.4.5 null、true和false 18
1.5 ASP.NETAJAX 21
1.6 安装ASP.NETAJAXExtensions和ASP.NETFutures 22
1.7 小结 22
第2章 JavaScript基本类型扩展 23
2.1 ASP.NETAJAXArray类型扩展 23
2.1.1 add 24
2.1.2 addRange 24
2.1.3 clear 25
2.1.4 clone 25
2.1.5 contains 26
2.1.6 enqueue和dequeue 26
2.1.7 forEach 28
2.1.8 indexOf 29
2.1.9 insert 30
2.1.10parse 30
2.1.1 1remove 31
2.1.1 2removeAt 31
2.2 ASP.NETAJAXBoolean类型扩展 32
2.3 ASP.NETAJAXDate类型扩展 32
2.4 ASP.NETAJAXObject类型扩展 33
2.5 ASP.NETAJAXString类型扩展 33
2.5.1 endsWith 33
2.5.2 startsWith 34
2.5.3 trim 34
2.5.4 格式化 35
2.6 ASP.NETAJAXError类型扩展 35
2.6.1 create 36
2.6.2 popStackFrame 38
2.6.3 popStackFrame的内部机理 41
2.7 小结 44
第3章 内置的和自定义异常类型 45
3.1 ASP.NETAJAX内置异常类型 45
3.1.1 ArgumentException 45
3.1.2 ArgumentNullException 47
3.1.3 ArgumentOutOfRangeException 49
3.1.4 ArgumentTypeException 51
3.1.5 ArgumentUndefinedException 53
3.1.6 InvalidOperationException 55
3.1.7 NotImplementedException 56
3.1.8 ParameterCountException 57
3.2 实现自定义异常类型 59
3.2.1 实现自定义异常类型的流程 59
3.2.2 使用流程 60
3.2.3 clickCallback 63
3.2.4 validateInput 64
3.3 小结 64
第4章 JavaScript面向对象编程和类型反射扩展 65
4.1 JavaScript函数 65
4.2 JavaScript类 66
4.3 Type 67
4.4 registerClass 68
4.5 getName 70
4.6 isClass 71
4.7 registerNamespace 72
4.8 isNamespace 74
4.9 registerInterface 75
4.10 getInterfaces 78
4.11 isInterface 80
4.12 继承 81
4.13 getBaseType 84
4.14 initializeBase 87
4.15 resolveInheritance 87
4.16 callBaseMethod 88
4.17 getBaseMethod 93
4.18 implementsInterface 96
4.19 inheritsFrom 100
4.20 isImplementedBy 102
4.21 getRootNamespaces 104
4.22 parse 106
4.23 registerEnum 108
4.24 isEnum 109
4.25 isFlags 110
4.26 小结 110
第5章 事件编程模型扩展 111
5.1 事件编程模型 111
5.1.1 Sys.EventArgs 112
5.1.2 Sys.CancelEventArgs 112
5.1.3 EventHandlerList 112
5.2 使用事件编程 116
5.2.1 基本类 117
5.2.2 事件 122
5.2.3 ShoppingCart 130
5.2.4 添加一个事件处理程序 134
5.2.5 移除一个事件处理程序 134
5.3 小结 135
第6章 DOM扩展 136
6.1 DomElement 136
6.1.1 getElementById 136
6.1.2 addCssClass 141
6.1.3 containsCssClass 141
6.1.4 removeCssClass 141
6.1.5 toggleCssClass 143
6.1.6 getLocation 144
6.1.7 setLocation 145
6.1.8 getBounds 147
6.2 MouseButton 148
6.3 Key 149
6.4 委托 149
6.4.1 Namespace 155
6.4.2 Mover 155
6.4.3 TextProvider 155
6.4.4 ImageProvider 156
6.5 DomEvent 156
6.5.1 构造函数 157
6.5.2 静态方法 159
6.5.3 实例方法 166
6.6 使用DomEvent类 170
6.6.1 Mover 176
6.6.2 TableProvider 180
6.7 小结 181
第7章 组件开发基础设施 182
7.1 接口 182
7.1.1 IDisposable 183
7.1.2 INotifyDisposing 186
7.1.3 INotifyPropertyChange 189
7.2 组件 194
7.3 IContainer 196
7.4 应用 197
7.4.1 addComponent 198
7.4.2 removeComponent 199
7.4.3 getComponents 199
7.4.4 findComponent 200
7.5 应用生命周期 201
7.6 组件生命周期 205
7.7 继续应用生命周期之旅 209
7.7.1 endCreateComponents 209
7.7.2 raiseLoad 211
7.7.3 应用生命周期小结 212
7.8 应用层事件 213
7.8.1 Init 213
7.8.2 load 214
7.8.3 unload 214
7.9 可丢弃对象 214
7.10 使用Application对象和Component基类 217
7.10.1 dispose 217
7.10.2 initialize 220
7.10.3 id 222
7.10.4 raisePropertyChanged 222
7.10.5 get_events 223
7.10.6 INotifyPropertyChange 224
7.10.7 INotifyDisposing 224
7.11 小结 230
第8章 开发客户端控件 231
8.1 Control 231
8.1.1 定义 231
8.1.2 get_element 232
8.1.3 get_id 233
8.1.4 set_id 233
8.1.5 set_parent 233
8.1.6 get_parent 234
8.1.7 get_visibilityMode 234
8.1.8 get_visible 235
8.1.9 set_visibilityMode 235
8.1.10set_visible 236
8.1.1 1addCssClass 236
8.1.1 2removeCssClass 236
8.1.1 3toggleCssClass 237
8.1.1 4dispose 237
8.1.1 5onBubbleEvent 237
8.1.1 6raiseBubbleEvent 238
8.2 开发自定义客户端控件 238
8.3 客户端Label控件 239
8.3.1 构造函数 239
8.3.2 htmlEncode 239
8.3.3 text 240
8.3.4 prototype 241
8.3.5 descriptor 241
8.4 使用Label客户端控件 242
8.5 客户端Image控件 244
8.5.1 构造函数 244
8.5.2 prototype 244
8.5.3 imageURL 245
8.5.4 width 245
8.5.5 height 246
8.5.6 alternateText 246
8.6 使用Image客户端控件 246
8.7 扩展客户端Image控件 248
8.7.1 构造函数 251
8.7.2 prototype 252
8.7.3 imageURL 252
8.7.4 mouseOverImageURL 253
8.7.5 mouseOverCallback 253
8.7.6 mouseOutCallback 254
8.7.7 Duration 254
8.7.8 transition 255
8.7.9 Transition枚举类型 255
8.7.10initialize 256
8.7.1 1dispose 256
8.8 使用客户端Image2控件 257
8.9 HyperLink客户端控件 259
8.9.1 构造函数 259
8.9.2 prototype 259
8.9.3 navigateURL 259
8.9.4 initialize 260
8.9.5 add_click 260
8.9.6 remove_click 261
8.9.7 _onClick 261
8.9.8 dispose 261
8.9.9 descriptor 262
8.10 使用HyperLink客户端控件 262
8.11 小结 264
第9章 事件冒泡机制及客户端Button控件 265
9.1 CommandEventArgs 265
9.2 客户端Button控件 266
9.2.1 构造函数 267
9.2.2 prototype属性 267
9.2.3 argument属性 267
9.2.4 command属性 268
9.2.5 initialize方法 268
9.2.6 add_click方法 269
9.2.7 _onClick 269
9.2.8 dispose 270
9.2.9 descriptor 270
9.3 使用客户端Button控件 271
9.3.1 捕获一个冒泡的事件 271
9.3.2 冒泡一个事件 276
9.4 小结 286
第10章 类型描述扩展 287
10.1 TypeDescriptor 287
10.1.1 构造函数 288
10.1.2 getTypeDescriptor 304
10.1.3 getProperty 308
10.1.4 getAttribute 310
10.1.5 setProperty 311
10.1.6 invokeMethod 315
10.1.7 getPropertyType 316
10.2 使用ASP.NETAJAX类型描述能力 317
10.2.1 StringBuilder 318
10.2.2 CustomTable 321
10.3 动态注入元数据信息 329
10.3.1 addProperty 329
10.3.2 addMethod 330
10.3.3 addEvent 331
10.3.4 addAttribute 332
10.4 ICustomTypeDescriptor 332
10.5 小结 334
第11章 数据类 335
11.1 IData 335
11.2 DataColumn 336
11.3 DataRow 339
11.3.1 构造函数 339
11.3.2 descriptor 340
11.3.3 ICustomTypeDescriptor 341
11.3.4 Owner 345
11.3.5 INotifyPropertyChange 346
11.4 DataTable 347
11.4.1 构造函数 347
11.4.2 IData 349
11.4.3 Descriptor 356
11.4.4 INotifyPropertyChange 357
11.4.5 InotifyCollectionChanged 359
11.4.6 createRow 362
11.4.7 getChanges 363
11.4.8 getColumn 364
11.4.9 raiseRowChanged 365
11.4.10parseFromJson 365
11.5 使用DataColumn、DataRow和DataTable 367
11.6 小结 376
第12章 客户-服务器通信 377
12.1 WebRequest 377
12.1.1 构造函数 377
12.1.2 目标URL 378
12.1.3 HTTP动作 378
12.1.4 请求体 378
12.1.5 超时 379
12.1.6 Web请求执行器 379
12.1.7 请求头 380
12.1.8 completed事件 380
12.1.9 调用一个Web请求 381
12.2 WebRequestExecutor 382
12.2.1 构造函数 382
12.2.2 WebRequest 382
12.2.3 get_started 383
12.2.4 get_responseAvailable 383
12.2.5 get_timedOut 383
12.2.6 get_aborted 384
12.2.7 get_responseData 384
12.2.8 get_statusCode 384
12.2.9 get_statusText 384
12.2.10get_xml 384
12.2.1 1get_object 385
12.2.1 2executeRequest 385
12.2.1 3abort 385
12.2.1 4getResponseHeader 385
12.2.1 5getAllResponseHeaders 386
12.3 WebRequestManager 386
12.3.1 构造函数 386
12.3.2 默认超时 387
12.3.3 默认执行器类型 387
12.3.4 事件 387
12.3.5 执行一个Web请求 389
12.3.6 NetworkRequestEventArgs 390
12.4 XMLHttpRequest 391
12.5 XMLDOM 391
12.6 XMLHttpExecutor 392
12.6.1 构造函数 392
12.6.2 get_timedOut 395
12.6.3 get_started 395
12.6.4 get_responseAvailable 395
12.6.5 get_aborted 396
12.6.6 执行请求 396
12.6.7 getResponseHeader 398
12.6.8 getAllResponseHeaders 399
12.6.9 get_responseData 399
12.6.10get_statusCode 400
12.6.1 1get_statusText 400
12.6.1 2get_xml 400
12.6.1 3abort 401
12.7 使用WebRequest、WebRequestManager和XMLHttpExecutor 40212.8 小结 422
第13章 通过SOAP消息使用Web服务 423
13.1 构建Web服务 423
13.2 WSDL文档 424
13.2.1 参数的名称、类型和顺序 426
13.2.2 返回值的类型和顺序 426
13.2.3 方法描述 427
13.2.4 描述访问方法的通信协议 427
13.2.5 指定访问方法的站点 428
13.2.6 指定方法类 429
13.3 SOAP消息 429
13.4 小结 441
第14章 通过JSON消息使用Web服务 442
14.1 WebServiceProxy 442
14.1.1 Timeout 442
14.1.2 默认成功回调函数 442
14.1.3 默认失败回调函数 443
14.1.4 路径 443
14.1.5 调用一个Web方法 443
14.2 使用WebServiceProxy 454
14.3 WebServiceError 457
14.4 使用WebServiceError 460
14.5 调用页面方法 464
14.6 调用自定义方法 466
14.7 底层机制 472
14.7.1 ScriptHandlerFactory 472
14.7.2 RestHandlerFactory 476
14.7.3 RestHandler 478
14.7.4 HandlerWrapper 483
14.7.5 页面方法揭秘 484
14.7.6 Web服务桥揭秘 489
14.7.7 使用这些复制品 492
14.8 小结 494
第15章 代理类 495
15.1 什么是代理? 495
15.2 代理类 497
15.2.1 和Web服务相关的代理类 497
15.2.2 和页面方法相关的代理类 502
15.2.3 和自定义类相关的代理类 504
15.3 自动代理类生成 504
15.3.1 声明式方法 505
15.3.2 命令式方法 513
15.3.3 父/子页面 516
15.4 底层机制 518
15.4.1 ScriptManager 518
15.4.2 ServiceReference 522
15.4.3 ClientProxyGenerator 524
15.4.4 RestClientProxyHandler 540
15.5 使用这些复制品 541
15.6 小结 548
第16章 行为 549
16.1 什么是行为? 549
16.2 Behavior类 550
16.2.1 Properties 556
16.2.2 实例方法 559
16.2.3 静态方法 561
16.3 ClickBehavior 562
16.3.1 descriptor 563
16.3.2 click事件 563
16.3.3 initialize 564
16.3.4 使用ClickBehavior 564
16.4 ASP.NETAJAX控件工具箱 566
16.4.1 BehaviorBase 566
16.4.2 TextBoxWatermarkBehavior 571
16.5 小结 588
第17章 服务器端script控件和extender控件 589
17.1 为什么需要服务器端script和extender控件 589
17.2 服务器extender控件 590
17.2.1 IExtenderControl 591
17.2.2 ExtenderControl 591
17.3 服务器script控件 594
17.3.1 IScriptControl 594
17.3.2 ScriptControl 595
17.4 ScriptDescriptor 597
17.4.1 ScriptComponentDescriptor 598
17.4.2 ScriptControlDescriptor 609
17.4.3 ScriptBehaviorDescriptor 610
17.5 ScriptReference 611
17.6 ScriptReferenceCollection 612
17.7 ScriptManager 613
17.7.1 Scripts 618
17.7.2 LoadScriptsBeforeUI 618
17.7.3 ScriptControls 618
17.7.4 RegisterScriptControl 618
17.7.5 ExtenderControls 618
17.7.6 RegisterExtenderControl 619
17.7.7 GetCurrent 619
17.7.8 OnInit 619
17.7.9 Page_PreRenderComplete 619
17.7.10CollectScripts 620
17.7.1 1AddScriptReferencesFor-ScriptControls 621
17.7.1 2针对extender控件的RegisterScriptDescriptors 622
17.8 ResolveScriptReference事件 623
17.9 将所有综合在一起 625
17.10开发一个自定义的服务器端extender控件 626
17.10.1 WatermarkText 630
17.10.2 WatermarkCssClass 630
17.10.3 ClientState 631
17.10.4 ClientStateFieldID 631
17.10.5 CreateClientStateField 631
17.10.6 BehaviorID 631
17.10.7 GetScriptReferences 631
17.10.8 GetScriptDescriptors 631
17.10.9 OnInit 633
17.10.10Page_PreLoad 633
17.10.1 1OnLoad 634
17.10.1 2OnPreRender 635
17.10.1 3Render 636
17.10.1 4使用服务器端extender控件 637
17.1 1开发一个script控件 638
17.1 1.1 PreRender 641
17.1 1.2 Render 642
17.1 1.3 使用服务器端script控件 642
17.1 2服务器端script控件与服务器端extender控件 643
17.1 3小结 643
第18章 Web服务桥和转换器 644
18.1 AmazonWeb服务 644
18.2 开发支持Web服务桥的服务器端script控件 650
18.2.1 AspNetAjaxAmazonSearch 651
18.2.2 AmazonSearchScriptControl 658
18.2.3 HtmlGenerator 665
18.2.4 HtmlGeneratorScriptControl 669
18.2.5 使用这些组件 676
18.3 转换器 678
18.4 使用转换器 687
18.4.1 XmlBridgeTransformer 687
18.4.2 XsltBridgeTransformer 707
18.5 小结 714
第19章 UpdatePanel和ScriptManager 715
19.1 让异步的局部页面更新成为可能 715
19.2 条件更新 717
19.2.1 子元素作为触发器 719
19.2.2 一个UpdatePanel包含在另一个UpdatePanel内 720
19.2.3 使用触发器 729
19.2.4 命令式更新 731
19.3 开发支持局部更新的自定义组合服务器控件 733
19.3.1 BaseMasterDetailControl 734
19.3.2 BaseMasterDetailControl2 753
19.4 小结 756
第20章 在用户控件和自定义控件中使用UpdatePanel 757
20.1 MasterDetailControl 757
20.1.1 CreateBaseDataBoundControl-Master 759
20.1.2 RegisterMasterEventHandlers 759
20.1.3 属性 761
20.2 在Web页面中使用MasterDetailControl 761
20.3 MasterDetailControl2 765
20.3.1 CreateBaseDataBoundControl-Master 767
20.3.2 RegisterMasterEventHandlers 767
20.3.3 Master_SelectedIndexChanged 767
20.3.4 Master_DataBound 767
20.3.5 属性 768
20.4 使用MasterDetailControl2 768
20.5 MasterDetailControl3 770
20.6 使用MasterDetailControl3 771
20.7 MasterDetailControl4 773
20.8 开发支持局部页面更新的数据控件域 773
20.8.1 扩展BoundField 774
20.8.2 覆盖InitializeDataCell 778
20.8.3 处理DataBound事件 779
20.8.4 从单元格中抽取值 780
20.8.5 外观属性 780
20.8.6 使用MasterDetailField 780
20.9 开发支持局部呈现的用户控件 784
20.9.1 显示所有消息 794
20.9.2 显示某消息的细节 795
20.9.3 删除一条消息 796
20.9.4 更新一条消息 797
20.9.5 回复一个消息 797
20.9.6 开始一个新线索 798
20.10小结 800
第21章页面生命周期和异步的局部页面呈现 801
21.1 处理一个请求 801
21.2 Page生命周期 804
21.3 第一次访问支持局部页面呈现的Web页面 806
21.4 InitRecursive 806
21.4.1 ScriptManager的OnInit方法 807
21.4.2 UpdatePanel的OnInit方法 814
21.4.3 模板化控件 819
21.5 LoadRecursive 826
21.6 Rendering 847
21.6.1 ScriptManager的Render方法 848
21.6.2 UpdatePanel的Render方法 853
21.7 小结 855
第22章 ASP.NETAJAX客户端PageRequest Manager 857
22.1 实例化和初始化客户端PageRequest Manager 858
22.1.1 客户端PageRequest Manager的getInstance方法 859
22.1.2 客户端PageRequest Manager类的构造函数 860
22.1.3 客户端PageRequestManager的_initializeInternal方法 862
22.1.4 _updateControls 867
22.1.5 客户端PageRequest Manager的_pageLoadedInitialLoad方法 871
22.1.6 客户端PageRequestManager的_pageLoaded方法 871
22.2 pageLoaded事件 873
22.3 生成一个异步页面回传 889
22.3.1 辅助方法 889
22.3.2 _doPostBack 894
22.3.3 _onFormSubmit 898
22.4 initializeRequest事件 906
22.5 beginRequest事件 913
22.6 小结 918
第23章 异步局部页面呈现:服务器端处理 919
23.1 RetrievePostData 919
23.2 LoadScrollPosition 922
23.3 InitRecursive 924
23.3.1 PageRequestManager的IsAsync Post Back Request方法 924
23.3.2 PageRequestManager的OnInit方法 925
23.4 LoadPostData生命周期阶段 925
23.4.1 UpdatePanel 929
23.4.2 ScriptManager 929
23.4.3 PageRequestManager的LoadPostData方法 930
23.5 RaisePostDataChangedEvent生命周期阶段 932
23.6 PreRender生命周期阶段 933
23.7 Rendering生命周期阶段 934
23.7.1 PageRequestManager的编码方法 935
23.7.2 PageRequestManager的RenderPageCallback方法 936
23.8 服务器响应 969
23.9 小结 981
第24章 异步局部页面呈现:客户端处理 982
24.1 服务器响应文本的到达 982
24.2 PageRequestManager的_updatePanel方法 1005
24.3 PageRequestManager的registerDisposeScript方法 1006
24.4 _destroyTree方法 1007
24.5 _ScriptLoader类 1008
24.5.1 readLoadedScripts 1008
24.5.2 getInstance方法 1009
24.5.3 queueScriptBlock方法 1009
24.5.4 queueCustomScriptTag方法 1009
24.5.5 isScriptLoaded方法 1010
24.5.6 _getLoadedScript方法 1010
24.5.7 queueScriptReference方法 1010
24.5.8 loadScripts方法 1011
24.5.9 _loadScriptsInternal方法 1012
24.5.10 _createScriptElement方法 1014
24.5.11 _ScriptLoader类的构造函数 1014
24.5.12 _scriptLoaderHandler方法 1014
24.6 _ScriptLoaderTask类 1015
24.6.1 _ScriptLoaderTask类的构造函数 1015
24.6.2 execute方法 1016
24.6.3 _scriptLoadHandler方法 1017
24.7 _scriptsLoadComplete方法 1017
24.8 _endPostBack方法 1020
24.9 pageLoading事件 1025
24.10 pageLoaded事件 1043
24.11 endRequest事件 1045
24.12 小结 1061
附录A XML脚本 1062
附录B 绑定 1104
附录C 动作 1116
附录D 数据控件 1129
附录E 模板化控件 1150
附录F ListView 1173
……[看更多目录]
序言欢迎使用本书。ASP.NET AJAX框架包括两个框架:ASP.NET AJAX客户端框架和ASP.NET AJAX服务器端框架。
大家都知道,客户端编程和服务器端编程存在很大的差别。产生差别的主要原因是由于客户端编程缺乏像ASP.NET/.NET Framework一样功能丰富的编程框架。如果能够在一个具有像ASP.NET/.NET框架一样编程风格和能力的框架下编写您的客户端程序,那一定会得到不错的体验。使用ASP.NET AJAX客户端框架吧!它使得在客户端编程具有尽可能多的和ASP.NET/.NET一样丰富的编程特点。这些能力仅受限于客户端技术的基础限制,如JavaScript的限制。
ASP.NET AJAX服务器端框架扩展了ASP.NET框架,从而使得服务器端能够支持那些支持AJAX的Web应用。ASP.NET AJAX客户端框架和服务器端框架一同携手,来满足支持AJAX应用的客户端和服务器的需求。也就是说,ASP.NET AJAX客户端技术可以和其他服务器端技术一起使用而不仅仅是ASP.NET框架。
本书使用独特的方法深入分析了ASP.NET AJAX客户端和服务器端框架,该方法具有以下特征。
● 实用真实示例:本书的讨论将基于大量的实际示例展开,这些示例都可以在您自己的ASP.NET AJAX应用中使用。
● 底层机制分析:本书将深入分析ASP.NET AJAX客户端和服务端框架的底层机制,从而使您可以深入了解它们的工作原理,并对其进行扩展以满足您的应用需求。
● 代码逐行分析:本书使用了大量的代码逐行分析,使得您可以在自己的ASP.NET AJAX应用中实现一些类似的功能。
本书读者对象
本书主要针对初次学习ASP.NET AJAX的ASP.NET开发人员。学习本书,并不需要具备ASP.NET AJAX的预备知识。
本书主要内容
本书共包括24章和6个附录,分别如下:
● 第1章 AJAX相关技术 本章通过示例对在支持AJAX的Web应用中所使用的一些主要技术进行一个简单综述,包括XMLHttpRequest、XML及JSON等。
● 第2章 JavaScript基本类型扩展 本章主要给出了JavaScript的基本类型扩展。在其中,您将了解到这些扩展类型如何改进了JavaScript的基本类型,包括 Array、Boolean、Date、Error、Object及String,并让您尽可能地像在.NET框架中一样应用这些类型。
● 第3章 内置的和自定义异常类型 本章首先深入介绍了ASP.NET AJAX的一些内置的异常类型,包括ArgumentException、ArgumentNullException、ArgumentOutOfRangeException、ArgumentTypeException、ArgumentUndefinedException、InvalidOperationException、NotImplementedException及ParameterCountException,然后介绍了一种开发自定义异常类型的方法,使用该方法实现了一个异常DuplicateItemException,然后通过一个页面来使用这个自定义的异常类型。
● 第4章 JavaScript面向对象编程和类型反射扩展 本章首先对ASP.NET AJAX面向对象编程(OOP)和类型反射扩展机制中一些在底层使用的JavaScript技术进行研究。这些技术使得JavaScript具有OOP属性并支持类型反射扩展。然后本章详细分析了Type类型及其方法。在此,您可以通过学习大量的实例来了解如何定义名称空间、接口、类及枚举类型,如何实现一个实现了一个或多个接口的类,以及如何实现一个从其他类派生出来的类。
● 第5章 事件编程模型扩展 本章将循序渐进地为您介绍一种实现自定义ASP.NET客户端类,并为其添加事件的方法,从而使得类的使用者能够扩展它们的功能来执行与应用相关的逻辑。然后提供了一个具体实例来使用这种方法。本章还讨论了EventArgs、CancelEventArgs和EventHandlerList等几个类及其方法和属性。
● 第6章 DOM扩展 本章主要解释了ASP.NET AJAX DOM扩展如何扩展传统的DOM编程技术,从而使其支持.NET的方法和属性,以及如何在自己的DOM编程中使用这些扩展。本章主要介绍ASP.NET AJAX委托、DomElement和DomEvent客户端类及其方法和属性。
● 第7章 组件开发基础设施 本章主要介绍ASP.NET AJAX组件开发的基础设施及其主要接口,包括IDisposable、INotifyDisposing、INotifyPropertyChanged和IContainer以及两个重要的类Component和Application。此外,您还可以通过大量的实例学习到如何实现这些接口以及如何实现一个从Component基类派生出来的自定义组件。本章还包括组件的应用、组件的生命周期以及应用级事件等。
● 第8章 开发客户端控件 本章描述了Control、Label、Image及HyperLink等客户端控件及其方法和属性,并给出了使用这些自定义控件的相应示例。还给出并讨论了一个自定义Image控件的实现。该控件扩展了ASP.NET AJAX客户端Image控件的功能。
● 第9章 事件冒泡机制及客户端Button控件 本章首先介绍CommandEventArgs事件数据类和客户端Button控件。然后讨论了ASP.NET AJAX 事件冒泡机制,并讨论了如何实现一个自定义的控件,使其事件冒泡给它的父控件,以及如何实现一个自定义控件来捕获它的子控件所冒泡的事件。本章还实现了一个自定义的客户端控件GridView,该控件使用了ASP.NET AJAX的事件冒泡机制。
● 第10章 类型描述扩展 本章详细介绍了TypeDescriptor类和ICustomTypeDescriptor接口。基于此,您将了解到ASP.NET类型描述能力为您的应用所带来的好处:它使得您的客户端代码可以独立于客户端代码所处理的特定的对象类型。这将使得用户代码可以不经过修改而与不同的对象类型进行交互。本章实现了3个Web页面,在这些页面中您可以检测任何ASP.NET AJAX类型的属性、事件和方法。还实现一个自定义的客户端控件CustomTable。该控件使用ASP.NET AJAX类型描述能力来显示任意类型的数据记录。最后,本章介绍了动态注入元数据信息的方法。
● 第11章 数据类 本章首先讨论了IData接口,然后深入介绍了ASP.NET AJAX的数据类DataColumn、DataRow 和DataTable。还实现一个自定义控件。该控件实现了IData接口并可以显示任何数据源(如DataTable)的数据。
● 第12章 客户-服务器通信 本章主要涉及到ASP.NET AJAX 框架客户-服务器通信层及其主要的类,详细讨论了WebRequest、WebRequestExecutor、WebRequestManager、 NetworkRequestEventArgs 和XMLHttpExecutor,并结合一些实例来讨论如何在您自己的ASP.NET AJAX 应用中使用这些类。
● 第13章 通过SOAP消息使用Web服务 本章首先详细讨论了WSDL文档和SOAP消息,然后结合一个实例给出了使用ASP.NET AJAX框架的客户/服务器通信层的类来和Web服务交互SOAP消息的方法。
● 第14章 通过JSON消息使用Web服务 本章深入讨论了 WebServiceProxy和WebServiceError类,并给了3种不同的途径来实现客户端调用服务器端的方法:调用页面方法、Web服务方法及Web服务桥。还详细分析了.asbx文件,给出并实现了ASP.NET AJAX REST方法调用-请求-处理基础设施的主要组件,包括ScriptHandlerFactory、RestHandlerFactory、RestHandler、HandlerWrapper 和ScriptModule类,并实现了一个实例来使用这些方法。本章还使用这些方法分析了页面方法调用和Web服务桥。
● 第15章 代理类 本章详细介绍了与页面方法、Web服务桥及Web服务方法相关的代理类。接着,本章还讨论了服务器端ScriptManager和ScriptManagerProxy控件,以及服务器端ScriptManagerProxy控件在父/子页面方案中的作用。然后还实现了ASP.NET AJAX 自动代理-类-产生器基础设施主要组件的完整功能流程,包括ScriptManager、ServiceReferenceCollection、ServiceReference、ClientProxyGenerator 和 RestClientProxy- Handler。您可以看到在应用中该基础设施如何产生与页面方法、Web服务桥、Web服务方法相关的代理类。最后本章给出了一个使用这些方法的实例。
● 第16章 行为 本章详细介绍了Behavior 基类及其方法和属性,并介绍了如何从该基类派生出新的类来实现自定义的行为。然后讨论了ASP.NET AJAX 控件工具包中的行为基类BehaviorBase,并讨论了如何从BehaviorBase类派生新的类来实现自定义的工具包行为。
● 第17章 服务器端script控件和extender控件 本章深入介绍了ASP.NET AJAX 服务器端框架主要组件的完整功能流程,该流程涉及两类重要服务器端控件的内部功能,即script控件和extender控件。分析这两类控件有助于您理解服务器端控件如何和相应的客户端组件进行交互,它们之间的异同以及如何实现自定义的script控件和extender控件。本章所实现的ASP.NET AJAX服务器端框架的组件包括:IExtenderControl 、ExtenderControl、IScriptControl、ScriptControl、ScriptDescriptor、ScriptComponent- Descriptor 、ScriptBehaviorDescriptor、ScriptControlDescriptor、ScriptReference、ResolveScript- Reference、ScriptReferenceCollection 和ScriptManager。本章最后实现了自定义的服务器端script控件和extender控件,从而使得您可以开发自己的服务器端script控件和extender控件。
● 第18章 Web服务桥与转换器 本章首先给出了一个使用Amazon Web服务的、支持Web服务桥的服务器端script控件,然后详细讨论了ASP.NET AJAX 转换器,包括XmlBridgeTransformer和XsltBridgeTransformer。接着,本章使用这些转换器改进了支持Web服务桥的服务端script控件。还介绍了如何实现自定义的转换器。
● 第19章 UpdatePanel和ScriptManager 本章使用了大量实例来学习如何实现异步局部页面呈现,如何实现触发器以及通过多种不同的方法来实现有条件地更新服务器端UpdatePanel控件,包括:指定ChildrenAsTrigger属性,直接将控件添加到其他服务器端UpdatePanel控件,通过内容网页间接将控件添加到其他服务器端UpdatePanel控件,通过用户控件间接将控件添加到其他服务器端UpdatePanel控件,以及在代码中显式调用它的Update方法。最后,本章实现了两个自定义的、支持局部页面呈现的服务器端控件BaseMasterDetailControl和BaseMasterDetailControl2。
文摘插图:

第1章 AJAX相关技术
传统的Web页面技术使用服务器端技术和资源来操作其页面与服务,并将其发送给它们的终端用户。传统Web页面要求终端用户将整个页面回传给服务器,这些页面在服务器上可以运行需要的服务器端代码以向用户传送请求的服务和页面。换句话说,传统Web页面使用了click.and.wait这种对用户不友好的交互方式。该方式需要用户等待一定的时间,从而打断了用户的工作流,因此,降低了用户的体验。click.and-wait用户交互模式使得传统的Web应用的表现和用户体验与相应的桌面应用相差甚远。
AJAX(Asynchronous Java ScriptAnd XML)是目前流行的一种w曲应用开发方法,该方法使用HTML、XHTML、CSS、DOM、XML、XSLT和JavaScript等客户端技术,以及XMLHTTP请求和隐藏框架技术之类的异步客户端回调技术来开发更高级的、响应更快速的Web应用。这些应用将打破click-and-wait交互模式,使用起来很像桌面应用。换句话说,AJAX拉近了Web应用和相应的桌面应用之间的差距。
本章将首先用一些具体示例来讨论支持AJAX的Web页面的主要特性。
1.1 Google Suggest
Google SuggestWeb页面(www.google.com/webhp?complete=1)包含一个支持AJAX的搜索框。当您输入搜索项时,该搜索框能实现补全搜索项的功能,如图1-1所示。在后台,这个支持AJAX的搜索框使用AJAX技术异步地从Web服务器上下载需要的数据,并将其显示给终端用户,但并不打断用户和页面的交互。所有这些客户和服务器间的通信都在用户在搜索框中输入搜索项时由后台进行处理。