比较Java RPC与Web服务

时间:2009-08-29 08:27:29

标签: java web-services rpc

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

添加:我们什么时候选择其中一个选项?

4 个答案:

答案 0 :(得分:7)

正如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可能会提高性能,但这不能保证,您需要测量性能以确保。

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

如果您正在查看RPC与文档Web服务,那么这个问题和答案可能正是您所寻找的。

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

我可以解释一下,但是当有人通过代码示例进行讨论时,我的回答会比较苍白。

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

答案 3 :(得分:0)

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

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

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