原帖
我将如何实现分布式远程方法调用系统?
我正在尝试创建如下内容:
- 主服务器跟踪单个“主机”。
- 主机可以使用基于代理对象接口的编程风格与网络上的其他主机通信,例如:
var result = remoteHost.MyMethod(5);
我试过使用像SuperPool和Scs这样的 RMI 库,但是它们有一些基本问题:
- SCS 仅支持 Server --> Client 或 Client --> Server 通信,不支持 Client --> Client 通信。
- 据我所知,SuperPool 只支持相同的,虽然这张图片会暗示其他情况,但我在文档中找不到任何关于如何执行此操作的内容:
不同之处在于客户端上的任何组件也可以与其他客户端上的组件进行通信,而不仅仅是客户端-->服务器或服务器-->客户端通信。
你会建议我如何实现这个(也许使用这些现有的解决方案作为基础),或者是否有其他一些现有的解决方案可能有效?
更广泛的例子
这是我正在尝试做的图表:
重要提示:客户端不会相互连接。
过程:
- Client1 连接到服务器
- Client2 连接到服务器
- Client1 调用 Client2 上的一个方法,而不知道 Client2 的组件是否存在于服务器、另一个客户端或它自己上。
这个想法与 SuperPool 所做的相同,除了允许 Client --> Server --> Client 通信路径来调用第二个客户端上的方法。