11

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

4

5 回答 5

9

我会试着这样想:

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

您是否只想将应用程序的一部分(注意单数)分布在多个服务器上?然后选择 RMI,您不必离开 Java 世界就能让一切紧密耦合在一起工作。

于 2008-09-23T13:04:56.417 回答
6

我会选择WS。

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

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

于 2008-09-23T13:24:03.280 回答
2

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

如果你害怕你会需要它,一个选择是使用 EJB3;它使用 RMI,非常易于设置和部署,但如果需要,还允许您轻松地将调用转换为 Web 服务。

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

于 2008-09-23T18:28:57.760 回答
1

我的选择是:

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

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

WS:只有在不同平台 java + .net 之间需要互操作时才需要,否则就太有分量了。

于 2008-09-23T13:42:58.383 回答
1

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

WebServices 是低效的,是的,但只是通过它的硬件。或者,使用普通的、轻量级的 XML-over-HTTP,而不是全脂 SOAP/WSDL。

于 2008-09-23T16:57:40.227 回答