在ASP.NET MVC应用程序中MS Ajax与jQuery的优缺点?

问题描述:

现在RC1出来了,我需要一劳永逸地决定是使用MS Ajax库还是仅仅使用jQuery来处理AJAX请求。该应用程序是一个新应用程序。本质上,我决定的方式是我是否从微软库中获得任何显着的好处,我不会从jQuery获得这些好处。我已经有jQuery加载,并且我担心文件大小的额外开销超过了任何东西。在ASP.NET MVC应用程序中MS Ajax与jQuery的优缺点?

据我所知 - 唯一的好处就是有像Ajax.BeginForm这样的助手,但是也许这些在某些时候会与jQuery协同工作?今天,我的一位*员工朋友也告诉我,MS Ajax库在其中有许多错误 - 这与我有关。

随着微软现在正式正式启用befriended jQuery我不会太担心他们将来会通过增强自己的库来让jQuery黯然失色。

我真的不知道MS Ajax实际上为我做了什么。有没有某些优点和缺点?还是只有90%的膨胀来支持'更新面板'?

我也觉得很有趣的是,ASP.NET MVC in Action本书刚刚跳过的MS Ajax库和跳跃直入jQuery的:

在这一章中,读者将 研究如何AJAX技术 适用于ASP .NET MVC的更多 无缝方式比Web Forms。 阅读器将看到如何利用日益流行的,轻量级的 JavaScript库,称为jQuery。

(从AJAX free sample章)

非常感谢从自己的经历任何人都干活听,expecially以下其他问题:

  • 是很容易地转换代码两个库之间 - 假设相对简单的Ajax要求?
  • 在任何一个库中调试效果明显更好或更快
  • 任何人都知道ASP.NET 4.0正在如何发展,并且任何已公布的可能有利于MVC的AJAX库的计划?
  • 简而言之,MS AJAX可以为MVC应用程序提供超越发送请求并在DIV中保留响应的功能吗?
  • 我该怎么做相当于Ajax.BeginForm(...)并使用jQuery?
  • 什么是你的交易杀手一种或另一种?
  • 大多数人在那里使用什么?

个人而言,我会坚持使用JQuery。 MS AJAX在尺寸方面相当重量级,您可以使用JQuery做这么多事情。至于是否易于转换代码,它取决于您使用的MS AJAX内容的数量。我认为从一个到另一个的调试没有太大的区别。您将有一个更大的JQuery用户社区,从中抽取资源。

+2

要为“重量级”添加更多“特异性​​”,jQuery 1.3.2缩小大约为磁盘上的50 KB,而Microsoft.Ajax.js大约为100 KB。很明显,当GZip通过网络时,差异相对微不足道 - 尤其是微软新的“缩小”工具,但认为其他人可能会发现这些细节很有帮助。 – Todd 2009-10-18 17:45:20

你可以(和我)根据需要使用两者。当我想要一个特定的表单是非JavaScript友好的,并且我在服务器上生成内容时,我将通过AjaxHelper使用MS AJAX。它在客户端构建我需要的所有东西来处理不支持JavaScript的浏览器。我只需要在控制器中检测AJAX /非AJAX并返回部分或全部视图。如果我需要使用AJAX作为插件的一部分(例如autocomplete),那么我将使用jQuery。关键是我使用最适合我的工具(最容易实现)。当然,我的大部分应用程序都在内部网上运行,所以我不太在意下载的大小。

+0

雅我注意到,如果我有一个JavaScript错误,它实际上提交它非Ajax - 我认为很聪明。我个人比较喜欢一个错误,起初它肯定让人困惑,但我并不特别担心没有javascript的情况下功能会消失,因为我会做的事情 – 2009-01-31 20:11:14

我还发现了jQuery announcement有关MS纳入图书馆

显然:

此外微软将 开发额外的控制,或 窗口小部件,对jQuery的顶部是 会很容易地运行可部署在您的 .NET应用程序中。 jQuery帮助器将 也包含在.NET开发的服务器端 部分( 除了现有的帮助器之外) 提供了对现有ASP.NET AJAX功能的补充功能 。

所以我想它很可能会最终有jQuery助手,完全镜像MS的AJAX助手。

我想我会采取的解决方案是使用Html.BeginForm,然后拦截提交按钮以使用jQuery。我并不特别担心没有javascript功能的人,但是这样做并不那么困难,我也可以。

JQuery比Ajax更容易编写代码,开销问题可以通过增加更多内存而不是通过流代码来弥补。虽然我只是一个初学者,但Ajax对我来说没有任何意义。在处理过于苛刻的Ajax语法之后,jQuery就像是一股狂风般的气息。

那么有一件事,我发现与MS Ajax框架,不能用jQuery优雅地完成。用户控件构建MS Ajax非常面向对象。这不能用jQuery轻松完成。例如,假设您正在构建“地址”用户控件,该控件将具有地址1,地址2,城市,州,邮编和国家/地区。您可以使用jQuery和Ajax构建此控件,但Ajax库提供的好处是它将划分地址控件。您可以在该控件上定义一个函数“reset()”来重置地址控制的内容。可以说你想要“重置()”将地址1,地址2,城市设置为空字符串,但状态设置为“AL”,并将国家设置为美国。您在(.js)文件中定义Ajax控件的代码,并且该函数将与您的地址控件相关联。 jQuery不可能做到这一点。你定义的任何函数都是全局的,并且没有简单的方法来绑定该函数的地址控制。您可以很好地调用窗体上的文本框控件上的“重置”功能!

所以,如果你想创建一个纯面向对象的用户控件,那么我想更好的选择是使用MS Ajax框架。