0

I'm developing a game server that has four stages: AccountServer, CharServer, InterServer and ZoneServer, they are different process and probably will stay on different machines. They need to intercommunicate with each other for synchronizing data, process server changes and various other "time critical" operations.

I'm looking for an RPC approach with .Net for this. It must be work on both Linux, MacOS and Windows) and preferably use binary data over TCP/Unix Sockets/Named Pipes. I already considered some solutions:

  • .Net Remoting: It's called legacy and I don't know much about it performance implications, doesn't support authentication easily.
  • WCF: Uses SOAP, slow as I should get several calls per second
  • CORBA: Seems promising but I didn't found any implementation for .Net

Any other solutions?

greenboxal
  • 469
  • 3
  • 16
  • 1
    WCF doesn't have to use SOAP, it has RESTful bindings as well (alongside the newer WebAPI). In any case it can easily handle several calls per second. – Allon Guralnek Dec 30 '12 at 19:55
  • 3
    CORBA? oh my.. does that still exist? WCF is not only soap, it can have other bindings, formats and is extensible. – rene Dec 30 '12 at 19:56
  • 1
    If you want a cross-platform binary serialization protocol/framework, there's Google's [Protocol Buffers](http://code.google.com/p/protobuf/) with an implementation for most major programming languages, and an especially good implementation for .NET: [protobuf-net](http://code.google.com/p/protobuf-net/). That doesn't give you RPC but it you'll be rolling your own there there's already a good serialization framework to use. – Allon Guralnek Dec 30 '12 at 20:08
  • WCF can support custom authentication and is well supported by Mono? As far as I read WCF isn't good to handle several method calls. It also can run without HTTP? I need a permanent and authenticated conection by pipes and/or TCP. – greenboxal Dec 30 '12 at 20:10
  • 1
    WCF has nothing to do with HTTP. It is an RPC framework. It has "bindings" which are RPC implementations over various protocols such as: SOAP/HTTP (BasicHttpBinding), persistent TCP Socket (NetTcpBinding), IPC via Named Pipes (NetNamedPipesBinding), Microsoft Message Queing (NetMsmqBinding/MsmqIntegrationBinding), peer-to-peer (NetPeerTcpBinding), REST over HTTP (WebHttpBinding), Two-way communication over HTTP (WSDualHttpBinding), and other bindings, plus you can write your own custom bindings. protobuf-net has WCF hooks, and Mono's WCF supports HTTP and TCP (both streaming and duplex). – Allon Guralnek Dec 31 '12 at 08:42

0 Answers0