ASP.NET AJAX is a popular topic these days, from web service calls to server/client components.  There are many facets to this framework, and this book covers the client-side components.  The layout of the book is pretty consistent.  It delves into the client code, illustrating what the underlying architecture code looks like and operates.

This book was a great instrument into my learning of how to develop client-side components using the new constructs of the ASP.NET AJAX framework.  The first six chapters discuss the add-ons that come with the ASP.NET AJAX framework.  ASP.NET AJAX provides a lot of add-ons to the existing JavaScript objects (like Array, String, etc.).  It extends the concepts available by adding a helper class for performing common tasks (getting or setting the location, getting the bounds of an HTML element, getting or setting the visibility, etc.).  The other concepts added are reflection of ASP.NET AJAX components (which makes use of the descriptor block that a component implements).  Two other common constructs are events/handlers (including event bubbling) and support for custom exception types (using the Error object).

One of the cornerstones to the ASP.NET AJAX development is the add-on ways to developing ASP.NET AJAX classes, with full support for interfaces, enumerations, and most of the existing class constructs in ASP.NET (defining events, properties, constructors, and methods).  Not only does ASP.NET AJAX support classes, it supports inheritance and polymorphism, which following chapters talk about the Sys.Component base class for components, which Sys.UI.Control and Sys.UI.Behavior (control/extender client base classes) inherit from.

The author spends a good time talking about how to perform web service calls through the Sys.Net.WebServiceProxy and accompanying classes.  I think there were about six chapters to this effect, which provides a great deal of coverage.  These chapters discuss the REST approach to web services and building proxies (a way to call an external web services since ASP.NET AJAX can only call a web service at the local location (a web service cannot directly communicate with an external web server.

I found the chapter on developing a custom extender control very useful; however I was disappointed from the minimal server code in these chapters (and some other ones as well); I would have loved to have seen the server-side equivalent code in example form.  The benefit to these chapters is that it covers the ASP.NET AJAX way, along with the AJAX control toolkit client code.  Some of the later chapters cover more advanced topics like working with the UpdatePanel in special situations, and using the PageRequestManager.

The drawback to this book is that the author writes in a matter-of-fact way.  He doesn’t necessarily explain why you would need to use an object or call a method in a specified way, but simply put forth that this is how it’s done.  This can turn off some readers (it has by some people’s review).  I must admit that some sections of the book I skipped because I didn’t understand the why of how something was done, and turned to other sources.  No book is perfect, however.

This book was the first source for learning ASP.NET AJAX, and it has given me a great deal of knowledge into ASP.NET AJAX and how it works.  In order to know how anything works requires detailed knowledge of the underlying code, which this book often uses.  It is a great resource to turn to when working with ASP.NET AJAX .