Tuesday, November 07, 2006

A day of ASP.NET AJAX (TechEd Day 1)

On Monday, I've been attending the pre-conference session on ASP.NET AJAX (formerly referred to as ATLAS) brought to us by Wintellect's Jeff Prosise. From what I read before, I thought it was merely some kind of SDK which primary purpose is to allow page updates without a full post-back and heavily relies on web services. How wrong I was…

Only a few years ago, Microsoft was still promoting the server-side aspects of ASP.in contrast to tedious client-side scripting and classic ASP. However, the big challenge since then is that Web-based applications could never compete with the visual richness of desktop applications. With ASP.NET AJAX, Microsoft shows that they've invested a lot in an attempt to get rid of this limitation. It essentially allows us to add a lot of eye-candy to traditional ASP.NET applications without a hassle. Most of the AJAX stuff intends to abstract away the complexity and the vast amount of Javascript code required prior to the introduction of AJAX. And I must say, I'm impressed!

Of course, AJAX itself is not a Microsoft technology, but they've clearly embraced the necessity of powerful client-side logic. Obviously, they are not a big fan of tedious Javascript code (as am I), and you can expect big changes on that side of the fence. In short, ASP.NET AJAX (beta 1) contains (amongst many other things):

  • A very powerful UpdatePanel control that abstracts away the Javascript and server-side code for asynchronously updating parts of a webpage without any flickering. Microsoft itself calls it the crown-jewel of ASP.NET AJAX. You can actually surround a part of an existing ASPX page with this control and voila; it now updates as smooth as possible.
  • An exhaustive set of (Browser-agnostic) extensions for Javascript providing us with an OOP-like development environment with .NET-like classes. This is an important aspect of AJAX, because apparently these extensions forms the foundation for all the other eye-candy.
  • Support for calling ASMX web services from client-side scripts (no WCF support yet).
    Advanced client-side databinding with web services running on the server.
  • XML-Script for declaratively defining client-side layout, appearance and behavior without the need to write one line of Javascript.
  • An extensive control toolkit with 30+ AJAX-enabled controls such TextBoxExtender, CollapsablePanel, and DragPanel. This toolkit includes really useful controls that provide more than just eye-candy.
  • Support for orchestrating complex animations (colors, fading, scaling, moving, sequentially, parallel), and drag-and-drop through any control.
  • Abstraction classes hiding away the browser-specific DOM. For instance, there is a TextBox class that wraps an browser textbox and provides the same events and properties regardless of the actual browser.