微软的AJAX工具包与jQuery

16

我们团队自Atlas时代起就一直在使用Microsoft的AJAX Toolkit。在一次有点天真的情况下,我们错过了jQuery / Prototype现象,直到一个月或两个月前。直到现在,我们一直将Ajax的概念与Microsoft的工具包联系在一起。

通过阅读jQuery文档,我发现了Ajax的另一种全新的方式,这是我之前仅仅略知一二的。也就是说,你可以使用JavaScript(或JS库)与服务器进行通信,而无需使用专门的控件。乍一看,它似乎提供了更好的浏览器兼容性和更少的冗余代码。我肯定会对此感兴趣。

我的问题是:
当需要在ASP.NET中与服务器进行通信而无需回传时,如何确定使用AJAX Toolkit中的控件,而不是使用类似jQuery的东西?是否有理由同时使用两者?


1
Scott Gu说这是官方的微软好处,你还需要什么呢? :)http://weblogs.asp.net/scottgu/archive/2008/09/28/jquery-and-microsoft.aspx - James McCormack
@James - 我已经被jQuery的优点所吸引(部分原因是在Visual Studio中得到了官方支持),现在正在尝试确定我们使用它的程度。我喜欢crescentfresh迄今为止的答案,因为它是一个非主观的答案(说服其他人转换因为“我喜欢它”是有挑战性的)。 - Mayo
我认为你应该使用最能提高生产力的解决方案,同时不会给最终用户带来性能问题。例如,我喜欢UpdatePanels,但它们会产生很大的后台传输量。当有很多交互时,我仍然会使用它们,但对于那些基本上是单向通信的事情,比如弹出式延迟加载信息框,我喜欢使用像这样的PageMethods和JQuery:http://encosia.com/2008/05/29/using-jquery-to-directly-call-aspnet-ajax-page-methods/而且,JQuery非常适合添加快速对话框、显示和隐藏内容以及快速重载事件。玩得开心! - James McCormack
6个回答

14

我发现团队对JavaScript和DOM的熟练掌握对于使用jQuery而不是MS控件有很大影响。如果团队对于DOM、HTTP、异步操作、事件驱动UI或JSON并不了解,也不知道它为什么如此重要,那我建议继续使用AjaxControlToolkit。

但另一方面,如果团队一直试图通过JavaScript直接操纵控件,而不使用工具包,那么jQuery能够轻松地完成DOM操作。

最终,如果你的团队使用.NET控件能够更快地上市,那么就坚持使用它来完成应用程序的整体交付,并让他们逐渐尝试使用jQuery来实现部分功能(例如动画效果、jQuery UI、.bind()以及将行为与呈现分离)。最终,你要么a)获得足够的经验,能够将新的页面/应用程序转换为100%的jQuery代码,要么b)赚到足够的钱,可以雇佣熟练掌握DOM脚本编写的人来教授团队 ;)。


1
好观点 - 虽然我想缺乏知识可能会对他们的职业生涯造成伤害。强制团队提高他们对JS/DOM的知识水平可能是手动执行的另一个原因。 - Mayo

5

好问题。

我认为,虽然 AJAX 工具包控件(如传统的 Web 表单)仍有其用武之地,但使用 jQuery 时,您的代码将更加清晰易于维护。但最重要的是,您将对代码行为拥有更多的控制和灵活性。

您始终可以针对特定情况使用一些控件,并对其余部分使用 jQuery。我认为同时采用这两种方法没有任何根本性问题。


3

虽然Microsoft AJAX Toolkit方便且易于使用,但一旦你想要做比设计更复杂的事情时,很容易遇到障碍。如果你有兴趣学习AJAX的内部机制并使用友好的库,那么选择JQuery是正确的选择。这种知识可以在多个平台上转化;例如,如果你的团队决定尝试使用Django、Ruby on Rails等,则已经有了JQuery作为默认的AJAX工具包。特别是当你计划从ASP.NET迁移到ASP.NET MVC时,Microsoft已将JQuery称为官方客户端JavaScript工具包,因此这一点尤为重要。


2

很久以前,我停止使用MS Ajax的东西,因为我开发的许多应用程序需要具有可访问性和优雅降级的特点。也就是说,无侵入式JavaScript。我坚信,微软最终会朝着这个方向发展他们的JavaScript,但现在还没有。

基本上,我开发的每个网页都不会有任何内联JavaScript,除了外部链接到js文件,页面将在关闭JavaScript的情况下正常工作。这是我的首要任务,但可能不是你或其他人的首要任务。现在,我们不会想象将font标签放在HTML中而不是我们的外部CSS文件中。随着时间的推移,我们可能会对脚本产生相同的想法。


1

我认为这取决于你更喜欢哪一个。

微软使用拖放控件,如更新面板,而jQuery是手写的,并且在我的经验中提供了更大的灵活性。

JQuery似乎是目前DOM脚本和AJAX的首选框架,它使JavaScript相关任务更快速、更容易实现。


谢谢您的反馈。我希望它不是主观的,但也许这就是事实。 - Mayo

1
AJAX Toolkit是一個由"遺產問題"引起的產品。 微軟必須支持ASP(X)、Web Forms等技術。 ASP(和JSP)是10多年前概念的實現,即在服務器端創建HTML頁面。整個"互動性"是通過表單提交實現的,並不可避免地需要重新加載頁面。頁面設計只能使用Visual Studio來完成,在實際運用中非常困難。 總之,這不是AJAX。這個世界已經發生了變化。 jQuery代表了AJAX。jQuery是一個用於AJAX客戶端的JavaScript庫。它使用DOM和其他一些HTML+瀏覽器功能。AJAX/jQuery是與服務器無關的:任何Web服務器都可以使用。 AJAX和jQuery意味著完全解耦。 MSFT AjaxToolit與ASP(X)及不可避免地與IIS密切耦合。那是昨天的事情。 另一方面,jQuery強制您採用當今的思維方式。這是一件好事,尤其是如果您是在ASP上成長起來的,您希望/需要前進。 幸運的是,微軟已經意識到它也必須前進,並允許使用ASP.NET MVC + jQuery。這不是100%的AJAX架構,但是邁出了朝正確方向的非常好的一步。 這不是Web Forms,也不是ascx。
建议:永远不要让一个团队开发Web服务器端和Web应用程序客户端。使用AJAX+REST+JSON,让两个解耦的团队开发松散耦合的Web应用程序。
--DBJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接