Related Articles
Complete freedom in creating the user experience can be a double-edged sword, but a little bit of artistry can transform an application's usability. Howard Dierking MSDN Magazine August 2008 ... Read more!
Andrew Dai of the CLR team discusses the Transparency model, which creates a strong isolation boundary between privileged and unprivileged code for Silverlight apps. Andrew Dai MSDN Magazine October 2008 ... Read more!
Find out how to integrate SharePoint and Silverlight by creating a Silverlight media player and deploying it as a SharePoint Web Part. Steve Fox and Paul Stubbs MSDN Magazine November 2008 ... Read more!
ADO.NET Data Services provide Web-accessible endpoints that allow you to filter, sort, shape, and page data without having to build that functionality yourself. Shawn Wildermuth MSDN Magazine September 2008 ... Read more!
Download Visual Round-trip Analyzer (VRTA) to uncover the root of your Web page loading problems and identify these 12 common ailments. Jim Pierson MSDN Magazine November 2008 ... Read more!
Also by this Author
As a parent of a young child, I take a lot of pictures—many more than anyone would ever be interested in seeing. Well, anyone except my mother. This is her first grandchild and the one or two pictures I send to her each week only brush the surface of her grandmotherly needs. Duncan Mackenzie MSDN Magazine November 2004 ... 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!
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!
The My Namespace is best described as a speed-dial for the .NET Framework. It provides an intuitive navigation hierarchy that exposes existing .NET functionality through easily understood root objects. Here Duncan Mackenzie explains it all. Duncan Mackenzie MSDN Magazine Visual Studio 2005 Guided Tour 2006 ... Read more!
Duncan Mackenzie MSDN Magazine July 2004 ... Read more!
Popular Articles
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!
C# 2.0 introduces a wealth of exiting new features, such as generics, iterators, partial classes and anonymous methods. While generics are the most talked-about feature especially for former classic C++ developers, the rest of the new features are important additions to your .NET development arsenal, enhancing power and improving overall productivity. This article is dedicated to all the new C# 2.0 capabilities besides generics to give you a good overall picture of the upcoming features. Juval Lowy MSDN ...
Read more!
Chris Tavares explains how the ASP.NET MVC Framework's Model View Controller pattern helps you build flexible, easily tested Web applications. Chris Tavares MSDN Magazine March 2008 ... Read more!
Here are some design patterns that allow you to achieve higher cohesion and looser coupling for more flexible, reusable applications. Jeremy Miller MSDN Magazine October 2008 ... Read more!
Writing a Web application with ASP.NET is unbelievably easy. So many developers don't take the time to structure their applications for great performance. In this article, the author presents 10 tips for writing high-performance Web apps. The discussion is not limited to ASP.NET applications because they are just one subset of Web applications. Rob Howard MSDN Magazine January 2005 ... Read more!
Our Blog
Windows Workflow Foundation (WF) imposes some restrictions on the developer authoring programs that target it. But in return WF offers a powerful, flexible, and extensible set of runtime services such as support for long-running code. In the December 2008 issue of MSDN Magazine, Josh Lane provides some best practices to consider ...
Read more!
Choosing the best alternative is a common task in software development and testing. A group of beta users may need to choose the best user interface from a set of prototypes. Or imagine the members of an open source project voting for a policy. In the November 2008 issue of MSDN Magazine, Dr. James McCaffrey describes five of the ...
Read more!
A team project is simply a bucket that stores and partitions all of the artifacts you track and use within a Team Foundation Server (TFS) project. In the December 2008 issue of MSDN Magazine, Brian A. Randell explains how you can use and customize the MSF Agile and MFS CMMI process templates to get the most out of them for your ...
Read more!
With the releases of LINQ to SQL and the ADO.NET Entity Framework, developers now have two products from Microsoft designed to tie together relational data and object-oriented programming. In the December 2008 issue of MSDN Magazine, Anthony Sneed provides a roadmap to these technologies and demonstrates how you can create ...
Read more!
So many factors can affect the performance of a Web page—the distance between server and client, the size of the elements on the page, how the browser loads these elements, available bandwidth. Finding those bottlenecks and identifying the culprits is no easy task. In the November 2008 issue of MSDN Magazine, Jim Pierson introduces ...
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.
|
|