当前位置:  开发笔记 > 编程语言 > 正文

.NET AJAX调用ASMX或ASPX或ASHX?

如何解决《.NETAJAX调用ASMX或ASPX或ASHX?》经验,为你挑选了3个好方法。

使用AJAX从客户端的javascript调用某些业务逻辑的最有效方法是什么?看起来您可以直接从javascript调用aspx上的[WebMethod](在我的情况下,我使用JQuery来帮助)或者您可以直接调用.asmx.哪个电话会产生更少的开销?什么是最佳做法?

另外,[ScriptService]属性对类的作用是什么?我之前从未使用过.aspx [WebMethod]方法,一切似乎都运行正常.

我希望这是一个纯粹客观的问题.提前致谢!



1> Brendan Kowi..:

我认为ScriptService的东西是asp.net中隐藏的宝石.对脚本服务的调用不会回传表单数据+ viewstate,它们是精简,快速的JSON有效负载.

这是最好的部分,ASP.NET3.5的脚本管理器可以为您生成一个JS方法,为您调用并设置所需的任何JS类,可以完成大部分工作.

一个简单的示例,用于获取"Person"的详细信息,假设Person是C#类.

在PersonService.asmx中:

namespace MyProj.Services {
  [System.Web.Script.Services.ScriptService]
  [System.Web.Script.Services.GenerateScriptType(typeof(Person))] 
  public class PersonService : System.Web.Services.WebService
  {
    [WebMethod, ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
    public Person GetPersonDetails(int id)
    { 
       /* return Logic here */
    }
  }
}

在DetailsPage.aspx中


 
  
 

通过使用这样的设置,你甚至不需要JQuery的帮助来调用服务并获得你的C#Person类的JS版本,.net为你做了这一切.从JS使用此服务的一个示例是:

MyProj.Services.PersonService.GetPersonDetails(id, _onDetailsCallbackSuccess, _requestFailed, null);

_onDetailsCallbackSuccess: function(result, userContext, methodName) {
 //all persons properties are now intact and available
 document.getElementById('txtFirstname').value = result.Firtname;
}

无论如何,更值得研究ASP.NET Ajax ScriptService的东西.即使你决定不使用它,这也是一个非常邪恶的功能.

链接

看起来像是使用脚本服务的一个很好的基本示例:http://www.jankoatwarpspeed.com/post/2008/05/14/asp-net-ajax-basics-calling-scriptservices-using-javascript.aspx

ASP.NET Ajax Extender,将Ajax集成到控件中的下一个逻辑步骤.http://weblogs.asp.net/scottgu/archive/2007/08/19/using-asp-net-ajax-control-extenders-in-vs-2008.aspx


@jake:你应该把最有帮助的答案标记为答案.我们在这里得到了很好的答案,而不是快速的打字员.

2> Lou Franco..:

如果您只关心服务器端开销,那么将带有查询字符串的简单GET发送到ASHX可能就是这样.它绝对比.ASPX更好,它将经历你不需要的页面生命周期.

ASMX Web方法的优点在于它基于可以被其他技术轻松调用的标准(支持发现).但是,通过一些文档,您的.ASHX也可以轻松调用.


你可以有10+ ashx页面而不是巨大的switch语句
这不是它的用途..ASHX将不得不破解查询字符串并转移到方法本身.它比ASMX更多的编程工作,但在运行时开销非常低 - 几乎是你在使用ASP.NET时可以获得的最小的开销.

3> Dave Ward..:

你提出问题的方式,我相信你正在考虑ASMX"ScriptService",ASHX HttpHandler和ASP.NET AJAX"PageMethod"(不是实际的ASPX页面)之间的区别.

如果是这种情况,它们都非常相似.出于所有意图和目的,ASP.NET AJAX PageMethods与ASMX ScriptServices完全相同.它们不会创建Page的实例,因此它们不会产生通常与ASPX页面相关的开销.

除非你在谈论使用请求使服务器饱和,否则你可能会发现这三者的性能相当.

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有