Dot-Net

可移植/可互操作的 WCF 契約

  • January 28, 2009

我想知道是否有人在設計 WCF 契約時有一些好的提示/注意事項,考慮到 Web 服務互操作性,無論是在舊的 Microsoft Web 服務技術(例如 WSE)和非 Microsoft 技術方面,例如Java 呼叫 WCF Web 服務。

例如:在將 DateTime 暴露為契約中的類型時,是否需要考慮任何特殊規則?字典和雜湊表怎麼樣?使用各種可用的綁定可能會遇到什麼問題?

WCF 日期時間問題

關於您的 DateTime 問題,您擔心通過 WCF 傳遞 DateTime 是正確的。這只是許多抱怨困難的連結之一…… http://daveonsoftware.blogspot.com/2008/07/wcf-datetime-field-adjusted.html

關於類型等價

根據 Juval Lowy 的名為 Programming WCF Services, 2nd Edition 的書的第 3.1.3 節……

WCF 為原始類型提供隱式數據協定,因為這些類型的架構有一個行業標準。

他還指出了關於使用自定義類型作為 Operation Contract 方法的參數的問題。我認為這也適用於方法返回類型。

為了能夠使用自定義類型作為操作參數,有兩個要求:首先,該類型必須是可序列化的,其次,客戶端和服務都需要具有該類型的本地定義以產生相同的數據架構。

您可能還想查看第 F.4 節。Data Contracts,這是他的 WCF 編碼標準的一部分。Bullet #9 適用於您的問題…

不要將 .NET 特定類型(例如 Type)作為操作參數傳遞。

綁定建立期望

基於 WSHttpBindingBase(在 Reflector.NET 中搜尋它的四個派生)的綁定將是最具互操作性的,因為它們是為互操作性而設計的。

書籍推薦

我強烈推薦 Juval 的書: http: //www.bookpool.com/sm/0596521308

引用自:https://stackoverflow.com/questions/485580