Why is Mono implementing WCF?

Why is the Mono project implementing WCF interfaces and classes "as is"?

I do not understand what is the point to repeat Microsoft's design. My experience says that WCF is a huge framework with an implementation based on SOAP services. There are tremendous problems with their approach. It simply does not fit well for simple HTTP request processing cycle. Why not try to invent a better framework instead?


OK, I get it. :) I like the .NET platform, C# and I like that this platform is available on another OS, but ...

Don't you guys see that many things in the original (Microsoft) frameworks can be done better? Look at System.ServiceModel.Channels.Message. This is one of big things of customization landscape.

Why do I see XML everywhere? How can I easily do anything with classes like this? It is feasible, but I cannot say this is good design for a general purpose communication framework. I thought that the purpose of the Mono project is not just bringing the .NET ecosystem to unix* but make it better.


I think the whole point is to make WCF platform available in other operating systems than Microsoft Windows. So, if you have an application developed with MS VisualStudio (Microsoft's compilers), you can deploy it on Linux or Mac OS X if you wish.

You can also use MonoDevelop and Mono Compilers if you decide to code WCF in alternative platforms.

Because not everything is suitable for a simple http request processing cycle. Because SOAP offers features REST does not. Because it hooks into a wide set of encryption, authentication and authorization options. Because what you see as as tremendous problems solve problems for others.

Mono exists to allow .net on other OS's. Mono is not about picking and choosing what to implement based on merit.

Need Your Help

Custom Authentication Manager with Spring Security and Java Configuration

java spring spring-mvc spring-security

I am using Spring Security with SpringMVC to create a web application (I will refer to this as the WebApp for clarity) that speaks to an existing application (I will refer to this as BackendApp).