2011-05-01 49 views
1

我是一個完整的工作與WCF的工作,但已被放在一個需要它的項目。儘管沒有給出這個要求,但我希望這個服務能夠與任何客戶端無縫地工作,而不管它使用哪種技術(例如Java)。.NET 2010和任何類型的客戶端之間的WCF

基本上,客戶端會向我發送一塊XML,我將驗證和處理。如果一切正常,我將返回一個帶有2個字段的XML文檔(退出代碼和消息)。

如果我使用DataContracts(具有1個只寫和2個只讀屬性)是否可以做到這一點,或者是我看到的更多。

非常感謝!

粘土

回答

1

DataContracts不是「解決方案」; DC是消息序列化的一種可能方法。是否要使用DC取決於XML必須是什麼樣子,或者看起來像什麼,以及您希望或需要如何將程序內存中的對象映射到消息(xml文檔或片段)。

特別是,如果您想要或需要消息中的xml屬性,那麼DataContracts可能不是您的選擇。

DC可以支持這種輸入消息:

<request> 
    <flavor>7</flavor> 
    <param>eiueuie</param> 
</request> 

通知所有數據被存儲爲XML元素。 DataContract不會爲這種信息的工作:

<request flavor='7'> 
    <param>eiueuie</param> 
</request> 

...其中消息數據的任何存儲在XML屬性。如果你想使用XML屬性,那麼你可能想要使用XML序列化器。如果你不在乎某種方式,那麼DC可能會很好。

但是,Xml序列化程序無法將專用字段或屬性映射到XML元素,而DC Can。所以,如果你的對象模型需要,那麼你不能使用XML序列化器,你應該使用DC。

要了解有關DC和XMLS之間權衡的更多信息,read this


說了這麼多之後,決定是否使用DC只是您設計的一部分。您還需要決定是否需要完整的SOAP Envelope支持(允許使用諸如消息簽名等等),還是需要更簡單的「REST」消息格式(可能更好地稱爲「普通舊XML」)。

然後有像實例化,託管和激活(使用IIS或自主?),日誌/審計,安全(身份驗證和授權)等等。

所以,WCF可以爲你工作,對於任何類型的客戶端,但是選擇使用DataContracts還是不行,只是一個難題。

+0

非常感謝Cheeso ...我將要返回這個:並且帶有許多屬性的元素,所以看起來像DataContract不會去做的伎倆。 – PseudoToad 2011-05-02 20:49:48

0

數據契約只是傳輸數據的定義 - 它不是域對象,所以決定什麼是隻讀是沒有意義的。客戶端將反序列化響應,並且您將無法控制其對數據的處理=客戶端無論如何都可以更改響應。 WCF管道中的任何處理組件都可以更改響應。

只需從DataContract和基本的SOAP服務(basicHttpBinding)或基本的REST服務(webHttpBinding + webHttpBehavior)開始,你就會好起來的。

+0

謝謝拉迪斯拉夫。我個人寧願選擇華盛頓特區,但如果我這樣做,我恐怕將會有更多的工作要做。 – PseudoToad 2011-05-02 20:53:05

相關問題