Welcome to AspAdvice Sign in | Join | Help

Alessandro Gallo

.NET & Beyond
My first Atlas-powered mashup

A couple of days ago I've completed the first release of an Atlas-based mashup that you can find here (and a big "thank you!" goes to Sonu Kapoor and its DotNetSlackers site for hosting it and providing the resources). I've developed it in my spare time, trying to implement in a real application context what I've been learning about the framework. This means that I've developed it mainly to explore the Atlas framework's features and capabilities and to understand if the framework makes easier the development of such web applications. Basically my goal was to explore the provided client-centric and server-centric programming models, using both declarative and imperative code.

On the other hand, I wanted to code a little web application that would involve some stuff that I use everyday. Since I spend hours reading RSS feeds, tagging my resources and since I really like to see stuff displayed on maps, I decided to code a Geotag viewer with a builtin RSS reader :)

Atlas usage
The client-centric programming model is based on using the framework to "upgrade" static HTML to dynamic HTML. This is done by "wrapping" one or a whole set of static HTML elements with some builtin Atlas controls, or custom controls. For example, the mashup's UI is entirely built using the client-centric programming model.
To do this, I've first created the page layout using static HTML (think of it as a "screenshot" of the page), then transformed the panels into sliding panels, the banner into a sliding banner, a DIV into a VirtualEarth map, added popups and visual effects like transparency and so on.

To implement the UI client logic I've used declarative code. The framework provides a declarative coding style that hides Javascript from the user and allows to add the DHTML functionality by writing XML-script code.

The server-centric programming model deals with the concept of server controls provided by the ASP.NET technology. This programming model makes possible, through the use of extenders and markup capabilities, to add client side functionality to ASP.NET server controls, and to transform the traditional ASP.NET's postback model into an asynchronous postback model thanks to the UpdatePanel, an Atlas server control that allows to selectively update only pre-defined regions of the page, by doing a so called "partial postback".

