跨语言中间件

时间:2014-05-21 15:00:24

标签: network-programming game-center distributed middleware distributed-system

我正在为需要客户端和此服务器之间持久连接的扑克牌开发游戏服务器。

因此服务器将接受来自多个客户端的连接,每个客户端都使用不同的编程语言开发。

我知道C#使用.Net远程处理和java使用RMI,但我不知道是否有任何可用于各种编程语言的中间件。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

是的,有很多......

您需要考虑两件事:

  1. 您想以哪种格式传输数据:
    • text(XML,JSON)
    • Binary(Protocol Buffers,...)
  2. 您希望如何与服务器通信?
    • HTTP(REST,WEB服务,...)
    • 消息(ZeroMQ,...)
    • 其他协议(RPC,RMI,...)
  3. 大多数通信以一种方式运行到服务器和服务器应答。这种方式对于交互式纸牌游戏,如果发生变化,您需要每隔几秒钟对服务器进行一次错误处理。尽管如此,这是最简单的方法,它可能会引入高延迟。

    解决这个问题的方法是:

    • 流式传输 - 您可以打开流作为响应并将更新的数据提供给客户端
    • 双向沟通

    由于几乎从不可能进行双向通信(因为客户端位于防火墙后面的私有网络中),让我们看一下流媒体。

    我们已经实现了〜5 - 6年前从C ++ SAO-WebService流式传输到.net客户端,它工作得很好。对于网络上的实时通信(RTC),http://www.webrtc.org/是新的东西。服务器端点实现了最常见的语言/技术,客户端端点不应仅限于JavaScript。但是如果你想要更低端,你也可以随时打开到服务器的套接字连接并监听传入的消息。但是,您放弃了HTTP和其他高级协议的好处。

    在回答以下问题时,我已经更详细地解释了部分内容:What is the use of REST in distributed web application