2011-06-17 74 views
4

可能重複:
What is the point in a WSDL with a rest based service?REST不是一個標準的「Per-Se」,那麼爲什麼WCF創建一個wsdl,有什麼意義,它比SOAP差嗎?

我必須決定是否實施SOAP或基於REST的架構,我們的API。由於其簡單的設計模式和相對易於測試的特性(例如通過所有GET請求的瀏覽器),我被引入REST。

但是我被告知,因爲SOAP比REST更標準化,所以它更適合面向服務的體系結構,因此更好。

我可以看到邏輯這種說法,但我也看到..

  1. HTTP是標準
  2. 的文件JSON和XML是非常標準
  3. 我的REST Web服務創建一個WSDL。

真的,它的第3點似乎讓我困惑,如果REST是如此'不標準'那麼爲什麼它會創建一個WSDL?一個SOAP接口創建一個WSDL。這兩個WSDL都可以改變(如果服務發生變化),最終有什麼區別?

我真的不需要現在或最有可能的任何日期實現WS *功能。能夠從我們自己的ajax控件調用這個API也是有益的。並且讓人們能夠從ajax調用它。似乎我認爲REST是前進的方向,但是需要真正檢查。

希望有人能幫忙。

+0

嗨可能,但也許我應該重新措辭我的問題我沒有得到我想要的答案請看起來我的評論如下。我很高興結束這個問題,雖然對於混亂感到抱歉。 – Exitos

+0

我已經完全停止使用WCF服務,除非我需要消息簽名(從來沒有)。我使用MVC3控制器作爲REST服務。如果你發佈了一項休息服務,你必須必須遵守http://semver.org,否則你的客戶會想要從你身上殺死你,並隨時引入重大變化。 –

回答

4

您是否已在您的previous question中閱讀過答案? WCF將爲您的REST服務生成WSDL,但從該WSDL生成的客戶端無法正常工作,並且無法正常工作,因爲WSDL沒有正確描述您的服務。在.NET 4中,如果嘗試在WcfTestClient中打開暴露REST端點的服務,則會忽略這些端點,因爲它明白它不能調用它們。爲了描述REST服務,WCF 4提供了help page

SOAP是標準的,但REST是架構方法。有時候會說當你想讓公共消費者(尤其是移動設備)和SOAP服務用於內部和B2B開發時使用REST服務,但這不是事實。

SOAP基本上是面向操作的。你有一個服務,提供儘可能多的操作,只要你想。基本的SOAP只使用HTTP POST和衆所周知的內容類型。在REST中,您擁有儘可能多的資源,但您的操作集有限 - HTTP動詞。此外,您可以公開許多內容類型的資源。真正的REST服務是自我描述性的,因爲資源可以鏈接其他資源,並且您可以通過類似於超文本導航的方式瀏覽鏈接。

使用SOAP服務時,您有一個談話協議。在使用REST服務時,內容本身就是一個僅爲服務需求而定義的「協議」。

這裏的問題是當前的WCF工廠REST在爲SOAP服務創建的基礎架構上的功能。擁有統一的API很好,但它模糊了這兩種方法之間的差異。

+0

嗨,是的,我看到即時通訊問相同的問題(以不同的方式)。道歉,但我真正想要評估的是基於c#的系統和基於java的系統(或任何其他技術)之間的相互關係。這就是說,如果c#不能使用wsdl,爲什麼它會生成它?如果它不能被使用,那麼我該如何指導'未經洗刷的羣衆'與我的基於REST的服務進行溝通? – Exitos

+0

我認爲您的困惑是基於您嘗試構建REST服務的事實,但您是以SOAP方式進行的。如果你想看看REST應該如何工作,請檢查例如任何提要(Atom,RSS)。如果您以XML格式打開Feed,則會看到它實際上是具有導航鏈接到其他資源的資源。 AtomPub允許瀏覽和操作資源,它是OData協議的基礎,用於通過REST服務公開數據。 –

+0

嗨拉迪斯拉夫,好吧我即將發佈關於互連性的一個不同的問題,我認爲這將脫離主題,否則。到目前爲止,我尊重你的意見。 – Exitos

相關問題