2012-02-15 109 views
1

最近,我不得不編寫10行.NET代碼來調用REST Web服務。這是非常常規和日常的代碼,所以不是一個問題。但是,這讓我想知道,對於需要編寫幾個方法來調用的REST Web服務,有什麼好處,而不是像WCF Web服務那樣,您只需添加服務引用並具有「API感覺」(即類/方法等)。REST Web服務的好處是什麼?

謝謝

回答

1

REST使用HTTP本身作爲API;它比其他任何東西都更具風格。熟悉HTTP的人會立即理解設計良好的服務。沒有涉及WSDL或SOAP或XML。

我認爲它更輕。這對客戶來說肯定更容易,因爲他們不需要SOAP客戶端。一個簡單的HTTP連接就可以做到。

好處有比客戶更多的事情比開發商。

2

它也擁有更加開放的奢華。任何可以編寫的人都可以創建一個鏈接來創建REST API。我想不出任何更容易獲得的東西。

2

REST和SOAP在不同情況下都很棒。我不確定你試圖打電話的服務的性質以及服務的位置,但有時候人們說使用通過互聯網的RESTful服務,並且在公司內部使用基於SOAP的服務。

你提到:

WCF的Web服務,你只需要添加一個服務引用,並有一個 「API感覺」

假設你的意思是基於SOAP的服務,你說的情況對於VS用戶來說也是如此。如果您嘗試使用Apple的XCode訪問服務,該怎麼辦?看看this question,看看需要多少代碼來替換VS爲你在XCode中生成的Stubs

另外通常 RESTful的消息比SOAP消息(看this),這使得它們更有效,當帶寬是一個問題(例如,移動電話)的輕量化。

因此,當考慮您正在使用的服務的所有方面時,您將更好地理解爲什麼使用REST或SOAP。

1

您正在使用.Net工具來處理SOAP服務。假設您使用的是移動設備,瀏覽器或大型機。那麼這個SOAP服務將會變得更加龐大而且可能很難實現。 REST與HTTP密切相關,幾乎所有的技術堆棧都支持它,因此它能夠接觸儘可能多的客戶端。這就是爲什麼在我決定SOAP和REST之間時,我問自己誰會消費這個。如果它只是少數的.Net或其他複雜的客戶端,那麼SOAP可能沒問題,如果我需要最大的覆蓋範圍,那麼REST是一個更好的選擇。

1

因爲REST按照它的設計方式使用HTTP,所以您可以在幾乎任何平臺和任何語言上開發客戶端。實現服務器也是一樣。據認爲,許多網站已經是RESTfull。您不必瞭解所有WS- *的內容,以便能夠使用API​​。你可以使用類似cURL的東西來與REST服務進行交互。使用SOAP它要複雜得多。

REST還支持自定義內容類型,因此可以在同一個URL上執行GET(說http://example.com/customers),並通過簡單地更改標頭獲取XML,JSON,CSV或XLS響應。這取決於當然的服務實施。有些人在http://example.com/customers.xmlhttp://example.com/customers.xls這個URL上加了一個擴展名,以達到同樣的效果。但底線是您可以直接將流保存到磁盤並使用它。當您將信息發送到服務器時也是如此。您可以將它以原始格式作爲XML,JSON,CSV,XLS發送。 SOAP限制了您傳輸數據的方式和格式。

一個體面的RESTfull服務也是可導航的,這意味着對另一個資源的引用僅僅是我可以訪問的鏈接(類似於HTML)。使用SOAP幾乎不可能。

SOAP安全性可能變成一個複雜的野獸。使用REST服務,簡單的HTTP身份驗證可能已足夠,或者您可以使用OAuth和Open ID 2.0。

隨着REST可能有更小的有效載荷。這對移動環境和這些應用程序的整體性能非常有用。

如果您通過API獲利,您會發現支持API並使您的API可用於最多數量的客戶端更爲簡單。我們銷售了基於SOAP服務的產品,並且由於WCF實現SOAP的方式的複雜性以及缺乏支持(通過一些JAVA框架),我們發現它支持起來相當痛苦。

也就是說,REST服務的開發人員確實是真正開放,輕量,簡單且易於使用的。有效載荷和URL需要記錄得相當好。 WSDL爲SOAP做了這些工作,並幫助達成了一些目標。

0

soap數據格式是XML。它的有效載荷大小比Json大得多。你可以谷歌進行性能測試比較B/W JSON和XML。休息不對數據格式施加限制。所有類型的客戶端都可以輕鬆地使用休息。無論是.net客戶端還是運行在瀏覽器中的JavaScript。你也可以從JavaScript調用SOAP服務,但它很單調乏味。 最後我們都想成爲牧羣的一部分:-)