[英]What are the pros and cons of Web Services and RMI in a Java-only environment?
在开发同一家公司用Java编写的分布式应用程序时,您会选择Web服务还是RMI? 在性能,松散耦合,易用性方面,有哪些优点和缺点? 有人会选择WS吗? 你能用RMI构建面向服务的架构吗?
我试着这样思考:
您是否打算在彼此之下运行独立服务,这些服务可能会在未来的某个时间被非Java应用程序访问? 然后去寻找网络服务。
您是否只想在多个服务器上传播应用程序的一部分(请注意单数)? 然后转到RMI,您将不必离开Java Universe以使所有内容紧密耦合在一起。
我会选择WS。
而且......我很可能会选择REST服务。
如果你不需要它(与非Java互操作),你可能不是,RMI会更好; 代码更少,配置更少,带宽开销更少。
如果你害怕你将需要它是一个选项它是使用EJB3; 它使用RMI,非常易于设置和部署,但如果您需要,还可以让您轻松将呼叫转换为Web服务。
无论你做什么,都不要创造自己的东西; 坚持标准。
我的选择是:
标准的java序列化 - 专业:imho提供最高性能,易于实现(我使用Spring将本地接口公开为远程接口); 缺点:序列化在不同的jvm版本之间不起作用
二进制序列化(例如来自jetty的hessian) - 优点:与java序列化相同的性能,可在不同的jvm版本之间工作
WS:只有在不同平台java + .net之间需要互操作性时才需要,否则它只是太重了。
RMI是一种快速发展的快速交通工具,但我建议不要在生产环境中使用它。 序列化兼容性问题可能会使事情变得尴尬,您必须非常小心地协调部署。
Web服务是低效的,是的,但只是通过它的硬件。 或者,使用简单,轻量级的XML-over-HTTP,而不是全脂SOAP / WSDL。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.