天天看點

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 還應用于異步通信的同步操作。

原文連結:

​​Difference Between RPC and Web Service​​,釋出日期:2013 年 10 月 26 日。

作者簡介:Differencebetween.net 網站 "Protocols & Formats" 頻道。

Differencebetween.net 不僅僅會幫你去了解一個主題,還能讓你弄清楚兩個類似話題之間的差別。該網站為你提供各種主題的實時資訊。話題涉獵 "商業" 到 "技術" 等不同種類。他們将每個主題的多個可靠資源編輯并統一到一個頁面上,讀者可以藉此輕松快速搜集到充足感興趣的資訊。如果你對他們的内容有相關建議可以通過他們的聯系郵箱 [email protected] 進行回報。