gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 08:29:53 25 4
gpt4 key购买 nike

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

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

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

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

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

非常感谢

吉比

最佳答案

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

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

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

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

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com