【问题标题】:Compare Java RPC vs WebServices比较 Java RPC 与 WebServices
【发布时间】:2010-11-23 23:08:42
【问题描述】:

您如何比较 Java RPC 与 Java Web 服务。我对 Web 服务有一点动手经验。现在我需要知道 RPC 与 Web 服务的比较。 RPC 是如何工作的?

补充:我们什么时候选择其中一个选项?

【问题讨论】:

  • 您的意思是 RMI 与 Web 服务吗? RPC 是一种独立于语言的解决方案。我对使用 RPC(不是 RMI/REST/等)的 Java 感兴趣,但这可能不是您的意思。

标签: java web-services rpc


【解决方案1】:

正如 Daff 所说,Java RMI 本身实际上只与 Java-to_Java 通信有关。如今,就开发的便利性而言,从服务提供商的角度来看,编码程度非常相似。

但是,除了性能问题之外,WebServices 和 RMI 之间的差距变化很大(对于某些消息大小,差异可以忽略不计),还有另一个方面需要考虑:弹性。

通常,当一个客户端与一台服务器通信时,RMI 很容易设置,并且您不介意客户端与单个服务器的可用性耦合。服务器宕机,客户端宕机,这就是生活。

在 Web 服务案例中,您可以很容易地将服务部署到服务器集群,并且由于您正在通过 HTTP 调用 Web 服务,您可以轻松利用大型 Web 中使用的所有正常网络路由和喷射技术网站。服务器或客户端无需特殊编码。

现在,您可以使用 RMI 获得相同级别的弹性,但这需要稍微更好的服务供应基础架构,这就是 Java EE EJB 编程模型(或 Spring 等框架)发挥作用的地方。 EJB 使用 RMI over IIOP,该协议允许弹性调用服务器实例,透明地处理服务器中断。 [它还可以做更多的事情,例如安全和交易,但 Web 服务也可以。很有趣,但不是本次讨论的一部分。]

底线:对于生产质量服务提供,我通常从创建服务对象开始。我碰巧使用 Java EE EJB 3,其他人使用 Spring。您可以通过一些非常简单的配置/注释将该服务对象公开为 Web 服务或 RMI/IIOP。选择其中一个或两者都非常简单。我的世界恰好主要关注互操作,所以我倾向于公开 Web 服务。如果您只考虑 Java,则使用 RMI/IIOP 可能会带来一些性能改进,但这并不能保证,您需要测量性能才能确定。

【讨论】:

    【解决方案2】:

    我的猜测是,您的意思是 RMI 使用 Java RPC。远程方法调用是非常特定于 Java 的,因此很容易在本机 Java 程序中处理(双方都是 Java)。它使用二进制格式传输数据并且不通过 HTTP 运行,因此它可能比 webservice 解决方案更快。

    另一方面,Web 服务(通常)使用 XML 或 JSON 等通用格式,任何其他远程应用程序都可以请求和读取这些格式。开销更大(发出 http 请求并序列化/反序列化数据),但使用 Web 服务的客户端并不关心 Web 服务如何生成该数据,并且只要它在指定格式。

    因此,您要使用哪种技术取决于是否可能有 Java 以外的客户端想要使用您的服务。

    【讨论】:

      【解决方案3】:

      如果您正在研究 RPC 与 Document Web 服务,这个问题和答案可能就是您想要的。

      http://www.coderanch.com/t/443021/Web-Services-Certification-SCDJWS/certification/Difference-between-RPC-Document-web#1971102

      我可以解释一下,但是当有人讨论时,有代码示例可以查看,相比之下,我的反应就显得苍白了。

      此外,我不确定您在问什么,我认为术语可能是这里的问题。

      【讨论】:

        【解决方案4】:

        RPC 仅在两端使用相同平台时使用 EJB 仅用于 Java。

        问:如果任何非 Java 应用想要访问我的服务怎么办?

        答:这就是引入 Web 服务的地方 Web 服务也可以是非 Java 的 也用于同步和异步通信

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-08-23
          • 2016-10-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-05-05
          • 2015-10-22
          相关资源
          最近更新 更多