2010-05-04 101 views
0

我正在設計一組Web服務,以允許我們的客戶從他們的應用程序連接到我們的系統之一。我們的客戶有各種框架開發的應用程序(.NET,Java,PHP,Python甚至偶爾的所有JS應用程序),所以顯然WS是要走的路。設計可互操作的Web服務

調查一下真正的interop WS我發現要走的路是首先設計WSDL和XSD並從那裏派生實現。

我真正想要的是指導,如果這真的是要走的路。我讀過WCF創建可互操作的WS,但我不是MS創建標準的粉絲。

我應該使用WCF還是有一套很好的工具來設計WSDL和XSD,而沒有我期待的痛苦。

在此先感謝

回答

1

如果您想與JavaScript進行互操作,那麼最好製作更多REST風格的API。這基本上只是標準的HTTP調用,所以你可以從一開始就進行互操作。然而,你已經表明你想要使用SOAP,所以...

如果你打算使用SOAP/WSDL,我肯定會提倡使用服務器平臺 - 是的,甚至是.NET - 來生成WSDL,然後簡單地檢查你正在使用的選項是否產生了良好的可互操作的WSDL。

我是一位Java開發人員,他擁有PHP & Perl的歷史,並且在硬幣兩端(作爲服務器和客戶端)與許多WS項目上的.Net互操作。通常有沒有大的問題 - 只是要小心兩件事的:

  • 某些專有元素MS 與開放標準混合英寸例如,對於 示例,他們可能會提供NTLM樣式的 身份驗證,在大多數使用情況下,它們確實不是 ,特別是在您使用SSL 證書時。
  • SOAP已經採取了一些 不同的形式多年來 (文檔/文字,RPC /編碼,...) 你可能會發現你並不需要 擔心這一點,因爲RPC /編碼 與舊框架死於一起,並 最現代的框架向 文件傾向於/文字
  • SOAP提供了一些 螺栓固定的標準(如MTOM &爲附件DIME 和SOAP,WS爲 認證)。儘量避免使用這些 螺栓,因爲不同的平臺 實現不同的子集。
  • 爲了安全起見,我建議使用SSL來 信任&保密,然後 使用HTTP基本身份驗證,或在您的SOAP請求定義簡單地定製 字符串標記。

只要保持WSDL儘可能小,儘量在這個過程中很早就互操作,而你不應該有太多的問題

0

WSDL和XSD是獨立的語言,你就必須有一些機制使用其他語言進行交流。對你來說好的事情是恕我直言的核心數據設計,所以你不需要太多的XSD用於相同的數據實體。

1

您可以使用WCF 契約優先發展。

如果互操作性是主要問題,那麼我會建議使用WCF提供服務實現,而不是依靠WCF生成服務接口,以使用契約優先開發來對接口建模。

關於如何開發這種方式的一篇非常好的文章是Schema-based Development with Windows Communication Foundation

如果您打算推出自己的WSDL和模式,您可能希望獲得像XmlSpy或LiquidXml這樣的編輯器。我喜歡LiquidXML的價格(免費!),但我不記得是否需要爲Web服務功能付費。

Visual Studio和WCF的契約優先開發另一個有趣的工具是WSCF.blue。我沒有使用它,但似乎是基於WCSF.blue roadmap積極開發的。

0

我不確定當你問「我應該使用WCF」時你是什麼意思? WCF是.NET上開發Web服務(以及其他類型的通信服務)的最新機制。目前沒有其他機制。其他的已經過時,或者被認爲是「傳統技術」。

+0

您可以使用WCF或ASP.NET Web服務。我認爲ASP .NET Web服務不是過時的,但我可能是錯的。 – 2010-05-06 18:26:37

+0

@Zyd:你錯了。見http://johnwsaundersiii.spaces.live.com/blog/cns!600A2BE4A82EA0A6!860.entry – 2010-05-06 19:02:48

+0

哦,我的!僅僅爲了它的樂趣,我已經通過asmx web服務在線文檔,並且我一直無法找到遺留技術警告。但是我認爲我現在會堅持下去,因爲我已經開發了一些代碼。 – 2010-05-06 20:53:35