Two years I developed, for the company I worked for in Milano, a video news website that runs inside the Windows Media Center, in the Italian spotlight section.

The site is an Hosted HTML Application: a normal HTML page that can interact with its host (the mediacenter process, not IE) via specific JavaScript API.

Today I was listening to the last episode of Hanselminutes about development on the Media Center for Vista, and I found out that the new version of the platform adds a new way of developing application on the Media Center.

The old way (XP/MCE)

With Media Center Edition 2005 you only had 2 different way of extending the MCE:

  • Hosted HTML Applications: remote DHTML applications built in JavaScript and HTML, hosted on a web server.
  • Media Center add-in: local applications, built using the full .NET library plus some features added by the MCE API.

The new way (Vista)

Now, with the Media Center bundled with some version of Vista, you have 3 ways of doing it:

MCML vs Hosted HTML

But what are the things you can do with MCML (MediaCenter Markup Language) applications that you couldn't do with Hosted HTML applications?

On the MSDN site there is a grid with the differences between the 3 new way to build applications: Choosing a Technology, but let's review them in a bit more detail.

First of all there is a compatibility notice: MCML runs only on Vista, so if you want your application to run on MCE2005, you are stuck with Hosted HTML or Add-in.

But moving on with the compatibility stuff... MCML doesn't run on a separate layer, but inside the same renderer of the main application: that means that the end user won't notice a drastic change of UI going from the main menu to a 3rd party application, so the user doesn't have to learn or understand another type of interaction or UI elements.

And from a developer stand point that means that:

  • if you add a button, the button has the same look&feel of all MC buttons, you don't have to style them with CSS and JS
  • navigation is done "auto-magically": if the user press the left arrow on the remote, the focus goes to the next button on the left, while with the Hosted HTML you had to intercept the "keypress" event, and write some navigation logic to understand where the next highlighted button should have been
  • you can overlay some graphics on a playing video, while previously it was not possible

Another structural change is that the MCML is build for remoteness. Probably 80% of the MediaCenter users use it on a remote device, being it an XBox360, or any other MediaCenter Extender: they have the main desktop in a room, but they watch movies, TV sitting on a couch in the living room. The new MediaCenter sends the MCML file to the extender and the rendering is done it, while with MCE2005 the rendering (of the Hosted HTML applications) was done on the main desktop and the result sent to the extender à la Remote Desktop.

This means that all the effects run on full speed on the extender as if running on the main box, while with the MCE2005 the bitrate was limited to 3-5fps (and in fact video hosted in HTML application didn't run from extenders, or run very slowly)

Last, but, from the developer stand point, MCML is XML + code-behind in C#, so with the full power of the .NET framework and with the usual great developer experience of Visual Studio, while the old Hosted HTML app is DHTML + JavaScript, that was hard to develop and debug (probably now with VS08 less difficult).

More info on Scott's "Hanselminutes Podcast 82 - 10 Foot Development for Media Center" and on the Vista Media Center blog,

Technorati tags: , , ,