One of the PUMs (Product Unit Manager) in my team, Shanku Niyogi, is an AJAX guru and recently wrote this internally to describe the advantages of Microsoft AJAX.
I thought it was a great write up and I’m reprinting it here with his permission.
There are a wide variety of good AJAX libraries available for ASP.NET today. This shows the demand for AJAX capabilities for the ASP.NET platform.
With ASP.NET AJAX, Microsoft is delivering a high-quality AJAX framework that will be fully integrated into ASP.NET and Visual Studio. We believe that delivering integrated support for AJAX in our platform will have several benefits for ASP.NET developers:
– ASP.NET AJAX will be a completely free release, and will be integrated into the free .NET Framework release in future versions.
– The release version of ASP.NET AJAX, due out around the end of the year, will be fully supported through Microsoft Product Support for the standard (7+3) period. This means that if you have any issues with this product in development or deployment, you can call up Microsoft to get help at anytime. It also means that we will issue hotfixes and service packs.
– ASP.NET AJAX includes integrated authoring support in Visual Studio 2005, and will include even better support in the next version of Visual Studio.
ASP.NET AJAX is also more than just a basic library for incremental rendering. ASP.NET AJAX also provides a rich end-to-end AJAX library that includes a full networking and web services stack, a component model with support for rich interactive behaviors, support for localization and globalization, and other capabilities required for rich web client programming. The client script library for ASP.NET AJAX is available in full source form (debug and release versions), and can be freely modified.
On top of the core package, you can use the ASP.NET AJAX Control Toolkit, which adds a rich library of controls for AJAX development. The Control Toolkit is free and available with a source license that allows full modification and redistribution.
From a pure performance perspective, there are several issues with the assessment that are either inaccurate or that we have improved in the Beta. For reference, see the attached project.
1. As Bertrand has mentioned in this comments, doing a pure measurement of script size on a small sample is misleading. The scripts are loaded only once, and then cached on the client. This means that over any real world web site, the cost of downloading the scripts are amortized over the entire site.
2. As Christophe mentioned, the Atlas tests Daniel ran were on the debug version of scripts. In CTP versions of Atlas, this was the default. In the ASP.NET AJAX Beta, scripts are release mode (smaller) and compressed by default. The compressed results are around 14K, which is around the size of an image on the page.
3. We have also done some significant work in reducing packet size for UpdatePanel. In the attached version of the project (which implements the same sample in Daniel’s blog), the packet size of the update is 485 bytes. The UpdatePanel architecture includes features like triggers and conditional updates that allow you to finely customize the update characteristics of your page.
4. ASP.NET AJAX also includes a very rich client-side framework, so that you can build client-centric applications. This goes well beyond basic direct AJAX, with access to server-based web services, a rich client component model, support for localization, and many other features. The client-centric framework requires an approximately 9K subset of the ASP.NET AJAX scripts. A version of the sample written with client-centric techniques (also in the attached project) uses a packet size of approximately 20-30 bytes (depending on the length of the date string).
Some other points in the study that are inaccurate or outdated:
1. In terms of browser support, ASP.NET AJAX supports IE, Firefox/Mozilla, and Safari today, and will support Opera by release. It will also support the next version of IE Mobile.
2. In addition to ASP.NET, ASP.NET AJAX supports other servers such as PHP – so if you have a mixed deployment, you can take advantage of ASP.NET AJAX with these servers as well.
3. The ASP.NET UpdatePanel can automatically detect downlevel browsers that are not AJAX capable, and turns off incremental rendering for the page. This allows you to easily build AJAX-enabled pages that still work on non-AJAX browsers.