【发布时间】:2014-08-15 09:12:10
【问题描述】:
我想做一项服务,在执行这些任务的多个服务器之间分配任务。 为此,我使用了 Java RMI 技术,一切正常,但它是一团糟。我有一堂大课,就是 与服务器调用以发布消息和客户端方法的远程方法混合 将任务调度到客户端调用的服务。
我现在正试图找到一个合适的解决方案来封装业务方法中的远程方法,但由于它们紧密耦合,因此遇到了困难。消息实现(参见示例类图)与私有业务方法紧密交互。 这可能还包括调用 Client 类的事件 订阅。我的第一个想法是使用消息处理程序的方法。但是消息处理程序如何仍然与服务器的私有方法交互并调用服务上的事件。
我想问你是否对我的问题有任何想法。如何从非远程方法中封装远程接口及其方法?
【问题讨论】:
-
您的
TaskServiceEngine是调度程序,我是否正确?你应该将doBusiness()类型的方法提取到单独的类中。你的TaskServiceEngine应该有很少的公共方法:(客户端接口)subscribe(Listener [, List<Job>])和submitJob(Job [, List<Listener>])和(服务器接口)submitJob(Job)和updateJobStatus(Job)。 -
是的,也许 doBusiness 方法是一个不好的例子,应该与您建议的 submitMethod 交换。在我的真实示例中,我有一个名为 queue(Job job) 的公共方法。实际上我想出了一个新的想法。我很快就会发布图表。
-
我的想法如下(我认为这不需要图表):我有一个模型类,它封装了“业务”数据,并且除了 addMyEventListener 方法之外还提供公共 fireMyEvent 方法。我现在有几个消息处理程序,我将这个模型的一个实例传递给它们。然后,它们可能会根据其特定的消息处理调用事件并操纵数据。但我不确定这些公共 fireMyEvent 方法是否是个好主意?
标签: java architecture interface rmi