【问题标题】:Client in C++, Server in C# [closed]C++ 中的客户端,C# 中的服务器 [关闭]
【发布时间】:2012-11-29 09:31:04
【问题描述】:

我正在创建一个 MMO 游戏。我将使用 TCP 客户端/服务器通信。起初我的方法是用 C++ 编写客户端和服务器,但现在我开始考虑用 C# 编写服务器是否更容易。

客户端将使用 C++ 编写,因为它需要跨平台,但服务器始终在 Windows 系统上。我考虑选择 C#,因为它具有更简单的线程处理方式、内置 XML 解析器等。

我的问题是这是否是一个好的解决方案?性能对我来说仍然很重要,所以如果选择 C# 而不是 C++ 会对性能产生巨大影响,我会坚持使用 C++。

另外,如果您认为这是个好主意,您知道是否有任何教程介绍了 C# 服务器和 C++ 客户端之间的通信?

提前感谢您的回答。

【问题讨论】:

  • 您的问题与源代码无关,因此stackoverflow 不适合它。考虑改为询问programmers.stackexchange.com。关于通信,我建议使用 JSON 或 YAML 等文本序列化格式,并准确记录协议。
  • 用 C++ 编写应用程序是否更便于移植?
  • 我担心这个问题相当主观而且离题。

标签: c# c++ client client-server


【解决方案1】:

C++ 和 C# 之间的性能差异并没有你想象的那么大。

对于通信,如果您担心性能问题,请使用套接字和Google Protocol BuffersThrift 之类的东西。如果您不太关心性能,请使用 HTTP 和 JSON 或 XML。

【讨论】:

  • 谢谢你的回答,罗杰。
【解决方案2】:

对客户端和服务器使用不同的语言会迫使你用不同的语言重写很多东西,我个人希望保持同步:

  • 序列化和反序列化,尽管您当然可以为此使用一些库。我想到了 Google 协议缓冲区,因为它们明确设计用于节省带宽和“跨语言”工作。
  • 几乎游戏中的每个实体都会有或多或少的共同属性集。当使用不同的语言时,您必须手动保持这些同步,并且可能会编写两次。这对于更复杂的设置器尤其烦人;)
  • 您将需要一些共享逻辑来“模拟”客户端上的服务器答案。在客户端预测服务器为获得“快速”行为所做的事情很重要。还有什么可以比为服务器和客户端使用相同的代码库更好地模拟这种行为?

不过,在服务器上使用 C# 时,我不会发现性能有很大问题。这不应该是强烈影响您的决定的方面。

【讨论】:

  • 感谢您的回答,马库斯!现在我知道这些是主要缺点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-06
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 2011-08-04
相关资源
最近更新 更多