您如何比较Java RPC与Java Web Services.我对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提高性能,但这不能保证,您需要测量性能以确保.