2010-12-05 102 views
1

如何確保我的WCF服務可以通過任何其他語言(Java,PHP,iOS使用的等等)訪問?WCF服務到多個端點

我已經把所有東西都保存爲httpbinding,並且沒有使用任何.net角色/成員資格認證。但有些事情我不確定。像,我可以返回這些其他語言可讀的通用列表嗎?

回答

1

任何不以net(netTcp,netMsmq等)開頭的WCF綁定都應該沒問題 - 它們被設計爲可互操作。

最基本的是basicHttpBinding這是非常簡單的HTTP - 沒有什麼可以添加到它。你應該可以從任何腳本語言(PHP等)調用它。

更先進的結合是wsHttpBinding它實現了很多的WS- *相關標準,可以從其他語言在網絡堆棧可以處理WS- *被稱爲 - 的東西像Java等

然後還有的webHttpBinding它不是通過SOAP公開您的服務,而是通過REST端點。這應該可以從任何語言,任何設備,任何地方調用。

當然,如果您從您的服務中暴露多個端點,您將獲得最佳的覆蓋範圍,爲嘗試給您打電話的任何人提供各種選擇。所有這一切都只是在配置完成 - 無需更改代碼,支持多種終端,多種綁定等

至於列表和東西:WCF交往系列化消息 - 這是一個XML模式治理 - 基本XML。 WSDL和XSD的組合是完全可互操作的,並且可以被各種其他語言理解。

.NET中的List<T>將轉換爲XML結構中的數組,並且完全可以互操作 - 不用擔心。客戶端可能會取回一個數組而不是一個列表 - 但這不是問題。

唯一的問題是,由於XML模式不支持泛型,因此您無法真正建模通用列表 - 您需要明確說明您要發回的內容。 A List<T>將不起作用 - List<Customer>將(如果您的Customer對象是您的數據合同的一部分,並標記爲這樣)

+0

謝謝:)。如何將對象標記爲數據合同的一部分? – Matt 2010-12-05 10:34:33

1

如果您無法控制用於使用服務的客戶端技術,則無法100%確定。但是,如果您的Web服務(WSDL)符合WS-I basic profile v1.1,則您可以非常自信。這個標準得到了非常廣泛的支持和成熟。您可以使用優秀的SoapUI測試工具來測試您的WSDL是否符合要求。