2010-09-10 56 views
0

我正在尝试创建用于创建小型多用户游戏的框架/库/ API,其目标是实现服务器,客户端和业务逻辑之间的“解耦”。如何在RMI多用户应用程序中实现MVC模式?

在我的情况下,该服务器是一种登记的客户和发送的 列表中的业务逻辑,客户端与服务器, 和业务逻辑登记做游戏逻辑的东西,通过获取列表更新客户端客户端从服务器。

但目前 我只有一个类,因此它的琐碎,但这可能由几个游戏的对象 (什么是类的序列化/远程 喜欢的游戏引擎,玩家,比分,移动的作用,板)。 我决定使用这个RMI,这肯定会使用回调 机制可以有人告诉我。

我怎么能达到这个包含服务器更新客户端(回调)的所有要求。

PS:即时通讯目前正在设计中,其中有一个远程/序列化对象处理gamelogic但我想 使用其他类正如我提到的用于制作多用户的游戏库的缘故,并显示使用的重要的类以此为例。

非常感谢

jibby

+0

MVC模式用于GUI开发,与RMI无关。 – 2010-09-10 13:07:53

+0

RMI应用程序不能有GUI? – 2010-10-02 02:58:46

回答

2

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

看起来好像您需要客户端在事件发生时被服务器通知。当您的客户端连接时,它可以从服务器的RMI注册表中查找Remote对象,并调用一个方法将其创建的(托管在客户端上的)Remote对象传递给服务器。服务器将不得不维护这些客户端对象的集合,并遍历它们以发送事件。这是一个棘手的架构,如果网络发生故障或客户端处于脱机状态,您将不得不处理各种令人讨厌的错误处理和冻结问题。我建议你保持大多数通信的方向 - 从客户端到服务器。还要保持它尽可能简单 - 只需在服务器上使用以Serializables作为参数并返回Serializables的各种方法即可。

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

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

+0

我已经在考虑一些问题你分享,并会考虑其他人,谢谢 – 2010-10-02 03:01:04

相关问题