开源客户端-服务器代码项目示例

4

有哪些开源的客户端-服务器项目可以作为参考,以模仿它们的代码组织风格?

Java是首选但不是必需的。

相关:

我仍在尝试回答我几分钟前的问题,"客户端-服务器代码应该写在一个'项目'中还是两个中?" 我认为看看其他项目如何组织他们的代码(并希望推断出他们选择这样做的优缺点)会对我有所裨益。


1
为什么你不直接编辑你的原始问题呢? - Bill the Lizard
这是完全不同的问题。除了将代码分成一个或两个项目之外,还有其他问题。我之前提到上一个问题只是因为它启发了我提出这个问题。 - Ricket
@Ricket:好的,我正在重新安排一下。请检查我的编辑,如果您不同意,请撤销它们。 - Bill the Lizard
@Carsten:你所说的thin client是指利用现有技术(如telnet)的服务器吗?我想要一个具备丰富客户端和服务器配对的解决方案。 - Ricket
富客户端:通常是一个独立的应用程序,至少具有一些内部逻辑,例如从服务器获取数据,但大部分处理都在本地完成。瘦客户端:几乎所有业务逻辑都在服务器上执行,只有结果被发送到客户端进行显示;例如经常在运行于Web浏览器中的Javascript客户端中看到。通常人们会根据这个区别来组织他们的代码。 - Carsten
2个回答

2

由于没有其他人敢回答,这里提供了一些例子,但我不确定它们是否是好的参考(免责声明:我只看了其中几个的源代码)

  • Cube游戏和3D引擎,一个多人游戏FPS,具有独特的多人编辑功能,使用OpenGL和SDL从头开始编写
  • Cube 2: Sauerbraten,与Cube相同,但具有稍微更发展的功能
  • Planeshift,一个开源MMO
  • Red Dwarf Server,一个Java服务器应用程序,主要针对在线游戏和MMO;仅带有小型示例客户端

Google Web Toolkit将客户端和服务器放在同一个项目中,但在不同的包中,但它在编译时强制执行客户端/服务器分离。对于没有花哨的自定义插件来强制执行此操作的情况,我认为最好的选择是让服务器包含客户端,以便它可以访问客户端代码,但反之则不行。 - Ricket

1

我不知道现在是否为时已晚,但是关于这个问题,我有一些话要说。通常情况下,我会将服务器和客户端放在同一个项目中,以防它们都需要访问某个类。如果你仍然对一些示例代码感兴趣,我已经从事网络编程5年以上,有很多示例代码可以提供给你。


打个反对者的角色,“万一它们都需要访问一个类”并不是将代码放在同一个项目中的决定性原因。一个项目可以是另一个项目的依赖项,或者可以编译为库,而另一个项目则包含在其类路径中。特别是因为您不想在客户端中使用服务器代码,所以我认为将它们分开是有意义的,这样服务器项目就包括客户端代码,但反之则不然,对吗? - Ricket
是的,但我喜欢在发布最终产品之前将它们放在一起,以便保持完整性。在发布之前,我会将它们分开以节省空间,因为客户不需要访问服务器类,但在开发程序时,我通常会将它们放在一起。 - gsfd
这似乎可能会很困难,特别是随着时间的推移引入了越来越多的耦合问题,到发布时,你手头上就会有一个大混乱,并且必须手动筛选和解耦。我更喜欢立即在编译时获得反馈,而不是在部署后进行清理,因为客户端永远不应该使用特定于服务器的代码。当然,这肯定是一个观点问题,你可能比我更有实际经验。 - Ricket
我认为将它们保留在同一个项目中直到发布是个好主意,因为有时服务器和客户端需要共享一个类,比如如果你有一个跳棋游戏,服务器和客户端都需要一个玩家实例来跟踪每个玩家拥有的棋子,诸如此类的事情。 - gsfd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接