服务器客户端Java分布式应用程序

时间:2009-10-14 14:26:01

标签: java swing network-programming distributed

我必须设计一个由一个服务器(用Java开发)和一个或多个远程GUI客户端(带有Windows的Swing应用程序)组成的分布式应用程序。

如前所述,客户端是Swing GUI应用程序,可以连接到服务器以接收和发送数据。 通信是双向的(服务器< =>客户端)。 通过网络发送的数据主要由我的域逻辑对象组成。

两个简短的例子:客户端调用服务器以接收数据以填充窗口内的表;服务器调用客户端以发送数据以刷新特定的小部件(如按钮)。

服务器和客户端之间传输的数据量以及网络呼叫的频率不是特别高。

您建议我使用哪种技术进行服务器 - 客户端通信?

我想到了一种适合我的技术,但我想知道你的意见。

非常感谢。

5 个答案:

答案 0 :(得分:5)

我想到的第一项技术是RMI - 如果你在java客户端和java服务器之间进行通信,那就适合了。但是如果你想将客户端技术切换到 - 例如 - 网络接口,你可能会遇到困难。

答案 1 :(得分:2)

我会使用RMI,但使用Spring框架实现整个架构。这种方式与所使用的技术无关,可以切换到其他通信方式(如HTTP或其他方式),几乎不需要编码。

更新:Spring将允许您不使用任何RMI特定代码。

答案 2 :(得分:0)

我相信套接字应该可以解决问题。它们非常灵活,不易编码/维护。大多数入门级程序员也应该能够维护它们。它们也很快并适应任何环境。

除非您的服务器不在现场,否则您会遇到防火墙问题。在这种情况下,由于您的基本通信是通过端口80进行的,因此Web服务是最佳选择。

答案 3 :(得分:0)

我是第二个msparer建议的RMI,除了我只使用EJB3(它使用RMI作为通信协议)。 EJB3非常简单,即使您不使用EJB为您提供的其他功能(例如,安全性),您仍然可以利用容器管理事务(CMT)。它确实使开发变得容易。

对于服务器 - >客户端通信,您可能希望使用JMS。再次,使用EJB3,这很容易与注释有关。客户端将订阅消息服务并从服务器接收更新通知。

是的,我目前正在开发一个能够做到这一点的应用程序。不幸的是我们正在使用EJB2.1。不过,我认为这是EJB真正发挥作用的地方。在Web应用程序中使用EJB通常是矫枉过正,但在分布式客户端/服务器应用程序中,它们可以很好地工作。

答案 4 :(得分:0)

您可以尝试使用ICE http://www.zeroc.com建立服务器 - 客户端连接。