适用于客户端 - 服务器Android应用的最佳技术

问题描述:

我需要为学校制作在Android上运行的应用。其实有两个应用程序,一个客户端和一个服务器。 Ther服务器运行在PC上,而客户端运行在Android设备上。我想知道什么是最好的技术。我知道RMI和WebServices没有在Android中实现,因此有什么选择(除了以传统方式实际与套接字进行通信之外)。我没有考虑的一个替代方案是REST,但是我需要能够在其他客户做出某些事情时通知客户,类似于玩家A通知玩家B他做出了行动的基本游戏。如我所说,套接字可以做到这一点,但与RMI和Web服务相比,它们只是低级别的,并且只是希望将它们作为最后的手段。适用于客户端 - 服务器Android应用的最佳技术

保持简单。使用REST并让客户端轮询更新。

另外,如果你到一个点下来,你需要扩展的道路,这种解决方案实际上是相当容易的扩展,因为你的服务器并不需要保持连接。因为有一个特定的服务器和客户端之间没有共享的状态(有共享应用和客户端之间的服务器),你可以很容易地添加更多的服务器来处理查询,并把它们背后负载平衡器。

您还可以添加缓存,以便在投票只是获取而不引起响应的重新计算完全相同的响应。游戏状态发生变化时,您可以让后端游戏状态服务器更新缓存。这会让你更频繁地进行调查,并且仍然具有非常灵活的可扩展架构。

+0

使用其余的我将在“检查,如果其他玩家取得了他的行动”的无限循环一个用户。这是相当CPU密集型的,也会在服务器上做更多的请求。另一个问题是,一旦建立了“游戏室”,我可能需要两个用户通过peer2peer进行通信。 –

+0

很好的解释哥们。可以分享一些链接来知道这件事吗? – Dharmendra

+0

@Pazvanti - 设置任何轮询时,您总是需要在轮询之间有某种间隔。你不能在没有某种等待的情况下把它扔进一个循环。客户端到客户端的通信也可以通过服务器基础设施完成。根据您希望事情的响应程度,您可以适当调整轮询时间。 – cdeszaq

对于传统上用于即时通信的回合制游戏,你可以看看XMPP(例如Smack)。使用C2DM创建用于推送通知的游戏也很有趣。

您也可以看看这实质上是在球员动作被送入一个永无止境的HTTP响应HTTP流。

或者,您可以查看更适合实时游戏但仍适用的二进制消息传递系统,如RabbitMQ(平稳回合制游戏出了什么问题?)。

+0

HTTP流式传输的问题,特别是在基于回合的游戏场景中,服务器必须保持连接状态,在这种情况下,每场游戏需要2个连接。对于大多数Web服务器(不是全部),打开的连接内存密集,这意味着这种方法不能很好地扩展,因为大部分时间都花在等待用户和浪费资源。 – cdeszaq

+0

你说得对 - HTTP流看起来不可扩展。尽管如此,使用C2DM将是一个非常好的解决方案。 –

+0

我将不得不考虑Smack,看看我能用它做什么。如果它主要用于即时消息传递,那么它可能不是最好的解决方案......但它可能比这更强大。感谢您的建议。 –