【发布时间】:2011-04-14 04:59:40
【问题描述】:
这个问题更关心程序的总体设计。我手头有一个问题,其中一个中心分别与一组客户端进行通信(客户端不直接相互交互)。
中心与客户之间的通信内容完全是数字,即来回发送一堆数字。客户端在单独的计算机上运行,并且中心可以托管在另一台机器上(或其他)。从某种意义上说,通信方式是迭代和同步的,即中心向每个单独的客户端发送请求/问题消息,客户端的用户在每次迭代的时间限制内向中心提供答案/回复,并且这种交互重复多次直到结束。
中心根据从客户收到的响应进行一些计算,客户只需提供该计算的输入。
我想知道使用 Java 解决这个问题的优雅设计是什么?非常感谢任何意见或建议。非常感谢。
【问题讨论】:
-
哪些因素阻碍了您保持简单——一些基本的 TCP/IP 通信?您是否希望重用现有的库?试图与大量客户沟通?您对服务器地址方面的发现感兴趣吗?容错?什么是最重要的——高效的资源使用/延迟/吞吐量?
-
中心是否需要启动通讯?服务器通常具有由客户端调用的服务。您如何描述您的架构,将您的客户端变成服务器(它们必须监听请求),将您的中心变成客户端。
-
@Dilum Ranatunga:考虑到应用程序的上下文,我实际上希望它尽可能简单。客户端的数量并不多 - 一次最多将有 10 个客户端连接到服务器。您能否详细说明 TCP/IP 的实现?
-
@Puce:也许我应该澄清一下,中心不会调用在客户端上编程的任何服务。更像是中心提出一个问题(由算法得出),该问题被发送给客户端,客户端回复使用客户端与中心交互的用户提供的答案。
-
你描述的仍然是一种服务:客户端(这里是中心)提出一个问题,然后发送给服务器(这里是客户端)。服务器(这里是客户端)监听传入的问题并提供响应。 “监听”部分将客户端变成服务器。
标签: java model client-server