Daniel Zeiss, who is the man behind the ComfortASP.NET framework see http://www.comfortasp.de/ has published a very interesting comparison on his web site (http://www.daniel-zeiss.de/AJAXComparison/Results.htm) and his blog (http://www.geekswithblogs.com/danielz).
(Have you noticed that there are many German developers involved in AJAX engines and frameworks?)
I have also implemented the simple sample he uses for the comparison at http://www.mathertel.de/AJAXEngine/S02_AJAXCoreSamples/AJAXComparison.htm.
Here are my annotations and the testing-results that match for his table:
|Versions:||Free, licensed under a BSD style license. (http://www.mathertel.de/License.aspx)|
|Supported ASP.NET Versions :||2.0|
|Update granularity:||Controls and direct Data|
|Update granularity direct AJAX :||yes|
|Base Concepts:||Using the standard WebServices, SOAP and WSDL and AJAX Action description for the client.|
|Browser Support :||IE, Mozilla/Firefox|
|No manual deployment of separate script required:||yes|
|HttpHander:||yes, using the standard SOAP stack|
|HttpModule:||yes, using the standard SOAP stack|
|Integration by page derivation:||no|
|Framework specific feature configuration in web.config:||no|
|minimal required code changes to the original Example:||5 (onclick handler and the AJAX action)|
|Controls or declaration possibilities for additional AJAX features:||yes|
|downgrade to pure ASP.NET:||no|
|Turn AJAX on/off at design time:||n/a|
|Turn AJAX on/off at runtime time:||n/a|
|ASP.NET ViewState in AJAX postback:||n/a|
|Visual Studio Designer Support:||yes|
|Update Inline HTML:||n/a|
|ASP.NET Event Handlers are called in AJAX postback:||n/a|
|Correct handling of Image Buttons (with x/y coordinates):||n/a|
|Execute Scripts included in content that is updated via AJAX:||n/a|
|Entire traffic for the "Hello World" example [Bytes] (pure ASP.NET without framework: 3.470 bytes) Sources for the "Hello World" Example see below.:||1882|
|HTTP Compression of AJAX Response:||yes, via standard gzip compression|
|Automatically transfer only changes of HTML content:||n/a|
|Save ViewState in server Session:||n/a|
|Trigger AJAX postback via client events (without custom client script):||yes, by using the controls|
|Trigger AJAX postback via timer (without custom client script):||yes, by using the controls|
|Queue AJAX postbacks and wait for response when a previous request is in progress:||yes|
|Automatic fallback to postback via IFRAME if XmlHttpRequest is turned off:||n/a|
|Set Client Focus to input element (e.g. TextBox) in ASP1.1:||the focus is never changed|
|Scroll to a (with designer) defined position in the web browser after AJAX response:||n/a|
|Optional features to prevent Form input while hidden postback is in progress:||all requests are queued to prevent locking|
|Update multiple contents parts (e.g. Panels) with a single AJAX request/callback:||n/a|
|Control content update at runtine (e.g. Update only 1 AJAX Panel, while 2 are existing):||n/a|
Traffic in bytes for initial GET response: 1154 + 728 = 1882
Traffic in bytes for referenced framework scripts (0 bytes of no script was referenced): 12000 (21876, see below)
Traffic in bytes for the POST request after button "Show DateTime" was clicked 220
Traffic in bytes for the POST response after button "Show DateTime" was clicked: 360
Total traffic in bytes for the "Hello World" example: 14462 (24338, see below)
You can see the actual transferred http messages in AJAXComparison.log.txt.
The Aspects of AJAX Engine is consuming less bytes on the network that most of the other machines in this comparison.
The size of the transferred bytes is indeed a very interesting aspect. I have not spent any time in reducing this value and I also have no chance to reduce the bytes of a standard SOAP call without leaving this standard and adding the need to implement server specific code.
The initial transfer of the page is smaller than the original ASP.NET version mainly because I do not need any ASP.NET functionality for deploying a working page.
The biggest part of the Engine is the ajax.js file with 21876 bytes because it contains a lot of comments and additional information. I could reduce this page in a view minutes by stripping off all the comments and blank lines down to 12000 bytes and it can be reduced even more. That�s the size that should be used in the comparison because the other frameworks also only send optimized include files.
This page is part of the http://www.mathertel.de/AJAXEngine/ project. For updates and discussions see The AJAX Engine blog.