问题
我们参与了一个新项目,用于开发一个具有多台PC的应用程序,这些PC将充当通用计算机。还有一台计算机将不时作为主机来控制客户的所有进程。该计算机必须通过服务器机器向所有其他计算机发送消息,要求例如注册帮助。此时,在客户端计算机中运行的进程必须获得对计算机的控制,并且仅作为运行该应用程序的从属计算机,直到从主计算机发送新消息以释放它们为止。之后,客户端计算机再次充当通用计算机。
The following scheme试图解释CM(控制机器)通过服务器(SRVR)获得SM(从机)的访问后发生的事情
声明:
问题是:
您将在视图中使用哪种Java技术组合?我的观点是使用Swing,也许可以通过SwingComponent.wrap(loginPanel)将其嵌入到FX中,以帮助图形设计人员进行更好的视觉工作(在此应用程序中必须使用)。请考虑绑定选项JSR-295(现在我已经死了)或一些适当的选择。
您如何维护应用程序客户端的更新,我的意见是通过Java Web Start并将其作为小程序提供。
如果SRVR使用带有EJB 3.0的Java EE来访问远程对象,这样可以吗?如果是这样,您将如何将/ model / EJB与RMI集成。我对RMI / EJB集成没有太大的经验,我不确定它是否正确。特别是因为EJB规范已经信任RMI。但是,如何从会话Bean(我可以看到有状态的)广播消息来更新视图?
必须在注册为观察员的所有视图(其他SM,RM和CM)中查看SM中选择的任何选项。你会建议一个模型/架构/产品吗?
一旦SM应用程序被唤醒,哪种方法可以让SM应用程序获得全面控制? -remember,它是Linux -
如何在分布式上下文中应用观察者模式?
此安排的硬件安排是否正确?
我知道这些问题很多,我不是要开始讨论这个问题,我知道可能会有很多不同的意见,我有兴趣听取所有这些意见,包括实施细节。我正在寻找你们的一些反馈意见,我们将非常感谢你们的意见。提前谢谢!
答案 0 :(得分:0)
这就是我解决这个问题的方法。
<强> 1。您将在视图中使用哪种Java技术组合?我的观点是使用Swing,也许可以通过SwingComponent.wrap(loginPanel)将其嵌入到FX中,以帮助图形设计人员进行更好的视觉工作(在此应用程序中必须使用)。请考虑绑定选项JSR-295(现在我已经死了)或一些适当的选择。
在这种情况下使用Swing,考虑的是它是一种最稳定的技术,如果毕竟JavaFX将成为一个库,它可以在以后用于为应用程序提供更好的方面,现在视图是定制的使用Swing LAF
<强> 2。您如何维护更新的应用程序客户端,我的观点是通过Java Web Start并将其作为小程序提供。
该要求是通过shell脚本和ssh提供的。经过一些更新后,客户端应用程序将重新部署到客户端计算机
第3。如果SRVR使用JEE和EJB 3.0来访问远程对象,这样可以吗?如果是这样,您将如何将/ model / EJB与RMI集成。我对RMI / EJB集成没有太大的经验,我不确定它是否正确。特别是因为EJB规范已经信任RMI。但接下来如何从Session Bean(我可以看到有状态的)广播消息来更新视图?
RMI架构很简单。在这种情况下,JBoss A.S. application是通过rmiregistry部署在每台客户机上的RMI服务器的客户端。当客户端应用程序继续运行时,RMI存根是服务器和客户端之间唯一的共享类,此接口允许您调用客户端方法。小心使您的JPA模型类可序列化。
<强> 4。必须在注册为观察者的所有视图(其他SM,RM和CM)中查看SM中选择的任何选项。你会建议一个模型/架构/产品。
它的实现方式与前一点相同,但重要的一点是RMI不支持多播消息传递,因此如果需要与许多注册客户端进行消息传递,请务必小心,因为如果您有100台广播消息的计算机相互之间,它意味着通过网络发送100x100条消息。
<强> 5。一旦其进程被唤醒,哪种方法可以使SM应用程序获得全面控制? -remember,它是Linux -
好吧,Java Swing的JFrame有一种方法来维护Window ALWAYS_ON_TOP。如果将它与UNDECORATED_FRAME结合使用,其他应用程序将继续运行,但它们永远不会实现焦点。
<强> 6。如何在分布式上下文中应用观察者模式?
它以相同的方式应用,我们只需要注意何时注册观察者以及何时取消注册它们。
<强> 7。硬件安排是否适用于此应用程序?
硬件安排以问题中包含的图形显示的方式部署。
感谢所有这些,至少检查过这个问题。