Architecting and using ASP.NET "Atlas"

Looking back at the Atlas coverage at Mix06 I very much enjoyed the the second day on which I attended two sessions on "Atlas".

In the first session - "Lessons from the trenches - Engineering great AJAX experiences" - Scott Isaacs, architect on the Windows Live Frameworks, started from the AJAX development pattern and highlighted how such a simple pattern is a good solution for improving form interactions and for building rich experiences. As an example for pointing out the difference of User Experience when requesting a change in the page Scott used the Google homepage and Windows Live. Where Google does a full page reload, Windows Live only refreshes the part requested to reload. The typical flow starts with an asynchronously request data from the server, process the result and update the page.

However it's clear that we need more than just a good pattern to extend the reach of your web application. You can extend the reach of the app by integrating it with the rest of the web. This can be achieved by using mash-ups. Mash-ups are web applications that consumes ("remixes") content and experience from different sources and aggregates them to create a new application. This is basically the starting point for rethinking the web: building a application that only consists of mash-ups. In this case a mash-up has become an architectural pattern, leveraging the current investments and - additionally - providing default and customizable experiences.

All of the above describes exactly the approach when architecting Windows Live. So are the Windows Live menu, the search box, Live mail, etc. all different gadgets based on the AJAX pattern. At the core all components are gadgets. This also means that in the future third-party developers can extend other web experiences (Eg: MSN Spaces), host Windows Live Gadgets on their own site and even extend Windows with Gadgets via the Sidebar in Windows Vista.

In the second part of the presentation Scott went through a number of lessons the Windows Live team learned. He discussed:

  • building very rich interactive applications

  • how do we evolve the AJAX pattern to enable integrated, consistent experiences? In this section Scott described how the Windows Live Framework enables:

    • Client-Side Page Composition
    • Modern Development Patterns
    • Component Model
    • Network Management
    • Resource Deployment
    • Proxying, Cachinh and Scalability
    • Themeing and consistent Experience
    • Cross-Browser equalizer
    • Security
  • how do we work around the limitations of our host environment (the browser)?

So for building web applications using AJAX-style technologies it all starts with putting "Engineering" into your client, flesh out the intended scenarios and application flow, and avoid (or minimize) breaking the Web Model. More of this architectural guidance and development experiences coming from Microsoft and more particular the Windows Live architects can be expected in the coming months. All the lessons they learned will also be gathered in the documentation of Atlas.

The latest Atlas CTP can be downloaded at https://atlas.asp.net.

The second session on Atlas discussed how to design a better User Experience With AJAX And ATLAS. Starting from UX design guidelines like:

  • Instant Feedback
  • Predict User Actions
  • Preserve User State
  • Share User State
  • Create Controls And APIs
  • Separate Presentation and Implementation

Rick Spencer explained and showed how all of the above requirements were taken into account when building Windows Live. Brad Abrams - Mr. Framework Design Guidelines - implemented all of these principles in a simple web site (demo). For developing the web site he used Visual Web Developer 2005 Express Edition and the March CTP of Atlas. I appreciated this session a lot because it very well showed the power and productivity one can achieve using ASP.NET 2.0 and Atlas for developing AJAX-style applications.

As you can see all sessions touched on the fact that the user experience is one of the key requirements for developing a successful application. The overall UX of the end-user has become the critical factor for measuring the success of an application, no matter you're talking about windows or web-based apps. Joe Stegman did a good job explaining why and how a great UX can be achieved on a web browser platform by using Windows Presentation Foundation Everywhere ("WPF/E"). WPF/E is a cross-platform subset of WPF and is all focused around interactive content. With WPF/E it is possible to mix UI, text and media using the XAML declarative programming model. Additionally WPF/E will run on the following web platforms:

  • Windows XP, Windows 2000, Windows Server 2003, Vista
  • Mac OS X 10
  • Considering Win9X, Linux and Solaris

and in the browsers:

  • Internet Explorer 5.5+
  • Mozilla 1+,Firefox 1+
  • Opera 7+
  • Safari 1+

When talking about this subset of WPF to designers and developers most of them were pretty excited about this technology that lets you combine XAML, C#/VB.NET and javascript for creating a compelling UI. Behind the scenes "WPF/E" hosts an x-platform .NET runtime. Code (C#/VB.NET) is compiled into an intermediate language (IL) which is run in a secure and “managed” environment. "WPF/E" is also capable to load external packages containing IL and XAML. A customer preview of "WPF/E" will be available in Q3 2006 and Web release in the first half of 2007.

tag: Mix06