Sunday, June 15, 2008

Stub Generator project

I just published a stub generator utility on CodePlex :

The stub generator reads a DLL using Cecil and generates C# stubs for the DLL.

We have tested it on some complex DLLs, and although it is not bug free it pretty much works.

If someone wants to write a cool U/I this would be greatly appreciated.

Wednesday, June 11, 2008

Syndication - RSS 2.0 working !

The RSS 2.0 syndication sample in MSDN now works in Mono's latest bits.
I believe it is now possible to write a WCF service that consumes and exposes RSS feeds.

Give it a try and let me know how things work out.

Wednesday, June 4, 2008

Syndication - RSS 2.0 (almost) working !

I have been working in the past few days on getting the basic RSS feed sample from MSDN to work in Mono.

The sample is at the bottom of this page:

I haven't committed all the fixes yet, but the status is that a valid RSS feed is generated. The part that consumes the RSS feed is not working yet.

There is also an additional small bug discovered that I did not fix yet in the following code:
Uri baseAddress = new Uri("http://localhost:8000/BlogService");
WebServiceHost svcHost = new WebServiceHost(typeof(Service), baseAddress);;

The host does not listen on the base address. The workaround is to add an additional Endpoint before penning the host, like this:
svcHost.AddServiceEndpoint (typeof (IService), new WebHttpBinding (), baseAddress);

I will update when the entire sample is working.


Serialization of byte[]

Across .NET now also works.

Before it was serialized differently than .NET, so Mono<->Mono worked but .NET<->Mono did not.

Thursday, May 29, 2008

WCF work environment

I wanted to share the work environment in which I debug Mono's WCF.

The idea is to run on .NET using the .NET tools and runtime, but taking specific libraries from Mono. The main advantage of this environment is the usage of the visual studio debugger greatly increasing productivity.

Step 1: Skip public key validation of (some) .NET assemblies
> sn -Vr System.ServiceModel,B77A5C561934E089
> sn -Vr System.Runtime.Serialization,B77A5C561934E089

Step 2: Place Mono assemblies in the GAC
The visual studio project files of System.ServiceModel and System.Runtime.Serialization have post build steps that do this. The comitted versions are remarked, so you want to remove the remark.

At this point you want to build the assemblies in VS2008 in order to place them in the GAC.

Step 3: Run your app
You can place breakpoints in Visual Studio. Very productive environment.

Step 4: Revert back to .NET
> "C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gacutil.exe" /i "c:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\System.ServiceModel.dll"
> "C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\gacutil.exe" /i "c:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\System.Runtime.Serialization.dll"

Good luck,


Dual contracts works

I just fixed a bug or two in Mono's WCF with regard to services that implement more than one contract. A simple test now works.


Sunday, May 25, 2008

Mono's WCF

Welcome to my blog.

Since I have recently spent quite some time working on Mono's WCF implementation, I thought it might be a good idea to open a blog and share the experience during this development.

I will tag all the WCF related posts with WCF tag. I think that this group of posts will be useful for people who are using, considering using, or contributing to Mono's WCF implementation.

I work at Mainsoft, managing the development team of Grasshopper. We are interested in supporting WCF in our Grasshopper at some time in the future, and thus my personal interest in WCF at Mono.

Anyway, what I wanted to mention is that recently over the past couple of weeks, I have seen some usage of WCF on the olive dev list. For instance:

My point is that although the status of WCF is still initial, bugs in WCF - especially within the constraints of basicHttpBinding - are treated at a fairly high priority. If you can explain the bug you are having, it is likely we will fix it fairly quickly.