是否有理由更喜欢jQuery.Ajax到asp.net UpdatePanel?

如果我正在开发一个asp.Net应用程序,是否有一些情况下我应该忘记MS Ajax UpdatePanels并且更喜欢jQuery.Ajax来更新我的页面的某些部分?

谢谢

是的,事实上,您之前几乎总是喜欢使用自己的(或jQuery的)ajaxfunction。

MS Ajax UpdatePanel 有很多开销(它执行完整的回发,然后更新页面上已更改的元素),因此启用AJAX的网站中的优秀function – 响应性,连续性等 -几乎完全失去了(恕我直言)。 您几乎无法控制通过电缆实际提交的内容,返回的内容以及返回客户端后如何处理。

另一方面,使用jQuery Ajax,您可以获得完整的即时控制,您可以根据需要制作轻量级(或重型)请求,并让我们面对它 – API的使用方式比使用API​​更难UpdatePanel。

考虑到这一点,仍然存在UpdatePanel很好甚至更好的情况。 特别是在ASP.NET WebForms中,如果用户不能使用javascript,以一种优雅降级的方式返回页面的一部分可能会很棘手,并且对于快速“拖放”开发风格,确实存在没有办法jQuery可以竞争。 (无论你是否喜欢拖放式开发,都是一个完全不同的讨论…)

当然,恕我直言,你应该更喜欢jQuery而不是标准的ASP.Net更新面板。 原因(主要)是性能,当您使用jQuery.ajax发布一些数据时,您只发布服务器需要了解post的内容。 这通常是1-2个文本参数。

当您使用更新面板执行相同的post时,整个页面将在幕后进行到服务器,然后整个页面返回并呈现区域。

如果你使用jQuery,你可以在服务器上创建一个ashx页面,这个页面没有常规webform的页面加载和生命周期,而且它也非常轻量级。

我会说你绝对应该支持jQuery AJAX而不是ASP.NET AJAX UpdatePanel。 如果你看看ASP.NET AJAX网站 ,真的没有提到ASP.NET AJAX和/或UpdatePanel ……但是有很多提到jQuery。 事实上,微软似乎更青睐使用jQuery作为UpdatePanel上的客户端JavaScript AJAX框架和相关的ASP.NET AJAX控件的ASP.NET开发人员。

他们仍然提供了AJAX Control Toolkit的链接,但是有很多jQuery插件,为什么你需要Toolkit?

UpdatePanel更慢,更笨重 – 使用jQuery AJAX。

如果你对整个ASP.Net回发方案感到满意,坚持这种控制的一个好处是(大多数时候)它们可以保护你免受回发等方面的影响。 但在这种特定情况下,它会带来成本:每个AJAX请求都有一个完整的回发(包括视图状态),与直接的AJAX请求相比,这可能是性能损失,参见:

http://geekswithblogs.net/dlussier/archive/2007/09/06/115188.aspx

我也不确定它是否处理好跨站点请求(JSONP等),所以这些是需要考虑的两个注意事项。

正如其他人所说,MS-Ajax和UpdatePanels表现不佳 – 有时甚至无法使用。 正如其他人所指出的那样,ajax回调应该是小而轻的,因为它们还包括完整的ViewState,因此很重。

除了这些问题,我还发现了MS-Ajax的一些其他缺点:

  1. MS生成的javascript包含很多开销。 我们假设他们已经内置了很多类型检查和变量检查,目的是让他们的javascript更加类型安全。 这种开销显着减慢了浏览器端的处理速度 – 尤其是当重复/递归调用那些生成的javascript函数时(如某些第三方控件的情况)。
  2. ASPX代码隐藏变得更加复杂和难以维护,因为正在为页面的初始加载执行相同的页面生命周期,以及每个单独的ajax回调。 像所有复杂的代码一样,熟练的开发人员和良好的代码注释可以克服这一点 – 但它仍然是一个缺点。

最后一点:MS-Ajax和UpdatePanels的一个好处是,你可以逃脱90%的javascript无知并仍然编码。 “传统”ajax涉及FAR比MS-Ajax更多的javascript编码。