在仅Java环境中Web服务和RMI的优缺点是什么?

时间:2008-09-23 12:52:04

标签: java web-services remoting rmi

在开发分布式应用程序时,同一家公司用Java编写,您会选择Web服务还是RMI?在性能,松散耦合,易用性方面,有哪些优点和缺点?有人会选择WS吗?你能用RMI构建面向服务的架构吗?

5 个答案:

答案 0 :(得分:9)

我会尝试这样思考:

您是否打算在彼此之下运行独立服务,这些服务可能会在未来的某个时间被非Java应用程序访问?然后去寻找网络服务。

您是否只想在多台服务器上传播应用程序的一部分(请注意单数)?然后转到RMI,您将不必离开Java Universe以使所有内容紧密耦合在一起。

答案 1 :(得分:6)

我会选择WS。

  • WS / RMI不太可能成为你的瓶颈。
  • 为什么要在未来关闭其他可能的技术?
  • 如果客户端/服务器上的类版本不同步,则RMI可能会出现问题。

而且......我很可能会选择REST服务。

答案 2 :(得分:2)

如果你不需要它(与非Java互操作),而你可能不是,RMI会更好;代码更少,配置更少,带宽开销更少。

如果你害怕自己需要的选项那就是使用EJB3;它使用RMI,非常易于设置和部署,但如果您需要,还可以轻松将您的呼叫转换为Web服务。

无论你做什么,创造自己的东西;坚持标准。

答案 3 :(得分:1)

我的选择是:

标准java序列化 - 专业:imho提供最高性能,易于实现(我使用Spring将本地接口公开为远程接口);缺点:序列化在不同的jvm版本之间不起作用

二进制序列化(例如来自jetty的hessian) - 优点:与java序列化相同的性能,可在不同的jvm版本之间工作

WS:只有在不同平台java + .net之间需要互操作性时,否则它只是太重了。

答案 4 :(得分:1)

RMI是一种快速发展的快速传输方式,但我建议不要在生产环境中使用它。序列化兼容性问题可能会使事情变得尴尬,您必须非常小心地协调部署。

Web服务效率低下,是的,但只是通过它的硬件。或者,使用简单,轻量级的XML-over-HTTP,而不是全脂SOAP / WSDL。