您如何比较 Java RPC 与 Java Web 服务。我对 Web 服务有一点动手经验。现在我需要知道 RPC 与 Web 服务的比较。RPC 是如何工作的?
补充:我们什么时候选择其中一个选项?
您如何比较 Java RPC 与 Java Web 服务。我对 Web 服务有一点动手经验。现在我需要知道 RPC 与 Web 服务的比较。RPC 是如何工作的?
补充:我们什么时候选择其中一个选项?
正如 Daff 所说,Java RMI 本身实际上只与 Java-to_Java 通信有关。如今,就开发的便利性而言,从服务提供商的角度来看,编码程度非常相似。
然而,除了性能问题之外,WebServices 和 RMI 之间的差距是相当多变的(对于某些消息大小,差异可以忽略不计),还有另一个方面需要考虑:弹性。
通常,当一个客户端与一台服务器通信时,RMI 很容易设置,并且您不介意客户端与单个服务器的可用性耦合。服务器宕机,客户端宕机,这就是生活。
在 Web 服务案例中,您可以很容易地将服务部署到服务器集群,并且假设您正在通过 HTTP 调用 Web 服务,您可以轻松利用大型网站中使用的所有正常网络路由和喷射技术。服务器或客户端不需要特殊编码。
现在,您可以使用 RMI 获得相同级别的弹性,但这需要稍微更好的服务供应基础架构,这就是 Java EE EJB 编程模型(或 Spring 等框架)发挥作用的地方。EJB 使用 RMI over IIOP,该协议允许弹性调用服务器实例,透明地处理服务器中断。[它还可以做更多的事情,例如安全和交易,但 Web 服务也可以。很有趣,但不是本次讨论的一部分。]
底线:对于生产质量服务提供,我通常从创建服务对象开始。我碰巧使用 Java EE EJB 3,其他人使用 Spring。您可以通过一些非常简单的配置/注释将该服务对象公开为 Web 服务或 RMI/IIOP。选择其中一个或两者都非常简单。我的世界恰好主要关注互操作,所以我倾向于公开 Web 服务。如果您只考虑 Java,则使用 RMI/IIOP 可能会提高性能,但这不能保证,您需要测量性能以确定。
我的猜测是,您的意思是带有 Java RPC 的RMI 。远程方法调用是非常特定于 Java 的,因此很容易在本机 Java 程序中处理(双方都是 Java)。它使用二进制格式来传输数据并且不通过 HTTP 运行,因此它可能比 web 服务解决方案更快。
另一方面,Web 服务(通常)使用 XML 或 JSON 等通用格式,任何其他远程应用程序都可以请求和读取这些格式。开销更大(发出 http 请求并序列化/反序列化数据),但使用 Web 服务的客户端并不关心 Web 服务如何生成该数据,并且只要它在指定格式。
因此,您要使用哪种技术取决于是否可能有 Java 以外的客户端想要使用您的服务。
如果您正在查看 RPC 与 Document web-services,这个问题和答案可能就是您正在寻找的。
我可以解释它,但是当有人讨论时,用代码示例来查看,相比之下,我的反应就显得苍白无力。
此外,我不确定您在问什么,我认为术语可能是这里的问题。
RPC 仅在两端使用相同平台时使用 EJB 仅用于 Java。
问:如果任何非 Java 应用程序想要访问我的服务怎么办?
A:这就是引入 Web 服务的地方 Web 服务也可以是非 Java 的,也可以用于同步和异步通信