我想通過WCF方法傳遞一組相當通用的數據。數據基本上只是一個關鍵/值對的分層集合,但它嵌套到任意級別。我最初考慮將它作爲單個字符串傳遞,並在任何一端進行XML或JSON或類似的編碼/解碼,但由於WCF傳輸是XML,所以看起來有點傻,所以我希望有一種方法可以傳遞它「自然」。通過WCF傳遞遞歸集合
的方法是相當簡單:
[OperationContract]
void ProcessData(DataTree tree);
有:
public class DataTree : Dictionary<string, DataTree>
{
}
這一切編譯罰款,但是當我嘗試運行它與DataContract.GetStableName下StackOverflowException崩潰的服務。
我試着在DataTree
類中放上一個[CollectionDataContract]
屬性,並明確指定了所有的名字,但這似乎沒有任何區別。
我也試過把[DataContract]
放在它上面,但是之後它失敗的更早,因爲Dictionary
是ISerializable
。
任何想法?有一個更好的方法嗎?
謝謝,但這仍然是我試圖避免的方法。如果我找不到任何其他方式讓WCF發揮作用,我可能不得不採用它,但我更願意「本地」處理它。 – Miral 2010-09-02 20:08:55
@Miral:我明白,但根據我的經驗,大型對象樹序列化速度也很慢(但速度可能並不重要)。但你應該嘗試protobuf網。這是一個爲您的端點添加屬性的問題,指定將其用作序列化程序。 – 2010-09-03 06:18:52