.NET AJAX Calls to ASMX or ASPX or ASHX? .NET AJAX Calls to ASMX or ASPX or ASHX? ajax ajax

.NET AJAX Calls to ASMX or ASPX or ASHX?


The ScriptService stuff in my opinion is a hidden gem in asp.net. Calls to the script service do not passback form data + viewstate, they are lean, fast JSON payloads.

Heres the best part, ASP.NET3.5's scriptmanager can do most of the work for you regarding generating a JS method for you to call and also setting up any JS classes needed.

A simple example for fetching details for a "Person", assuming Person is a C# class.

In 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 */    }  }}

In DetailsPage.aspx

<asp:ScriptManager ID="ScriptManager1" runat="server"> <Services>  <asp:ServiceReference Path="~/Services/PersonService.asmx" /> </Services></asp:ScriptManager>

By using a setup like this, you won't even need the help of JQuery to call the service and get back a JS version of your C# Person class, .net does that all for you.An example of using this service from JS would be:

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;}

Anyway, it would be more then worth looking into the ASP.NET Ajax ScriptService stuff. Even if you decide not to use it this time it's a pretty wicked feature.

Links


If server-side overhead is all you care about, then sending a simple GET with a query string to an ASHX would probably be it. It's definitely preferable to an .ASPX, which is going to go through a page life-cycle that you don't need.

The advantage of an ASMX web method is that it's built on a standard that can be called by other technologies easily (supports discovery). With some documentation, your .ASHX will be just as easy to call, though.


The way you worded your question, I believe you're considering the difference between an ASMX "ScriptService", an ASHX HttpHandler, and an ASP.NET AJAX "PageMethod" (not an actual ASPX Page).

If this is the case, they are all very similar. The ASP.NET AJAX PageMethods are, for all intents and purposes, identical to ASMX ScriptServices. They don't create an instance of the Page, so they don't incur the overhead normally associated with ASPX pages.

Unless you're talking about saturating the server with requests, you'll probably find that all three perform comparably.