【问题标题】:What are scriptmanager benefits over direct jquery ajax calls?与直接 jquery ajax 调用相比,scriptmanager 有什么好处?
【发布时间】:2010-12-22 14:58:10
【问题描述】:

我对使用带有ajax调用的scriptmanager或使用JQuery直接调用webmethods的好处或conc有点困惑。

有人可以就这个问题给我一些提示吗?什么时候用哪个?处理 JSON 有什么不同吗?

【问题讨论】:

    标签: asp.net javascript jquery ajax json


    【解决方案1】:

    我认为MSDN ScriptManager control page 很好地总结了这些功能 -

    • 注册与部分页面更新兼容的脚本。

    • 为了管理依赖 在你的脚本和核心之间 库,您注册的任何脚本 在 Microsoft AJAX 之后加载 库脚本。

    • 指定是否将发布或调试脚本发送到浏览器。

    • 通过注册 Web 从脚本提供对 Web 服务方法的访问 使用 ScriptManager 服务 控制。

    • 提供对 ASP.NET 身份验证、角色和配置文件的访问权限 来自客户端的应用程序服务 通过注册这些服务来编写脚本 使用 ScriptManager 控件。

    • 启用 ECMAScript (JavaScript) 日期的文化特定显示, 数字和字符串函数 浏览器。

    • 访问嵌入脚本文件的本地化资源或 使用独立的脚本文件 ResourceUICultures 的属性 ScriptReference 控件。

    • 注册实现 IExtenderControl 或 IScriptControl 与 ScriptManager 控制使脚本 客户端组件所需的和 行为被渲染。

    基本上,ScriptManager 会按照它说的去做,管理您的脚本,而无需您过多担心自己编写 JavaScript“胶水”来完成它。

    当然,包含 ScriptManager 控件会产生(有些人可能会说很大)开销,尤其是对脚本资源的额外请求数量以及生成的用于调用 Web 服务和页面方法的代理类的大小。与开发 Internet 应用程序相比,在开发带宽和网络速度可能不是问题的 Intranet 应用程序时,这可能不是那么重要,但要注意这一点很重要。

    如果您对能够替换 ScriptManager 的所有功能同时重量更轻且完成工作速度更快的 JavaScript 库感到满意,那么这听起来是一个不使用 ScriptManager 的好案例。

    在处理 JSON 方面,jQuery 和 ScriptManager 都处理得很好。 IIRC,JSON 是 .NET 中页面方法和 Web 服务的默认数据类型(尽管有些事情提醒我并非总是如此)。

    【讨论】:

      【解决方案2】:

      WRT Ajax 调用?很少。 非常非常少。与 jQuery 相比,ASP.NET AJAX 框架有一些可能的好处:

      1. 语法。该框架允许您使您的 Web 服务调用看起来像您真的在调用某个本地方法并为其传递参数:

        MyNamespace.MyWebservice.MyMethod('arg1value', 'arg2value', onResult);
        

        注意框架版本如何知道 Web 服务方法的参数顺序。

        jQuery 的.ajax 需要设置管道以调用 ASP.NET AJAX Web 服务方法。它是最小的,关于fairly 的博客。 well:

        $.ajax({
          type: "GET",
          url: "MyWebservice.asmx/MyMethod",
          data: '{"arg1":"arg1value","arg2":"arg2value"}',
          contentType: "application/json; charset=utf-8",
          dataType: "json",
          success: function(data) {
            onResult(data.d) // ASP.NET returns payload in `".d"` property
          }
        });
        
      2. JSON 序列化 用于将 args 传递给 Web 服务:ASP.NET Ajax 框架具有 Sys.Serialization.JavaScriptSerializer.serialize,它负责“在幕后”序列化 Web 服务参数的工作。只有 jQuery 可能必须包含第三个库,例如 json.org 的 JSON.stringify1。这是可以忽略不计的。

      3. 硬编码 GET 和 POST 请求类型。由于框架为您从 WebService 类定义中生成了一个 JavaScript 客户端代理,因此您通常不知道(或关心)客户端中的 HTTP 请求方法是什么。您只需在 Web 服务类的 ScriptMethod 属性中设置它并从客户端调用它。对于 jQuery,您必须知道它才能将其作为 type 选项传递给 .ajax

      至于非 Ajax 的好处,@Russ Cam 已经为你总结了。


      1已经内置于FF 3.1IE8

      【讨论】:

      • 我没有将所有 ASP.NET AJAX 框架与 jquery 进行比较,但您的回答很有帮助,谢谢
      • @Amr:我没有将整个框架与 jQuery 进行比较。只是 AJAX 部分。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-01-01
      • 2018-12-22
      • 2014-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-09
      相关资源
      最近更新 更多