The XMLHttpRequest is at the heart of ASP.NET AJAX development. This object is exposed as an ActiveX control in Internet Explorer and as part of the DOM in Firefox. The XMLHttpRequest object allows you to communicate with the server to do partial page updates and invoke web services.

Although the XMLHttpRequest object is limited to making calls back to the originating domain, proxy classes for retrieving the object and the use of embedded IFrames that talk to third party services allow you to build mashup applications that aggregate remote applications and service providers.

JSON object notation provides a lightweight human-readable format for serializing objects between server and client. ASP.NET AJAX makes use of the JSON format to provide easier interoperability between .NET on the server and JavaScript on the client. You can serialize between .NET objects and JavaScript objects using the System.Web.Script.Serialization.JavaScriptSerializer type on the server and the Sys.Serialization.JavaScriptSerializer object in the browser.

In addition to supporting seamless translation of compatible types between client and server, ASP.NET AJAX provides further extensibility by allowing you to write custom type converters. Any arbitrary type can be shaped to a JavaScript object through the use of a custom converter.

The ASP.NET AJAX Networking stack is central to leveraging asynchronous communications used to make more responsive and interactive web applications. ASP.NET AJAX leverages the XMLHttpRequest object, JSON object notation, and the object-oriented approach of the Microsoft AJAX Library to make AJAX development easier.