2010-09-21 97 views
88

什麼是WSDL?它與SOAP有什麼關係? REST適合所有這些?什麼是WSDL,SOAP和REST?

+2

你在找什麼樣的「例子」?正如我所說,你可以得到一個「簡單」的例子並不是一件簡單的事情。 – 2010-09-21 22:11:46

回答

113

WSDL是描述Web服務的XML文檔。它實際上代表Web服務定義語言。

SOAP是一種基於XML的協議,可讓您在應用程序之間通過特定協議(例如HTTP或SMTP)交換信息。它代表簡單對象訪問協議(Simple Object Access Protocol),並使用XML作爲消息格式來傳遞信息。

REST是網絡系統的體系結構風格,代表具象狀態傳輸。它本身並不是一個標準,但確實使用了諸如HTTP,URL,XML等標準。

+3

我的意思是把SMTP或HTTP作爲可用於SOAP的協議的示例。我並不打算這意味着HTTP是唯一可以使用的協議(只是將其用作示例)。 – 2010-09-21 22:10:28

+0

添加它,所有更好:-) – 2010-09-21 22:16:10

+4

具象狀態傳輸(REST)是一種體系結構風格,它指定約束(如統一接口),如果應用於Web服務會導致所需的屬性,如性能,可伸縮性和可修改性,使服務能夠在Web上發揮最佳效果。在REST風格中,數據和功能被視爲資源,並使用統一資源標識符(URI)進行訪問。通過使用一組簡單的,定義明確的操作來執行資源操作。它遵循客戶端/服務器體系結構,旨在使用無狀態通信協議(通常是HTTP)。 – kingAm 2015-06-03 12:20:13

9

SOAP代表簡單(sic)對象訪問協議。它旨在通過通過HTTP發送XML來實現對遠程對象的遠程過程調用。

WSDL是Web服務描述語言。以'.wsdl'結尾到端點的請求將導致描述用戶可能期望的請求和響應的XML消息。它描述了服務&客戶之間的合同。

REST使用HTTP將消息發送到服務。

SOAP是一個規範,REST是一種風格。

+2

-1:對不起,但我不同意將SOAP與RPC關聯。消息類服務呢?另外,沒有標準說明以.wsdl結尾的請求或?wsdl將生成WSDL。 – 2010-09-21 21:44:16

+4

你是說你不能用SOAP做RPC?我知道這可能不包括整個標準,但它當然是最初的動機。至於WSDL URL是否是標準的一部分,我承認你有我。這通常是我看到它完成的方式,但我不能在標準中強調任何內容。 – duffymo 2010-09-21 22:50:32

+0

您可能一直在混淆SOAP是從XML-RPC派生出來的這一事實,以及SOAP最初打算用作RPC的想法。但請注意,從一開始,WSDL除了能夠描述RPC風格的服務外,還能夠描述文檔風格的服務。如果RPC是SOAP和WSDL背後的最初動機,那麼人們會認爲原始標準中缺少文檔樣式的服務。 – 2011-07-23 22:35:54

7

你不會「簡單地」理解複雜的東西。

WSDL是一種用於描述Web服務的基於XML的語言。它描述了服務使用的消息,操作和網絡傳輸信息。這些Web服務通常使用SOAP,但可以使用其他協議。

WSDL可由程序讀取,因此可用於生成調用Web服務所需的全部或部分客戶端代碼。這就是調用基於SOAP的Web服務「自我描述」的含義。

REST根本與WSDL無關。

4

Wikipedia說:「Web服務描述語言是一種基於XML的語言,提供描述Web服務的模型。換句話說,WSDL是一個Web服務,因爲javadoc是一個Java庫。

雖然WSDL真的很甜蜜,但軟件可以使用WSDL生成客戶端和服務器。

+0

與javadoc比較幫助,歡呼聲。 – Andrejs 2016-05-25 12:48:30

28

每當有人提到SOAP/WSDL,我覺得在XML定義的對象和類的......

