RPC, SOAP, WSDL的關係

RPC, SOAP, WSDL都是web service的關鍵詞,這裏描述一下他們的關係,下面的解釋可能比較狹義,主要爲了幫助理解這三者的關係。

 

1.RPC
如果要調用遠端的一個方法,可以使用RMI和RPC,這是2種截然不同的風格。
RMI: (Remote Method Invocation) 直接獲取遠端方法的簽名,進行調用。優點是強類型、編譯期可檢查錯誤;缺點是只限於java語言
RPC: (Remote Procedure Call) 採用客戶端/服務器方式(請求/響應),發送請求到服務器端,服務端執行方法後返回結果。優點是跨語言跨平臺,缺點是編譯期無法排錯,只能在運行時檢查。

 

2.SOAP
爲了包裝RPC的請求信息,推出了XML-RPC,但XML-RPC只能使用有限的數據類型種類和一些簡單的數據結構。於是就出現了SOAP(Simple Object Access Protocol)。SOAP最主要的工作是使用標準的XML描述了RPC的請求信息(URI/類/方法/參數/返回值)。理論上,SOAP就是一段xml,你可以通過http,smtp等發送它(複製到軟盤上,叫快遞公司送去也行?)。同樣SOAP也是跨語言的。

 

3.WSDL
WSDL(Web Services Description Language)是描述web服務的,是描述怎樣訪問web服務的。WSDL是用來描述SOAP的,換句話說,WSDL 文件告訴你調用 SOAP 所需要知道的一切。WSDL也是一段xml。現在各個語言對wsdl的支持都很成熟,可以根據同一份wsdl文件生成自己語言的客戶端。

 

4.其它
簡單的說Apache Axis是Apache Soap3.0,前面說過,RPC不能在編譯期進行檢查。而使用AXIS根據WSDL生成的客戶端,卻可以避免這個問題。使用SOAP的客戶端時,全都用字符串來指定URI/服務名/方法/參數等。而AXIS生成的客戶端將這些都封裝了起來,它根據WSDL的描述生成調用接口,方便客戶端開發。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章