Atlas Presentation and Samples

4/2/2006 Update: I posted more great Atlas information + demos/samples (including pointers to a cool video I did) here


4/2/2006 Update: You can also find a roadmap for new ASP.NET/Atlas releases we are doing in April here.


I had the chance to present a new talk I created about Atlas (our new ASP.NET Ajax framework) to a few thousand people at the Dutch Microsoft DevDays conference last week.  Based on the feedback I’ve received it was a big hit, with a lot of people telling me that they left with a really good understanding of what we are doing, and how surprisingly easy it was to use (several people left my talk on the first day, downloaded and installed it, and successfully built their first data-driven Ajax application that night).


Click here if you want to download and walkthrough the slides + demos for my talk.


About "Server-Centric" and "Client Centric" Ajax Applications


I split the presentation into two parts. The first part focused on how to build what I call “server centric” Ajax applications – meaning the application and navigation code for the Ajax application still primarily resides on the server (in the case of ASP.NET using VB or C#), and Ajax is used to communicate between the client and server and transfer incremental updates of HTML UI.  The new ASP.NET <atlas:updatepanel> control and other associated Atlas server-side controls make building applications really easy with this approach, and doesn’t require developers to master client-side JavaScript (in fact – you can actually get away without using it at all if you want).  It is really easy for any ASP.NET developer to add nice Ajax support to their existing web applications using this approach (for example: you can typically Ajax enable an existing data-driven page using the ASP.NET DataList + GridView controls in less than 5 minutes).


The second part of my talk then focused on what I call “client centric” Ajax applications – meaning that much of the application and navigation logic runs using JavaScript on the client (which then calls back to the server to retrieve and update data).  This enables even more immersive applications to be built using Atlas (for example: Mashups, Gadgets, Windows side-bar components, etc).  Atlas provides a rich JavaScript library framework to make building these types of experiences much cleaner and easier.  It include a rich networking stack to allow exchanging .NET data-types between browsers and servers, a rich JavaScript library that provides a base class library of useful non-UI components and patterns (for example: the ability to do inheritance in JavaScript, timer classes, string-builder classes, the network classes, etc), and a JavaScript control library framework that enables developers to componentize and encapsulate JavaScript-built behavioral controls to HTML UI (for example: Atlas ships with a client-side ListView control that you can attach to standard HTML <div> elements to provide client-side databinding support against data that you dynamically retrieve from a server).


The Atlas client-side JavaScript library is very powerful and feature-rich.  One really nice thing about it for people who don’t want to write a lot of JavaScript is that it can also be used to build ASP.NET controls to enable much richer server controls that encapsulate this behavior for you, and integrate nicely within existing ASP.NET pages.  We are going to be putting out a Atlas control toolkit + library containing a number of sample controls that show how to-do this in the next few weeks, and hope to spur control developers to start producing a lot of great Atlas-enabled server controls that anyone can use.  Our plan is to make it trivial for anyone to build great ASP.NET web applications that take rich and full advantage of Ajax.


Using the Samples in the Talk


The samples from my talk are best used with Visual Web Developer Express (which is free) or Visual Studio 2005.  Just download this .zip file and open the web-site at the sub-directory root and you are good to go (note: you don’t need to install Atlas – since the project already includes a copy of it). 


I didn’t require the use of a database with these samples – instead I focused on building very small specific samples that clearly illustrated individual technical points.  For a more complete, data-driven, application scenario with Atlas you can check out my Task-List Sample Application & Blog Post that I built using the December CTP drop.


O’Reilly’s Atlas Book


O’Reilly Press also recently published the first Atlas book online. 



It is part of their “rough cuts” series – which is a concept I find really appealing.  Basically with the rough-cuts series you can pay $17.99 to buy and download a .PDF subscription version of the Atlas book, which will then be updated as the technology changes and the book evolves (they’ll send you an email when updates occur and then you can download the new update).  For $38.99 you can buy both the online subscription version as well as get sent the final printed book once it ships in the future when the book is done and the technology stops moving.  This provides a nice way to stay up-to-date with bleeding edge technology, but also not have to worry about your bookshelf becoming obsolete a few months from now.


I bought and read the Atlas Rough-Cuts book on the plane ride back to Seattle.  I found it a good book that helped a lot in learning the basics of the Atlas client-side control framework and base class library (the documentation for both of which is still very scarce).  The current version of the book doesn’t cover the server-centric model yet or the <atlas:updatepanel> control (although this is the easiest part of Atlas to learn – and my samples + slides above should cover most of the basics).  But if you are looking to start understanding the client-centric approach I’d recommend buying a copy and checking it out – it is a fast read that helps provide easy exposure to the technology.  You can learn more about it and order/download it here.


Hope this helps,




P.S. We’ll be releasing a lot more information + samples + document about Atlas at the MIX conference in a week’s time.  Stay tuned for then.


P.P.S. Peter posts some nice pictures and notes from the DevDays event - including one of me looking like I am pleading <g>.  You can check them out here.



  • Hi,

    Is cool


    Ramon Dur&#227;es

  • Hi Scott. I really enjoyed your Atlas talk in Amsterdam. Keep up the good work at Microsoft. Thanks.

  • Thank you very much fantastic examples

  • Excellent Scott!

    The more information I can get my hands on to understand how to use the client-side Atlas features, the better off.

    I'm using the server-side stuff, and it is fantastic - I'd like to expand on it (ie a better listbox control that is client-side Atlas driven)

    Special request: It would really help those new to client side to get as much information as possible. I've developed server-side apps for a long time now - but the client side is a mystery (beyond simple javascript).

  • Hi Scott,

    thanks for mentioning the book :-) You are right regarding the missing book elements; actually, the chapters on this are already done, but did not show up on the O'Reilly website yet. Only the first half of the book is already available online, but I've been told that the rest will follow really soon. Interested readers may want to watch my weblog where I announce when new content is up.


  • INTERESTING .. Mr.Guthrie, how can I have your talks as a video or audio in order to hear your explaination !?



  • I was in Amsterdam for your talk and was amazed at how easy Atlas enables ASP.Net applications to use Ajax technology. Thanks for the really good talk. I'm looking forward to the 'final' product!

  • The best part of that presentation is that the March CTP is coming out in a couple of weeks :)

  • Hi Steve,

    Can you try downloading the .zip again (I just tried it now and it seems to be working fine).

    If that doesn't work, just send me email ( and I can email it to you.

    Hope this helps,


  • I'm sure you get this question often, but do you have a better idea now of when a final release might be ready? My apologies if you've already answered this recently.

  • A quick question about the JAvascript. On slide 47, we have the line:


    The $() function appears to be from the prototype library.

    Is you recommending this library, or has the Altas team cribbed a bit of it for Atlas internal javascript library?

  • Hi Scott

    thx for this, it is nice to use Atlas, looking forward for next version


    PS. I downloaded .zip without any problem

  • Scott, great PPT file. I'm forwarding that to the rest of my dev team!

  • Hi James,

    The $() function is something we added to Atlas as well. It basically is useful short-hand for document.GetElementById(&quot;name&quot;).

    Hope this helps,


  • Hi Mark,

    We are going to be announcing our go-live plan next week at the MIX conference.

    Hope this helps,


  • Hi NZ Web Host,

    Atlas actually provides the same ability to easily wrap existing HTML + server controls with an &lt;atlas:updatepanel&gt; and Ajax enable a site. I'd recommend downloading the slides+samples and playing with them -- since it is a really powerful and easy to use model.

    Hope this helps,


  • Hi Steve,

    There are a couple of ways you could do what you are after -- one would be to just add a regular client-side script handler on mouse-over to trigger the auto-complete.

    Alternatively, you could encapsulate it within a javascript class/control using Atlas. The first approach is the quick and dirty solution (which Atlas fully enables). The second approach provides better re-use and encapsulation (so that it can be used across multiple apps and solutions).

    Hope this helps,


  • Looking forward to getting my hands dirty with some of this new kit...

    alas, I'm getting a &quot;Host not found&quot; for when i try to grab the zip file.

    I'll check back, but wanted to give the heads up.



  • Will Atlas be free?

  • Hi Johnny,

    Yes -- Atlas will be completely free.



  • Hi K,

    A few other people have reported that as well. Just send me email ( and I'll be happy to send you the files directly.



  • Hi Scott,

    As always thanks for the knowledge sharing...awesome stuff!

    Brian Johnston

  • ScottGu, could you possibly get some demos and tutorial videos online, please. BTW, your intro to ASP.NET and VS2005 was superb!

  • Scott,

    Atlas is fantastic! Are there any plans to enable us to use items such as the UpdatePanel from within UserControls. My framework makes extension use of dynamiccally loading user controls at runtime, much like the DotNetNuke framework, and the UpdatePanel does not seem to work in this instance.



  • Hi Floyd,

    Supporting dynamically layed out controls with updatepanel is definitely something we are looking at now. We will have a solution in a future refresh to enable it.


  • Unfortunately, the link to download the slides/demo is not working for me.

    Anyway, I've been following your articles for a long time and I'm waiting to experience the 'Atlas' when it is released.


  • Bobby -- I just tried the link now and it is working for me. If it still isn't working, feel free to send me email and I can send it to you directly.



  • Hi, I tried the link later and it worked. Thanks.

  • Hi Scott Guthrie,

    I like seek the stylesheet the atlas project. The project of site

    You can send to me?

    My e-mail:

    wait for...


  • Really an excellent presentation...

    I am an atlas fan since it is in conception. It looks that developing Atlas is easier and easier. Can we expect the final version to be &lt;@page EnableAtlas=&quot;true&quot;.../&gt; and nothing else?


    Shawn Shi

  • Hi Shawn,

    I'm not sure we will get quite to that. ;-) However, we will have a number of new Atlas Controls coming out later this week that are going to make a lot more Ajax scenarios super easy.

    Hope this helps,


  • The following code works fine.But when i use update panner it does,t work.please help

    ClientScript.RegisterStartupScript(this.GetType(), "focus", scriptname)

Comments have been disabled for this content.