主题:.NET2.0环境下的Ajax选型和应用
研究需要解决的问题: 1 Ajax 应用框架的选型及其性能对比 2 如何应用 Ajax 3 应用 Ajax 过程中应该着重注意的问题
研究者: Jimmy.Ke
时间: 2006-11-13 一 Demo说明 Ajax Demo Web Site 是一个完整的 .NET Website ,其中包含 5 个 ASPX 页面及其对应的 CS 文件。 为了方便对比, Demo 中使用了三种 Ajax 应用方式: 一是使用微软提供的 Atlas 应用框架,二是使用 Ajax.NET Professional 开源框架,三是使用针对 Ajax 的单纯的 Javascript 包 Prototype 。三者对应的关联文件如下表所示:
应用方式 |
文件名称 |
描述 |
|
Default.aspx | 首页导航,列出四个 Demo 页面的链接 |
Atlas |
AtlasDemo.aspx | 使用 Atlas 实现 Product 的 CRUD 功能,通过 UpdatePanel 完成无刷新操作。 |
|
||
AjaxPro |
AjaxProDemo.aspx | 使用 Ajax.NET Pro 实现 Product 的 CRUD 功能,编辑、删除操作返回 true/false 的结果,通过 .NET DataGrid 控件实现页面数据列表的呈现( HTML )。 |
|
||
|
AjaxProDemoSecond.aspx | 使用 Ajax.NET Pro 实现 Product 的 CRUD 功能,编辑、删除操作返回所有的 Product 列表,通过 .NET DataGrid 控件实现页面数据列表的呈现( HTML )。 |
|
||
Prototype |
PrototypeDemo.aspx | 使用 Prototype 实现 Product 的 CRUD 功能,编辑、删除操作返回所有的 Product 列表, Client 和 Server 的数据以 JSON 格式传输。 |
|
||
|
||
|
Product.cs | Product 实体类 |
A
、数据流量 Demo 中的四个 Sample 都实现了针对 Product 的简单 CRUD 功能。这里我们使用 Fiddler HTTP Debugger 来测试整个操作过程中 Client 和 Server 交互的数据量。
加载 Product List
:
请求 URL |
数据流量 |
说明 |
Prototype | ||
PrototypeServerResponse.aspx ?action=listProduct | Request Count: 1 Bytes Sent: 380 Bytes Received: 2,150 | 获取 Product 列表,以 JSON 的格式返回,客户端使用 Javascript 脚本处理呈现。 |
Ajax.NET Pro ( Second ) | ||
ajaxpro/AjaxProDemoSecond, App_Web_qgwv3twq.ashx | Request Count: 1 Bytes Sent: 493 Bytes Received: 1,392 | 获取 Product 列表,以 HTML 的格式返回,客户端直接呈现。 |
Atlas | ||
AtlasDemo.aspx | Request Count: 1 Bytes Sent: 827 Bytes Received: 6,391 | 获取 Product 列表, Server 完成 DataGrid 数据源绑定呈现。 |
删除 Product
:
请求 |
数据流量 |
说明 |
Prototype | ||
PrototypeServerResponse.aspx ?action=deleteProduct&productId=1 | Request Count: 1 Bytes Sent: 446 Bytes Received: 1,891 | 传送 ProductId ,完成删除操作,并获取 Product 列表到 Client 端呈现。 |
Ajax.NET Pro ( Second ) | ||
ajaxpro/AjaxProDemoSecond, App_Web_qgwv3twq.ashx | Request Count: 1 Bytes Sent: 504 Bytes Received: 1,300 | 调用远程 RPC 接口,完成删除操作,并获取 Product 列表的 HTML 在 Client 端呈现。 |
Atlas | ||
AtlasDemo.aspx | Request Count: 1 Bytes Sent: 2,287 Bytes Received: 5,913 | 触发 Server 端的 Action 事件,完成删除操作,需要 Postback 整个页面。 |
获取 Product Info
:
请求 |
数据流量 |
说明 |
Prototype | ||
PrototypeServerResponse.aspx ?action=getProduct&productId=8 | Request Count: 1 Bytes Sent: 443 Bytes Received: 403 | 传送 ProductId ,获取 JSON 格式的 Product 信息, Client 端完成解析并呈现。 |
Ajax.NET Pro ( Second ) | ||
ajaxpro/AjaxProDemoSecond, App_Web_qgwv3twq.ashx | Request Count: 1 Bytes Sent: 506 Bytes Received: 284 | 调用 RPC 接口,获取 Text 格式的 Product 信息, Client 端完成解析并呈现。 |
Altas | ||
AtlasDemo.aspx | Request Count: 1 Bytes Sent: 2,185 Bytes Received: 6,275 | 触发 Server 端的 Action 事件,获取 Product 信息,需要 Postback 整个页面。 |
编辑 Product
:
请求 |
数据流量 |
说明 |
Prototype | ||
PrototypeServerResponse.aspx ?action=updateProduct&productId=8 &productName=Sony&manufacturer=China | Request Count: 1 Bytes Sent: 482 Bytes Received: 1,877 | 传送 ProductId 等参数,完成保存操作,并获取 Product 列表。 |
Ajax.NET Pro ( Second ) | ||
ajaxpro/AjaxProDemoSecond, App_Web_qgwv3twq.ashx | Request Count: 1 Bytes Sent: 549 Bytes Received: 1,284 | 调用远程 PPC 接口,完成保存操作,并获取 HTML 格式的 Product 列表。 |
Atlas | ||
AtlasDemo.aspx | Request Count: 1 Bytes Sent: 2,218 Bytes Received: 5,913 | 触发 Server 端的 Action 事件,完成保存操作,需要 Postback 整个页面。 |
增加 Product
:
请求 |
数据流量 |
说明 |
Prototype | ||
PrototypeServerResponse.aspx ?action=addProduct&productName=Sony &manufacturer=China | Request Count: 1 Bytes Sent: 467 Bytes Received: 2,050 | 传送 ProductName 等参数,完成增加操作,并获取 JSON 格式的 Product 列表。 |
Ajax.NET Pro | ||
ajaxpro/AjaxProDemoSecond, App_Web_qgwv3twq.ashx | Request Count: 1 Bytes Sent: 529 Bytes Received: 1,364 | 调用远程 RPC 接口,完成增加操作,并获取 HTML 格式的 Product 列表。 |
Atlas | ||
AtlasDemo.aspx | Request Count: 1 Bytes Sent: 2,249 Bytes Received: 6,533 | 触发 Server 端的 Action 事件,完成增加操作,需要 Postback 整个页面。 |
B
、开发效率 Atlas 紧密的和 .NET 的控件结合在一起。如果使用 Atlas ,则可以最大程度的复用 .NET 的控件,比如数据显示控件。 使用 Prototype ,需要在 Javascript 代码中提交 Request 请求到 Server ,并且编写相应的 callback 函数完成 Response 结果的解析和呈现。 使用 Ajax.NET Pro ,可以直接调用 Server 的类的方法(远程 RPC ),不过还是需要编写相应的 callback 函数完成 Response 结果的解析和呈现。
C
、 Server
端返回的数据格式 Ajax.NET Pro 中提供了序列化成 JSON 格式的接口和方法。 Server 端返回的数据格式,可以是简单的 Text ,也可以是 XML 文档,或者通过 Ajax.NET Pro 序列化成 JSON 格式。 三 使用Ajax需要注意的问题 暂缓。 四 参考材料 Micorsoft Fiddler HTTP Debugger : http://www.fiddlertool.com/fiddler/ Prototype : http://prototype.conio.net/ Ajax.NET Pro : http://www.ajaxpro.info/ Atlas Beter 2 : http://ajax.asp.net/default.aspx?tabid=47
点击这里下载Demo源码
点击这里下载Demo Web Site