Java:使用Sockets还是RMI?

7
我需要将我们的应用程序分成一个轻量级GUI应用程序和一个业务逻辑应用程序。这不会是典型的客户端/服务器设置,因为“服务器”组件只有一个客户端。
应用程序的另一个限制是它只有一个入口/出口点。因此,如果我们使用RMI,它只能在一个函数上运行。所有表单数据已经包装成一个字符串,并通过一个传输区域传递。
我应该只使用Java Sockets来增强这个应用程序,还是选择RMI?或者其他Java技术?
我之前发布过一篇文章概述了我们应用程序的要求,但没有得到回答。 https://stackoverflow.com/questions/2604528/terminal-panel-pc-single-server-solution-client-server-or-rdp

可能是此问题的重复,链接如下:http://stackoverflow.com/questions/2604528/terminal-panel-pc-single-server-solution-client-server-or-rdp - paxdiablo
我认为你已经自己回答了这个问题。如果它是轻量级的、单用户的,并且你对RMI感到舒适,那么你应该选择它。 - Chuk Lee
1
@paxdiablo 可能 是重复的吗? :) - chris
1
关闭一个没有回答的问题,而选择这个问题似乎是不好的。最好关闭那个问题,然后将有用的内容编辑到这个问题中。 - Donal Fellows
1
感谢大家的回答。当你在办公室里没有其他人可以回答这些问题时,Stackoverflow是一个很好的资源。我只得到了“什么是RMI?”。 干杯。 - StillLearning
显示剩余2条评论
4个回答

7
个人而言,如果你只需调用一个方法且所有的数据已经包装在一个字符串中,那么RMI似乎有点过度。我想一个简单的套接字服务器就可以满足你的需求。然而,RMI确实为你提供了许多免费的东西,例如多线程、分布式垃圾收集、对象编组等等。但是,如果你只有一个客户端,那么多线程可能没有用处,而由于你自己进行对象编组,所以这些好处可能对你毫无帮助。
这里有一个关于RMI功能的好页面:http://java.sun.com/javase/technologies/core/basic/rmi/whitepaper/index.jsp

这就是我的想法。保持简单,或者使用RMI,之后再利用它的其他功能。我还不确定,但我只是想确保没有其他框架/ API我不知道的。干杯。 - StillLearning

2

由于你的协议已经非常简单(只需传递一个字符串),我建议你使用套接字。

优点是你不会被绑定到Java两端,比如说,可以轻松地将用户界面切换到另一种语言。


2

我曾经开发过使用原始套接字进行通信、使用RMI进行通信和使用SOAP进行通信的应用程序,其中使用RMI是最容易的(仅略胜一筹),但这将强烈绑定您只能使用Java。 RMI之所以最容易,关键在于它确保发送整个消息,并包含基本的发现框架,但它没有SOAP的复杂性(比上面列出的所有内容都要复杂得多)。


1
您可以考虑将服务器入口点封装为Servlet,并从客户端执行POST请求。

是的,它负责编组和解组。唯一的缺点是我们需要Web服务器。 - Amrish Pandey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接