RPC 和 Web Service 有什么区别?
RPC vs Web Service
使用 SOAP 协议创建 Web Service 需要使用两个备选方案:文档型 SOAP 协议或者 RPC SOAP 消息协议。RPC 指的是远程过程调用,它是一种协议,指定的程序通过它可以去请求指定的位于另一台远程主机上的另一个应用中的服务。在使用 RPC 的时候,无需去了解该应用的网络细节。一个指定的过程调用指的是作为子程序调用甚至函数调用。在使用 RPC 的时候,容易对客户/服务模型过度使用。请求一个服务去执行的应用是在客户端,而提供指定应用执行的计算机称为服务端。RPC 操作可以被称为同步操作,因为它需要一个应用,该应用请求的操作会一直阻塞直到远程过程返回结果。在多个操作在等待的时候要确保设备处理每个请求不会花费过多时间,RPC 允许多个共享同一个指定地址的线程同时处理,因此可以在它们处理结束的时候给出应答,而不是串行的 - 一个操作必须结束了以后下一个才能开始。
使用 SOAP 控件创建的 Web Service 可以遵循 RPC 或文档消息格式。文档格式可以指定特定的 .xml 文档,以对给定的 XML 图表进行验证。对于 Java,RPC 被应用于 EJB 之类的平台之间的通信,因为这些应用都是用 Java 写的。而 Web Service,则主要应用于跨语言的应用的通信。
RPC 和 Web Service 之间的性能差距是很大的,尽管有些场景下考虑到恢复力它们的差别并不是很明显。RPC 带来了一个拥挤的服务器环境的挑战,这使得你很难进行多个客户端的工作。
另外,Web Service 允许多个服务部署,只要求 Web Service 是通过 HTTP 调用即可。这使得正常的网络发散和路由技术都要采用大型网站。同样需要注意的是,Web Service 的服务器端乃至客户端都不依赖于任何特殊编码。
可以对 RPC 和 Web Service 的恢复力进行公平比较,但需要注意的是 RPC 需要使用调停者才能达到预期效果。这就是 EE EJB 以及各种类似于 Spring 的框架发挥作用的时候了。为了提供最好的服务,最好是引入 RPC 环境之前就开始 Java EE EJB。
总结
- RPC 指的是远程过程调用。
- client/server 模型的使用较多的时候推荐使用 RPC。
- RPC 允许共享指定地址的多个线程的同时处理。
- RPC 部署于使用 EJB 的平台。
- Web Service 应用于跨语言调用的场合。
- Web Service 还应用于异步通信的同步操作。
作者简介:Differencebetween.net 网站 "Protocols & Formats" 频道。
Differencebetween.net 不仅仅会帮你去理解一个主题,还能让你弄清楚两个类似话题之间的区别。该网站为你提供各种主题的实时信息。话题涉猎 "商业" 到 "技术" 等不同种类。他们将每个主题的多个可靠资源编辑并统一到一个页面上,读者可以藉此轻松快速搜集到充足感兴趣的信息。如果你对他们的内容有相关建议可以通过他们的联系邮箱 contact@differencebetween.net 进行反馈。