0

如果服务器和客户端都只是 Java,那么与 Axis2 实现的 SOAP 相比,RMI 会更有效(带宽和延迟)吗?我知道 RMI 在最近几年已经不受欢迎了,但这并不意味着它不能被使用。

那么 XML-RPC 呢?

4

1 回答 1

3

RMI 有一些有趣的特性并且相当快,但也有一些问题:

  1. 你必须确保你序列化的所有东西都实现了 Serializable。
  2. 您必须确保服务器和客户端具有完全相同版本的所有 Serializable 类,并且在完全相同的时间部署,并且您序列化的每个类(包括可序列化对象持有的字段)都正确使用 serialVersionUID。否则你将陷入痛苦的世界(阅读:“系列版本不匹配”)。
  3. 您必须确保您序列化的类不持有对最终持有对大对象的引用的对象的引用,否则您会对通过网络传输的数据包的大小感到非常惊讶。
  4. 如果您决定从除 Java 之外的任何方式访问该服务,您将不得不编写另一个远程访问层。
  5. 没有#5。

在实践中,这些天我几乎总是推荐 REST 服务。创建小型 Java 对象并使用 Gson 或 Jackson 或其他东西来来回编组数据非常容易,相比之下,RMI 的优势微乎其微。

于 2013-02-18T21:29:25.923 回答