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:
- 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:
- Hosted HTML Applications: kept as support for legacy applications and for people that want to support both Vista and older MCE
- Hosted .NET 3.0 XAML browser applications (XBAP): to reuse an existing XAML application with little or no effort to support Media Center
- Media Center Presentation Layer applications: it's an XML-based declarative language, that can be both run from a server or installed locally, and allow the developer to build applications that will be run by the same rendering engine used by the core features of Media Center.
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)
More info on Scott's "Hanselminutes Podcast 82 - 10 Foot Development for Media Center" and on the Vista Media Center blog, mediacentersandbox.com