Java 编写桌面GUI客户端与服务器通信

Java 编写桌面GUI客户端与服务器通信,java,client-server,Java,Client Server,我有一个Java应用程序,它是一个长时间运行的过程(让我们称之为“服务器”)。我必须编写一个桌面GUI(很可能在Swing中),让我们称之为“客户端”,它可以连接到此应用程序并: 显示来自应用程序的状态更新 向应用程序发出特定的“手动触发”命令 客户机和服务器之间的每个交互(对话线程)都很短,但可能涉及一些上下消息。实现这样的东西有哪些不同的选择?速度对我来说不是个大问题;我更感兴趣的是,我可以在不被管道细节困扰的情况下改进对话协议。我现在想到的选项是sockets、RMI、JMS和JavaSp

我有一个Java应用程序,它是一个长时间运行的过程(让我们称之为“服务器”)。我必须编写一个桌面GUI(很可能在Swing中),让我们称之为“客户端”,它可以连接到此应用程序并:

  • 显示来自应用程序的状态更新
  • 向应用程序发出特定的“手动触发”命令

  • 客户机和服务器之间的每个交互(对话线程)都很短,但可能涉及一些上下消息。实现这样的东西有哪些不同的选择?速度对我来说不是个大问题;我更感兴趣的是,我可以在不被管道细节困扰的情况下改进对话协议。我现在想到的选项是sockets、RMI、JMS和JavaSpaces。

    我多年来一直在做这类事情。我喜欢它,因为它非常简单,让你在15分钟内运行。这都是http和简单的XML。

    如果它是一个通过API扩展服务器的选项,那么它可能是客户端最容易使用的选项。在简单地用URL术语说明API之后,如果需要,您可以轻松地将客户端切换到其他语言

    我使用ObjectInputStream和ObjectOutputStream为序列化命令使用套接字解决了这个问题

    对于协议,您需要不同的对象命令(这里的命令模式可能很有用)。所有这些对象都应该是可序列化的。然后您可以简单地发送/接收命令。IMHO是最简单的方法(在技术方面和实现方面)。

    在(Java)上达到顶峰。它支持您提到的所有选项,并允许在路由邮件时使用规则


    可以独立安装,也可以随Apache ActiveMQ(JMS代理)一起安装。

    我同意@Norbert Hartl的观点。Apache有一个非常简单的XMLRPC实现,可以与ApacheHttpClient一起使用。该库还有一个使用服务器接收XMLRPC请求的示例。

    建议ObjectInputStream只是部分回答了这个问题。比尼尔不想被管道细节所困扰;我更愿意尽可能抽象地描述这段对话。