2014-07-09 54 views
1

我試圖使用SharedTypeResolver,也是this blog post中較不通用的DataContractResolver。如果我使用DataContractResolver,是否會將我限制爲僅限.NET客戶端?

這篇文章提到了SharedTypeResolver需要.NET以及緊耦合方案,比如讓服務和客戶端共享程序集。

但是,我的問題是這樣的:不使用DataContractResolver AT ALL,需要.NET和共享程序集?如果客戶端無法訪問相同的程序集,客戶端如何使用Resolver?

目前我所擁有的只是.NET客戶端,但我不想疏遠任何可能用Java編寫客戶端的潛在客戶。

回答

2

這會讓你的java客戶端生成代理服務器更難但不可能,因爲你的wsdl不會包含你將通過線路發送的類型。有些工具可以用來自動生成代理。顯然,它們不足以生成wsdl中未描述的數據模型。那些數據模型必須手動創建。因此,這可能是太多的努力,而且永遠不會完成。出於這些原因,我建議你避免它。

+0

所以你在說,不,它並不意味着只有.NET客戶端,但如果是這樣的話,它會容易得多。但是,解析器必須知道類型意味着解析器必須使用.NET嗎? – SeanLAllen

+0

因此,Java客戶端當然可以使用合同中使用的類型或wsdl。但是,它不會從解析器嘗試處理的其他類型中受益。我想我明白。 – SeanLAllen

+0

我相信他們甚至可以處理額外的類型,但類型必須手動實現(不會在創建代理時生成)。而且,他們必須對.NET解析器具有類似的反序列化機制。 –

0

除了可能命名的管道之外,在任何平臺上運行的任何客戶端都可以與WCF通信。這個問題是否會是一個愉快的體驗。

對於跨平臺的通訊我曾與WCF結合的WebHttpBinding(REST)的成功: http://msdn.microsoft.com/en-us/magazine/dd315413.aspx

但在這麼多,WCF所提供,交易,如果你打算走這條路,然後你錯過了,安全性等,並可能使用ASP.Net Web API。