原文地址:藍精靈——默默爭上游
筆記:
SOAP和REST是兩種實現WebService的主要方案(Web API部署REST貌似占了大半壁江山)Java開發WebService最重要的兩個規范:
- REST Web Services 基於 HTTP 協議
- SOAP Web Services 支持多種傳輸協議:HTTP、SMTP、MIME等
REST與SOAP的區別:
- JSR-224 (JAX-WS:Java API for XML-Based Web Services ) ,主要使用soap協議,使用wsdl來描述;
- JSR-311 (JAX-RS:The Java API for RESTful Web Services),使用wadl描述;
尺長寸短:
- REST為每一個資源指定一個唯一的URI,用HTTP的4種方法發送請求:GET、POST、PUT、DELETE直觀地表示獲取、創建、更新和刪除。
- SOAP僅僅使用POST方法發送請求,用一個唯一的URI標識服務的入口。(因為SOAP並不假定傳輸數據的下層協議,因此必須設計為能在各種協議上運行。即使絕大多數SOAP是運行在HTTP上,使用URI標識服務。這種設計被詬病之處,在於DELETE操作也要用POST方法來發送,而其實HTTP協議有更和邏輯的DELETE方法可用。)
REST的優點:REST簡單而直觀,把HTTP協議利用到了極限。
SOAP:復雜的需求摧殘了易用性。
說到底,沒有誰是萬能的
- REST用WADL來描述REST接口。WADL就像是WSDL的REST版,隨着REST被應用到復雜的領域,SOAP的影子無處不在。
- 事實上,一些Web Service提供者提供的REST API只有REST的外殼,傳輸的請求和應答全然是簡化了的SOAP。
“沒有一項技術能一勞永逸地解決所有問題,只需要在預定的約束下優美地解決所在領域的問題就足夠了。
一項新技術推出的時候總是引來無數的跟風和吹捧,只有當塵埃落定之后才能得到中肯的評價。”