辨析Web Service, SOAP, REST, OData之間的關係與區別

最近發現,對於剛剛接觸HTTP服務的同學,在一些基礎概念上容易混亂。很多同學搞不清楚Web Service,SOAP,REST以及OData這些技術之間的關係與區別。

文本會盡量用最簡潔的方式,解釋這幾個概念,並附上一些資料的鏈接,供有需要的同學進一步閱讀。

 

1. 關係說明

首先,開宗明義,讓我們先明白這幾者的關係:

Web Service:一種跨編程語言、跨操作系統平臺的遠程調用技術。這個很好理解,Web Service主要可以實現不同系統之間的通信。如果以SAP系統爲例,通過Web Service可以實現兩個不同的SAP系統之間,或SAP系統與其它第三方系統(例如,可以是.Net或Java平臺的應用)間進行通信。

Web Service有兩種實現方式,一種是SOAP協議方式,一種是REST方式。

REST是一組架構約束條件和原則,描述了一種如何訪問/使用HTTP服務的方式。(如果一個架構符合REST的約束條件和原則,我們就稱它爲RESTful架構。)

OData是REST設計風格的一種實現,OData和其他Restful風格的Web service在於,OData提供了了描述數據和數據模型的一個統一的方式。所以說,OData並非是一種新的通信技術,OData也屬於Web Service。

2. 概念辨析

2.1 SOAP方式的Web Service

目前而言,SOAP是一套Web Service(WS)的比較完整的實現方案。

在以SOAP方式實現的Web Service中,SOAP協議和WSDL構成了Web服務的結構單元。

SOAP也即“簡單對象訪問協議(Simple Object Access Protocol)”,我們知道Web Service通過HTTP協議發送和接收數據,SOAP協議中增加了一些特定的HTTP消息頭,來說明HTTP消息的內容格式。客戶端按照SOAP的格式便可以通過Web Service調用位於遠程系統上的服務。

WSDL也即“Web服務描述語言(Web Services Description Language)”,客戶端可以通過WSDL瞭解這個Web Service所提供的功能,描述了Web Service中提供的函數、函數的輸入參數和返回值。

簡而言之,在SOAP方式實現的Web Service中,SOAP描述了“訪問方式”,通過WSDL描述了“服務內容”,SOAP方式的Web Service是WS的一套完整的實現方案。

2.2 SAP系統中的SOAP方式Web Service

在SAP系統中,開發和消費SOAP方式的Web Service十分方便。

在SAP Netweaver平臺上通過UDDI工具,可以將SAP已有的功能(例如RFC, BAPI等)直接封裝成web service對象,供其他系統調用,或者通過實現類調用其他系統的web service,進而輕鬆實現SAP與其它系統的集成。

完成這一Web Service封裝和消費,在SAP系統中主要通過T-code 'SOAMANAGER' 完成,對於ABAP開發人員而言,並不需要了解Web Service的封裝細節,只要學會如何“發佈”和“消費”web service即可。

2.3 REST方式的Web Service - OData

REST也即“表述性狀態轉移(Representational State Transfer)”,REST是一種HTTP服務的設計風格,描述了一套如何設計和訪問HTTP服務的原則。

因此,相較於SOAP,REST並非是一個協議,僅是一種設計風格,並沒有強制的約束力。

不同的設計者可以依據自己的實際項目和需求,設計REST風格的Web Service,也正是由於這種“各自爲戰”的Web Service實現方式,讓REST方式的web service在性能和可用性上通常會優於依據SOAP發佈的web service, 但由於在細節上沒有太多約束,其統一性上不及SOAP。

OData是REST設計風格的一種實現,OData和其他Restful風格的Web service在於,OData提供了了描述數據和數據模型的一個統一的方式

因此,在一定程度上講,OData方式的web service很好地解決了RESTful形式的Web Service在統一性上所面臨的問題。

2.4 SAP系統中的OData

在SAP系統中,通過Gateway統一管理SAP 系統中的OData服務。

SAP Gateway是SAP Netweaver平臺上的一個組件,用於集中管理OData相關的功能,實現SAP系統與外部設備、平臺、應用的集成。我們可以通過SAP Gateway來創建併發布相應的OData服務。

在SAP系統中,創建OData服務的事務代碼爲SEGW

通過SEGW,我們可將SAP系統內的數據庫表、RFC等以OData的形式發佈出去,供Web App使用。

因此,類似於SOAP形式的web service, 對於ABAP開發人員而言,並不需要了解Odata的封裝細節,學會使用SEGW這個工具即可。此外,在SAP Fiori開發過程中,除了從backend發佈OData服務,開發人員也可以直接將CDS發佈OData服務。

3. 小結

SOAP和REST是Web Service實現的兩種方式,各具特點,沒有“那種形式的好,那種形式的不好”這一說。選取那種方式的Web Service主要取決於具體的場景和需求。只要能清晰、高效地解決問題的方案就是好方案。

目前在SAP系統中,SOAP形式的Web Service更多應用於系統間的集成,OData則廣泛應用於Fiori應用程序開發中。

最後,分享一些鏈接,感興趣的同學可通過以下鏈接獲取閱讀相關的資料。

1. RESTful架構詳解:https://www.runoob.com/w3cnote/restful-architecture.html

2  Web service概念(SOAP): https://www.cnblogs.com/xdp-gacl/p/4048937.html

3. SAP Gateway與OData用法簡介:https://blog.csdn.net/nkGavinGuo/article/details/90295406

4. SAP Web Service簡介與配置方法:https://www.cnblogs.com/zohoo/p/7295920.html

5. OData在線幫助文檔:https://www.odata.org/documentation/odata-version-3-0/odata-version-3-0-core-protocol/#overview

 

持續更新SAP領域優質文章,歡迎關注❤️、點贊👍、轉發📣!

 

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