May 2009 Archives

moonlight 2.0 preview, WCF, and mooncodecs

| 14 Comments | No TrackBacks

As most of you may know, Moonlight 2.0 preview was released last week. We Japanese are in holiday week, so I blog about it this late. Here I write about two completely different stack; WCF and custom media codecs.

WCF in moonlight 2.0

Mono itself does not officially support WCF, but the development originally started back in late 2005 (there was of course no .NET 3.0). I had been working on several different stuff, but I got back to this WCF land since January to fulfill WCF need in Moonlight.

The entire WCF stack is huge and contains lots of extra(neous) stuff, but the parts used in Silverlight 2.0 is not. There is only BasicHttpBinding without WS-* complication. There is no service stack. There is no System.ServiceModel.Configuration (I hate them!). They have been mostly implemented in the context of full WCF at the time I (re)started the development.

However, there are some parts that are significantly different from the full WCF and/or that need significant rewrite our hacks from years ago. The threading model changes, for example, is totally different (and yes, I like the newer async idea). There is “ServiceReferences.ClientConfig” support instead of the full configuration stack (it is not enabled yet though). There are some new serialization feature such as object reference support.

There are still things marked as TODO on our Status pages, but as far as I know there is no missing major feature.

There is a couple of silverlight sites that used WCF and needed those fixes. Hardrock Memorabria, NBC Olympics (which I cannot really watch the videos from Japan!), OpenStreetMap (the one from figment engine; I took a sshot) or even a helicopter game (no, SOAP does not help your helicopter fly up; it’s all about registering high score).

Now I moved to non-moonlight WCF hacking. WCF in mono is different story, and I’ll write about it too somewhat soon.


In my previous post from about a month ago, I wrote about MoonVorbis and custom media stream support in Silverlight 3. The next day, one of my local mono community friends hacked another custom media stream source for MS IMA ADPCM. Also, no sooner, Olivier Dufour posted C# port of Java Dirac encoder.

They are based on the moonvorbis sample and hence they still need to be improved, but so far I have collected them and put in our svn as module “mooncodecs”. (csdirac was based on full CLR, so the corresponding code in this module includes some fixes by Geoff “kangaroo” Norton).

The project aims to be in uses for Silverlight 3, not only for Moonlight. The each of the codecs has a MonoDevelop solution file, which should work in Visual Studio 2008 too. Also, ideally they should also be useful for non-silverlight environment. I haven’t created solutions for full CLR, but it should be possible.

We welcome more open source managed codec contributions :-)


I have been writing some toy stuff these days. I may write about them too, but not today yet.