【发布时间】:2011-03-18 10:03:07
【问题描述】:
如果我正在开发一个 asp.Net 应用程序,在某些情况下我是否应该忘记 MS Ajax UpdatePanels 而更喜欢 jQuery.Ajax 来更新我的页面的某些部分?
谢谢
【问题讨论】:
标签: asp.net jquery updatepanel
如果我正在开发一个 asp.Net 应用程序,在某些情况下我是否应该忘记 MS Ajax UpdatePanels 而更喜欢 jQuery.Ajax 来更新我的页面的某些部分?
谢谢
【问题讨论】:
标签: asp.net jquery updatepanel
是的,事实上,您应该几乎总是更喜欢使用您自己的(或 jQuery 的)ajax 功能。
与 MS Ajax UpdatePanel 相关的很多开销(它执行完整的回发,然后更新页面上更改的元素),因此启用 AJAX 的网站 - 响应性、连续性等 - 几乎完全丢失(恕我直言)。您几乎无法控制通过电缆实际提交的内容、返回的内容以及返回给客户端时的处理方式。
另一方面,使用 jQuery Ajax,您可以获得完全和即时的控制,您可以根据需要发出轻量(或重)请求,并让我们面对现实吧 - API 并不难使用比更新面板的。
考虑到这一点,在某些情况下 UpdatePanel 还可以,甚至更好。特别是在 ASP.NET WebForms 中,如果用户不能使用 javascript,以优雅降级的方式仅返回页面的一部分可能会很棘手,并且对于快速的“拖放”开发风格,真的有jQuery 无法与之竞争。 (您是否喜欢拖放式开发完全是另一回事......)
【讨论】:
当然, 恕我直言,您应该更喜欢 jQuery 而不是标准的 ASP.Net 更新面板。 原因(主要)是性能,当您使用 jQuery.ajax 发布一些数据时,您只发布服务器需要理解帖子的内容。 这通常是文本的 1-2 个参数。
当您使用更新面板执行相同的帖子时,整个页面会在后台运行到服务器,然后整个页面返回并呈现该区域。
如果你使用jQuery,你可以在服务器上创建一个ashx页面,这个页面没有普通webform的页面加载和生命周期,而且非常轻量级。
【讨论】:
我会说你绝对应该更喜欢 jQuery AJAX 而不是 ASP.NET AJAX UpdatePanel。如果您查看ASP.NET AJAX site,确实没有提到 ASP.NET AJAX 和/或 UpdatePanel...但是很多都提到了 jQuery。事实上,微软似乎更喜欢使用 jQuery 作为客户端 JavaScript AJAX 框架的 ASP.NET 开发人员,而不是 UpdatePanel 和相关的 ASP.NET AJAX 控件。
他们仍然提供指向 AJAX 控件工具包的链接,但是有这么多 jQuery 插件,你为什么需要工具包?
UpdatePanel 速度较慢且体积较大——使用 jQuery AJAX。
【讨论】:
如果您对整个 ASP.Net 回发方案感到满意,那么坚持使用此类控件的一个优点是(大多数情况下)它们可以保护您免受回发等副作用的影响。但在这种特定情况下,它会带来成本:每个 AJAX 请求(包括视图状态)都有一个完整的回发,与直接 AJAX 请求相比,这可能会影响性能,参见:
http://geekswithblogs.net/dlussier/archive/2007/09/06/115188.aspx
我也不确定它是否能很好地处理跨站点请求(JSONP 等),因此需要考虑两个警告。
【讨论】:
正如其他人所说,MS-Ajax 和 UpdatePanel 的性能很差 - 有时甚至无法使用。正如其他人所指出的,应该小而轻的 ajax 回调很重,因为它们还包含完整的 ViewState。
除了这些问题,我还发现了 MS-Ajax 的其他一些缺点:
最后一点:MS-Ajax 和 UpdatePanels 的一个好处是,您可以摆脱 90% 的 javascript 无知并且仍然对它们进行编码。 “传统” ajax 比 MS-Ajax 涉及更多的 javascript 编码。
【讨论】: