Click to Rate and Give Feedback
Related Articles

As a Web platform, Silverlight should be fast. Don’t keep your users waiting by not heeding these performance tips.

Jeff Prosise

MSDN Magazine March 2009

...

Read more!

ADO.NET Data Services and Silverlight make a powerful combination, but to make them work well together, there are a few things you need to understand. Here, John Papa explains.

John Papa

MSDN Magazine April 2009

...

Read more!

This month we examine forms in the context of AJAX applications and look at various approaches to implementing features such as auto-saving, just-in-time validation, and submission throttling.

Dino Esposito

MSDN Magazine June 2009

...

Read more!

See how to get the most out of isolated storage in Silverlight to keep your applications safe.

Justin Van Patten

MSDN Magazine March 2009

...

Read more!

The combination of the ASP.NET Chart Control and the data querying power of LINQ lets you build flexible charts. Learn how here.

K. Scott Allen

MSDN Magazine March 2009

...

Read more!

Also by this Author

The next version of Visual Basic, Visual Basic 2005, will include some powerful new features. One of the most interesting is the My language extensions: My.Application, My.Computer, My.Forms, My.Resources, My.Settings, My.User, and My.WebServices. The My language extensions take the idea of helper functions to a whole new level because they include so much functionality out of the box. Called "a speed-dial for the .NET Framework" by the author, the My extensions are a feature you won't want to overlook.

Duncan Mackenzie

MSDN ...

Read more!

In many situations, accurately estimating the length of a certain process (copying a large file, loading data from a server, retrieving files from the Internet) would be both difficult and inefficient.

Duncan Mackenzie

MSDN Magazine October 2004

...

Read more!

I have to admit it; most of my Windows® Forms controls are an attempt to copy something that already exists. In my October 2004 column I showed you how to create a progress bar that mimicked the one shown during the Windows XP setup routine, and this month I'm at it again.

Duncan Mackenzie

MSDN Magazine January 2005

...

Read more!

Hansel and Gretel had the right idea when "they followed the pebbles that glistened there like newly minted coins, showing them the way. " The deeper you get into the forest or into your data, the more likely you are going to need help to find your way back out again.

Duncan Mackenzie

MSDN Magazine July 2005

...

Read more!

Many applications need to store user-specific settings to be persisted between sessions. But how do you go about saving and restoring these settings in your Microsoft® . NET Framework-based application? It's not all that easy to find the correct answer.

Duncan Mackenzie

MSDN Magazine April 2005

...

Read more!

Popular Articles

James Avery does it again with his popular list of developer tools. This time he covers the best Visual Studio add-ins available today that you can download for free.

James Avery

MSDN Magazine December 2005

...

Read more!

The MVP pattern helps you separate your logic and keep your UI layer free of clutter. This month learn how.

Jean-Paul Boodhoo

MSDN Magazine August 2006

...

Read more!

Here we present techniques for programmatic and declarative data binding and display with Windows Presentation Foundation.

Josh Smith

MSDN Magazine July 2008

...

Read more!

Paul DiLascia

MSDN Magazine August 2002

...

Read more!

Kenny Kerr sings the praises of the new Visual C++ 2008 Feature Pack, which brings modern conveniences to Visual C++.

Kenny Kerr

MSDN Magazine May 2008

...

Read more!

{End Bracket}
And Along Came 10...
Duncan Mackenzie


If you are a developer focused on Microsoft products, you've probably been to Channel 9, where you can chat with fellow developers and watch videos that take you behind the scenes at Microsoft. Well, not content to offer just one massive online video project, the team behind Channel 9 decided to build a similar site targeted at the technology enthusiast who isn't necessarily a programmer. The new site, on10.net, covers a wide variety of topics, from the latest in medical technology to the work that goes into developing an Xbox 360™ game, all with a focus on how things work.
When we started this project in January 2006, we had only three programmers and approximately five weeks to get the site up and running. Our first big architectural decision was that, instead of building on top of an existing code base such as Channel 9 or Community Server, we would build the site from scratch. We had a very clear idea of the look and functionality we wanted to have on the site, and one of the essential features was the ability to let users comment on videos while watching them. This meant that we couldn't require postbacks to log in, to comment, or to page through comments, all of which pointed us at an AJAX implementation.With an AJAX system, info is sent back and forth from the browser through Web requests initiated from a client-side script, allowing asynchronous updating of page content without necessitating a full page refresh. One of the key requirements of an AJAX system, though, is a fairly complete Web service layer, and that was something that none of our current systems offered. As a result, instead of retrofitting a service-style architecture on top of an existing code base, we built a simple blog/forum engine, implementing only those features that were critical to the site.
We had another reason for treating on10.net as a completely new system: we were after a minimalist design and didn't want anything in the code base that wasn't part of our intended feature set. We identified a handful of key elements: Entries, Comments, Tags, and Media files. Every type of posted information would be an Entry, thus putting comments, threads, forum posts, and blog posts all into a single table and object. Tags were added as a list of IDs and names, along with the concept of Tag Groups, allowing us to classify a tag as "Content" or "Location" or even "Appearance." Media files were handled through associating a set of links with each entry, with the link describing the type of file and a URL.
Another reason to start fresh was our desire to make the site as compliant as possible with the current crop of Web standards. Producing valid XHTML output was one goal, as was making sure the site and the videos worked in as many browsers (and on as many platforms) as possible. In order to reach the Apple iPod and Sony PSP audience, we output our content in both Windows Media® and MPEG4 formats, which may be a first for a Microsoft-run Web site. We use the Windows® Media player when running inside Internet Explorer®, playing back the WMV video file, but switch to the QuickTime embedded player and a MP4 file when running inside any other browser. Being a blog, we also needed to properly support RSS along with Pingbacks and Trackbacks and some features specific to a video blog such as special iTunes extensions.
We tried to build on top of existing technology wherever possible. For instance, we took advantage of ASP.NET 2.0 for all the required authentication plumbing, including the membership tracking of Users, Roles, and Profiles, allowing us to avoid writing much of that code. All of the underlying page generation is handled through the use of the Virtual Path Provider, another new feature in ASP.NET 2.0. We are also using the Microsoft® ASP.NET "Atlas" framework primarily to provide a way to call our Web services from client-side JavaScript and handle moving our data around as easy-to-use objects. We also utilized other services such as MapPoint® and Virtual Earth™ for mapping and plotting location coordinates.
All in all, there are quite a few requirements to put up a working blog, but we ended up with a great foundation on which to build new features as on10.net evolves and as we move Channel 9's massive body of content onto this new code base. In addition to on10.net and Channel 9, the team has also built a smaller single-person blog engine that we have currently deployed to our personal sites (see duncanmackenzie.net as an example). Once we have worked out the kinks in this code base, code-named "Oxite," we'll be shipping that code out (in C# and the .NET Framework 2.0). Check out Welcome to 10 for more information on our team and for links to two videos where we describe the system in juicy geeky detail.

Duncan Mackenzie is a developer for on10.net and Channel 9. He can be reached through his personal site.

Page view tracker