java - 如何在RMI多用户应用程序中实现MVC模式?

标签 java model-view-controller design-patterns distributed

我正在尝试创建框架/库/API来创建小型多用户游戏,其目标是实现服务器、客户端和业务逻辑之间的“解耦”。

在我的例子中,服务器是注册客户端并发送的 列出业务逻辑,客户端正在向服务器注册, 业务逻辑负责游戏逻辑的工作,并通过从服务器获取客户端列表来更新客户端。

但目前, 我只有一个类,所以它很琐碎,但这可能由多个游戏对象组成 (以及序列化/远程类的作用是什么 例如游戏引擎、玩家、得分、移动、棋盘)。 我决定为此使用 RMI,这肯定会使用回调 有人可以告诉我机制吗?

我怎样才能实现这一点,包含服务器更新客户端(回调)的所有要求。

PS:我目前正在进行设计,其中有一个用于处理游戏逻辑的远程/序列化对象,但我想 使用我提到的其他类来制作多用户游戏库,并作为示例展示其中重要类的使用。

非常感谢

吉比

最佳答案

如果您打算将此框架用于实时游戏,那么我建议您不要使用 RMI - 它并不是真正为此类事情而设计的。另请注意,不同子网上的计算机之间的双向 RMI 很难工作。

似乎您需要在事件发生时服务器通知客户端。当您的客户端连接时,它可以从服务器的 RMI 注册表中查找远程对象,并调用该对象上的方法以将其创建的(托管在客户端上)远程对象传递到服务器。服务器必须维护这些客户端对象的集合并循环访问它们以发送事件。这是一个很难正确处理的架构,就像网络出现故障或客户端离线一样,您将不得不处理各种令人讨厌的错误处理和卡住。我建议您将大部分通信保持在一个方向 - 从客户端到服务器。还要使其尽可能简单 - 只需服务器上的一个 Remote 对象,其具有以 Serializeds 作为参数并返回 Serializeds 的各种方法。

这是否是 MVC 取决于您的解释。您可以将客户端视为具有服务器上的模型和 Controller 的 View ,在这种情况下,它是 MVC,事件机制是观察者模式的远程实现。

任务中最棘手的部分肯定是在服务器上获取通知客户端正确的代码,因为它需要多线程并优雅地处理错误 - 祝你好运!

关于java - 如何在RMI多用户应用程序中实现MVC模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3684780/

相关文章:

java - 根据请求创建 Hibernate-Session

Java - 单词和短语频率计数

java - 使用 MVC 绘制同心/旋转图形

java - 这是 MVC 吗?简单的Java Graphics2D绘图程序

java - 如何在 java 中从 JSON 解析创建一个非静态列表?

java - 在 Hibernate 中将实体内的实体与持久化上下文分离

api - 在 RESTful 应用程序中,我们如何区分 "action"和 HTTP 动词(GET、POST、PUT、DELETE)?

java - 需要有关 Java 设计模式的帮助

java - String name[] = {}; 有什么区别?和字符串 [] 名称 = {};

c# - 用于播放/查找 OGG 文件的库