在开发分布式应用程序时,同一家公司用Java编写,您会选择Web服务还是RMI?在性能,松散耦合,易用性方面,有哪些优点和缺点?有人会选择WS吗?你能用RMI构建面向服务的架构吗?
答案 0 :(得分:9)
我会尝试这样思考:
您是否打算在彼此之下运行独立服务,这些服务可能会在未来的某个时间被非Java应用程序访问?然后去寻找网络服务。
您是否只想在多台服务器上传播应用程序的一部分(请注意单数)?然后转到RMI,您将不必离开Java Universe以使所有内容紧密耦合在一起。
答案 1 :(得分:6)
我会选择WS。
而且......我很可能会选择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。