「你使用SOAP一樣的方式,你將任何PHP類。然而,在這個如果該類不在本地應用程序文件系統中,但在通過http訪問的遠程站點上「。 ... 「如果我們想使用SOAP服務只是另一種PHP類的,則WSDL文檔的所有可用類的方法和屬性的列表。」

http://www.doublehops.com/2009/07/07/quick-tutorial-on-getting-started-with-soap-in-php/comment-page-1/

..並且每當有人談論REST時,我會想到HTTP的命令(請求方法),如POST,GET和DELETE

2

REST是重量輕的在編碼方面,更加有用輕重量裝置即非嚴格的API。

REST與格式無關。 XML,HTML,JSON所有選項都可用。

由於WSDL/SOAP交互是多點消息交互,因此REST爲2點消息傳輸提供了能力(因爲REST代表了REpresentational State Transfer,這並不令人意外)。

REST不需要XML消息的新擴展,在WSDL/SOAP中就是這種情況。

WSDL/SOAP使用多種傳輸協議,REST僅依賴於HTTP。因此WSDL/SOAP可以像RESTful一樣使用,但是簡單的請求可能過於複雜/過重。

一個簡單的比喻:REST就像一個motoboy,讓您的食物輕鬆快捷。 XML擴展WSDL/SOAP更像UPS的交付,更結構化和嚴肅的東西,但帶來了成本。

29

示例:簡單地說,如果您有計算器的Web服務。

WSDL:WSDL講述了您可以實現或向客戶端公開的功能。例如:添加,刪除,減去等。 SOAP:在使用SOAP時,您實際執行doDelete(),doSubtract(),doAdd()等操作。所以SOAP和WSDL是蘋果和桔子。我們不應該比較它們。他們都有自己的不同功能。

爲什麼我們使用SOAP和WSDL:用於與平臺無關的數據交換。

編輯:在正常的日常生活中的例子:

WSDL:當我們去餐廳吃飯,我們看到的菜單項,這些都是WSDL的。

代理類:現在看到的菜單項後,我們使我們的心靈(過程我們對什麼菜記):所以,基本上我們根據WSDL文檔代理類。

SOAP:然後,當我們根據菜單的實際命令食物:意義我們使用代理類來調用使用SOAP完成的服務方法。 :)

+0

喜歡這個答案! – realnsleo 2018-01-26 14:06:34

9

SOAP - > SOAP(簡單對象訪問協議)是爲機器對機器交互而創建的應用程序級協議。協議定義了標準規則。所有使用特定協議的參與方都應遵守協議規則。像TCP一樣,它在傳輸層展開,SOAP協議將被應用層(任何支持SOAP的應用程序 - Axis2,.Net)所理解。

WSDL - > SOAP消息由SoapEnevelope-> SoapHeader和SoapBody組成。它沒有定義什麼是消息格式?它支持的所有傳輸(HTTP,JMS)是什麼?沒有這些信息,任何想要使用特定Web服務的客戶端都很難構建SOAP消息。即使他們這樣做,他們也不會確定,它會一直工作。 WSDL是救援。 WSDL(Web服務描述語言)定義了SOAP消息的操作,消息格式和傳輸細節。

REST - > REST(具象狀態傳輸)基於傳輸。與定位動作的SOAP不同,REST更關注資源。 REST通過使用URL(示例-http:// {serverAddress}/employees/employeeNumber/12345)來查找資源,並且它取決於操作的傳輸協議(使用HTTP-GET,POST,PUT,DELETE等)在資源上執行。 REST服務根據URL定位資源並根據傳輸動作動詞執行動作。它更多是基於建築風格和慣例。

0

WSDL文檔描述了一個web服務。它指定服務的位置和所述服務的使用這些主要元素的方法:使用在每個操作 web服務 數據元素 數據類型描述可以執行並且消息envolved

SOAP操作(簡單對象訪問協議)是一種消息傳遞協議,它允許在不同操作系統上運行的程序使用http和xml進行通信。