我对使用scriptmanager和ajax调用的好处或者使用JQuery来引导调用webmethods感到有点困惑。
有人可以给我一些关于这个问题的提示吗?什么时候用哪个?处理JSON时有什么不同吗?
答案 0 :(得分:3)
我认为MSDN ScriptManager control page在总结功能方面做得很好 -
注册与部分页面更新兼容的脚本。
为了管理依赖项 你的脚本和核心之间 库,您注册的任何脚本 在Microsoft AJAX之后加载 图书馆脚本。
指定是否将发布或调试脚本发送到浏览器。
通过注册Web从脚本访问Web服务方法 使用ScriptManager提供服务 控制。
提供对ASP.NET身份验证,角色和配置文件的访问权限 客户的应用服务 脚本通过注册这些服务 使用ScriptManager控件。
启用ECMAScript(JavaScript)日期的特定于文化的显示, 数字和字符串函数 浏览器。
访问嵌入式脚本文件或for的本地化资源 使用的独立脚本文件 ResourceUICultures的属性 ScriptReference控件。
注册实现IExtenderControl的服务器控件 IScriptControl与之接口 ScriptManager控件使脚本 客户组件和 行为呈现。
基本上,ScriptManager完成了它所说的内容,管理你的脚本而不用太多担心你自己编写JavaScript“胶水”来自己做。
当然,包含ScriptManager控件的开销(可能有些可能很重要),尤其是对脚本资源的额外请求数量以及生成的代理类调用Web服务和页面方法的大小。在开发内部网应用程序时,这可能不是那么重要,因为与开发互联网应用程序相比,带宽和网络速度可能不是一个问题,但重要的是要注意这一点。
如果您对能够替换ScriptManager的所有功能的JavaScript库感到满意,同时重量更轻且完成工作的速度更快,那么这听起来像是不使用ScriptManager的好例子。 / p>
在处理JSON方面,jQuery和ScriptManager都处理得很好。 IIRC,JSON是.NET中的页面方法和Web服务的默认数据类型(虽然有些事情提醒我并非总是如此)。
答案 1 :(得分:2)
WRT Ajax电话?很少。 非常很少。通过jQuery,ASP.NET AJAX框架有一些可能的好处:
语法。该框架允许您使您的Web服务调用看起来像您真正调用一些本地方法并传递它参数:
MyNamespace.MyWebservice.MyMethod('arg1value', 'arg2value', onResult);
请注意框架版本如何知道Web服务方法的参数顺序。
jQuery的.ajax
要求设置管道来调用ASP.NET AJAX Web Service方法。关于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
}
});
用于将args传递给Web服务的JSON 序列化:ASP.NET Ajax框架具有Sys.Serialization.JavaScriptSerializer.serialize
,可以“在幕后”序列化Web服务参数。只有jQuery可能必须包含第三个库,例如json.org的JSON.stringify
1 。这太可以忽略不计了。
硬编码GET和POST请求类型。由于框架为您生成了WebService类定义的JavaScript客户端代理,因此您通常不知道(或关心)客户端中的HTTP请求方法。您只需在Web Service类的ScriptMethod
属性中设置它,然后从客户端调用它。使用jQuery,您必须知道它才能将其作为.ajax
选项传递给type
。
至于非Ajax的好处, @Russ Cam 已经将它们总结为ya。