16

I have had the opportunity to spend a great number of hours trying to use WCF in mono. It is simply too poorly implemented at this point to be put into a production environment, for anything beyond toy applications. It does not survive a 24/7 load.

I do currently have WCF on Mono running in a production environment, but I need to move away from it, at least in the near term, to bring stability to my software. Currently I'm surviving by restarting processes every few hours, and often times that is not enough.

I'm looking for potential alternatives. All of my communicating entities are .net based, with some being Mono on Linux and others being ms.net on Windows Server. I'm very tempted to roll my own RPC layer with protobuf-net as the serialization layer, but I'd prefer not to do this. The big plus with protobuf-net is that it has good C++ support, which is something that I value.

Has anyone out there achieved stability with RPC on Mono? If so, what did you do?

Updated: I did not mention that I'm looking for stateful duplex messaging. This is a considerably important piece of information. I'm not stuck with it, but I very much want it. WCF provides this with net-tcp duplex channels.

John Hargrove
  • 701
  • 6
  • 23
  • This is an excellent question and I really hope to see some decent answers. I, too, run into the same issues with mono. Insofar, mono is not something I can trust in a production environment when it comes to WCF. – Shaun McDonnell Sep 20 '11 at 16:16

4 Answers4

8

Try ServiceStack for REST/WS

A modern, code-first, DTO-driven, WCF replacement web services framework encouraging best-practices for creating DRY, high-perfomance, scalable REST web services

If you're looking for something duplex and tcp based, you might consider zeroMQ, although it's problem set is slightly different than WCF.

Brook
  • 5,949
  • 3
  • 31
  • 45
  • +1 This looks like a great option for RESTful web services, and an alternative to one WCF feature. I will find a use for this in some places, but (unless I'm missing something) you cannot implement a stateful duplex service. I have updated my question to highlight this detail. – John Hargrove Sep 21 '11 at 19:56
  • @John Hargrove: You might also be interested in zeroMQ (updated my answer) if you're interested in duplex tcp. – Brook Sep 21 '11 at 20:11
  • 1
    After a great deal of research and a whole lot of code, I am switching to zeroMQ. I am using zeroMQ for the transport and protobuf for the message formatting. I have implemented a few patterns such as Request/Reply, Pub/Sub, etc. It's working very well and is stable under mono. It's not perfect, but it is certainly working well for my environment. Thanks for the answer! – John Hargrove Oct 22 '11 at 20:48
1

RestSharp is often mentioned in Mono's IRC channel (e.g. #mono on GimpNET) as an alternative and works with Mono, MonoTouch, Silverlight, Windows Phone 7 and, of course, the regular FX too.

poupou
  • 43,413
  • 6
  • 77
  • 174
  • I'll look into this possibility. My sentiments are the same as I mentioned to Brook in his answer re: ServiceStack. It replaces one aspect of WCF, but there is a lot of WCF to replace, and I have places where a REST service won't cut it. – John Hargrove Sep 21 '11 at 19:58
0

Try NFX.Glue - works on Mono

Blog with overview

itadapter DKh
  • 596
  • 3
  • 7
0

Remoting? http://msdn.microsoft.com/en-us/library/kwdt6w2k(v=vs.71).aspx

TheNextman
  • 12,428
  • 2
  • 36
  • 75