By using the UpdatePanel server control and the great RSSToolkit by Dmitryr, I've built the RSS reader integrated with the mashup. Two UpdatePanels are responsible to update the posts list and the current post detail. All happens in an asnychronous way, without the need to post the whole page back to the server. The client side functionality is totally implemented using declarative code, and this makes possible to build a reader like this in about a hour. What I like about the RSS reader is its feed search engine, that is powered by the "feed" query operator of the MSNSearch service and that I've implemented in a sort of templated drop-down list (I've used a ListView, my Pager control and a couple of bindings to realize it).

Regarding the imperative code, i.e. the pure Javascript, I've used it basically to handle the interaction with web services through the Atlas service proxies, and to build a couple of new components, specifically a ClipAnimation (that I used to realize the sliding panels), an ItemsSlideshow control (yes, ugly names) that handles the collection visualization and a Pager control that I've used to implement client-side pagination (you can see the Pager in action in the collection search panel or the feed search drop-down list).

Since this is a mashup, services play the main role. I decided to use the service APIs provided by Flickr (for the photos), del.icio.us (for the bookmarks), Yahoo and ZeeMaps (for geocoding) and MSNSearch (with the use of the "feed" query operator) to perform feed search. These services are all accessed from server side by using wrapper classes (I've done this because I needed to encapsulate data in complex types), but are all invoked from client side thanks to the Atlas proxy feature.

Finally, it would be great to have your feedback and know your thoughts and suggestions about it. My future posts will address in detail the relevant parts of the code, and I'm going to release the source code in the next days.

Have fun!

Posted: Thursday, May 04, 2006 1:32 AM by Garbin

Comments

Sonu Kapoor said:

You are very welcome Garbin.
# May 4, 2006 7:52 PM

Inventisity said:

Very nicely done Garbin. Just a minor note, it doesnt work for me when viewing with FF.
# May 5, 2006 9:02 AM

Garbin said:

Inventisity, thank you for the feedback, may I know which problems are you experiencing with FF?
Garbin
# May 5, 2006 12:46 PM

bonski said:

hi garbin,

coming soon?
# May 6, 2006 1:26 AM

Garbin said:

bonski, sorry but the server where it's hosted it's being upgraded. The mashup will be online again as soon as possible. Thank you.
Garbin
# May 6, 2006 3:15 AM

Garbin said:

The mashup is back online.
Garbin
# May 7, 2006 4:57 AM

bonski said:

hi garbin,

great mashup, kudos... your blog has been a great resource for me learning Atlas.. and you perfectly demonstrated your expertise on the framework... great job... keep up the great work... maybe you can blog about the mashup application you made...

# May 7, 2006 6:58 AM

Garbin said:

bonski, thank you very much, your feedback is really appreciated.
Garbin
# May 7, 2006 9:53 AM

Sue's little edream said:

Wow, that's so impressive! I can't wait for you to release your source code. see you at forums.asp.net. my nick name is suegooge
# May 11, 2006 3:28 PM

Rama Krishna said:

Garbin! This is great. How much time did it take to build it.
# May 11, 2006 3:50 PM

Garbin said:

Sue: the source code will be relased very soon. In the meanwhile, viewing the page source with the browser will show you all the markup code.

Rama: basically once got the idea I assembled together many of the scenarios that I implemented while experimenting with the framework. I've developed the mashup in my spare time and it took less than three weeks to get it running. Don't know if it's a reasonable time, but compared to the development times for my previous javascript projects... results are that the number of client features increased and development time decreased, this is a great motivation for me to continue using Atlas.
# May 12, 2006 6:03 AM

Simon said:

Did you use the atlas toolkit and extenders to create the great ClipAnimation controls
# May 12, 2006 9:22 AM

Garbin said:

Simon, yes the sliding panels are realized entirely with the Atlas framework: the ClipAnimation control that I've written does almost all the job, while the panels are synched using declarative code.
# May 12, 2006 10:06 AM

overthetop said:

Good job man :) when can we download the source?
# May 14, 2006 4:52 PM

tom said:

source code PLEASE
# May 14, 2006 5:00 PM

Billy said:

When can we have the source code ??
Thanks
# May 16, 2006 4:25 PM

Johnny said:

Can we have the source code please !!!!
# May 19, 2006 9:27 PM

Sue's little edream said:

I will join the crowd to ask for source code again :-) Hope you don't mind. This stuff just too cool to pass out. Thanks a lot in advance for sharing :-)
# June 8, 2006 8:03 AM

Garbin said:

The source code is yet available for download. Just  go to the mashup's welcoming page: http://atlas.dotnetslackers.com and click on Download the Source. Then click on the version you want to download. This is the post where I announced the source code release:
http://aspadvice.com/blogs/garbin/archive/2006/05/25/18089.aspx
Garbin
# June 8, 2006 8:21 AM

Glavs Blog said:

I have been poking around at DotNetSlackers (http://www.dotnetslackers.com/) lately and looking at some...
# June 14, 2006 10:39 PM

Joe Stagner said:

Is there anyplace out to download the code.

Slackers site won't let me register.
# June 21, 2006 9:19 PM

Garbin said:

Joe, this is strange, what kind of problems are you encountering? Also, you can use the contact form at http://dotnetslackers.com/contact.aspx to report your problems. Let me know how it goes.
Garbin
# June 21, 2006 9:28 PM

Gaurang said:

Do you have documentation kinda thing for this source code?
# June 30, 2006 6:06 PM

Garbin said:

Gaurang, there's no specific documentation available regarding the design/architecture of the mashup, but if you are looking for code-related documentation, you could give a look at the Atlas documentation: http://atlas.asp.net/docs/Default.aspx
# July 1, 2006 7:38 AM

Priya said:

The source won't compile as it keeps looking for Microsoft.Web.Atlas and it is no where to be found, do I have to download this separately?

# March 21, 2007 1:46 PM

Garbin said:

Priya, the mashup hasn't be updated to ASP.NET AJAX 1.0. I'll probably do it in near future.

# March 21, 2007 3:42 PM

Frosty said:

Anyone plan on releasing the source code to this app, it's a dead link right now.

# April 17, 2007 10:26 AM

Garbin said:

Frosty, it seems to be working. Btw, the code has been written using an old Atlas CTP. I still have to update it.

# April 18, 2007 1:41 AM
New Comments to this post are disabled