AJAX技术
• Asynchronous JavaScript and XML
• 在客户端发起异步请求
– 不会阻塞页面,提高用户体验
–减少数据传输尺寸,提高性能
• 几乎已经成为Web开发标准技术
– 对Web服务器来说,AJAX请求和普通请求没
有任何区别
AJAX技术的问题
• 滥用
–通信量有增无减
–增加服务器端压力
• 浏览器兼容问题
– AJAX请求 XML request 不同的浏览器构造不一样
– DOM操作
ASP.NET MVC中的AJAX运用
• 目前ASP.NET MVC有没有自带AJAX功能?
–没有(AJAX功能已经在Roadmap中) 未来MVC框架可能自带支持AJAX
• 有没有ASP.NET MVC不支持的AJAX技术?
–没有
• AJAX是纯客户端技术 客户端和服务端是可以分离的
– 任何客户端框架可以与任何服务器技术配合
– AJAX for PHP == AJAX for ASP.NET
– AJAX for ROR == AJAX for ASP.NET
常用AJAX(客户端)框架
• Microsoft AJAX Library 框架中自带的类库 提供浏览器兼容层等
–详见《深入浅出ASP.NET AJAX》系列课程
• Prototype
• jQuery
• Mootools
• etc.
常用传输模式:数据
• XML?很少使用XML
–客户端解析困难
– 数据冗余 需要花时间解析开节点和闭节点
• JSON!
– JavaScript Native Support
– 优点:数据相对紧凑
常用传输模式:内容
• 传输数据
–优点:传输数据尺寸小
– 缺点:作呈现时需解析DOM结构
• 传输内容
– 优点:直接传输呈现内容,呈现逻辑统一
– 缺点:数据量相对较大
ASP.NET AJAX
• 与ASP.NET AJAX紧密结合的AJAX框架
– ASP.NET AJAX Extensions
– Microsoft AJAX Library
• 官方出品
– ASP.NET AJAX != AJAX.NET
• 提供UpdatePanel等强大服务器端控件
–透明,高效地使用AJAX功能
– 尽可能减少脚本编写
UpdatePanel的悲哀
• 在ASP.NET MVC中UpdatePanel几乎无任
何用武之地
– 没有PostBack
–理念不同
异步访问Web Services
• 异步访问Web Service的功能依旧存在
–客户端功能
– 自动生成代理脚本
• 详细讲座:
– 《深入浅出ASP.NET AJAX》系列(4) – (6)
服务器端功能真的完蛋了吗?
• 服务器端控件没有完蛋
–完蛋的只是PostBack相关功能
• 只要避开PostBack的功能依旧好用
–例如Ajax Control Toolkit
AJAX Control Toolkit
• ASP.NET AJAX的开源控件集合
• 数十种可以直接使用的控件
– 需要