我是一個完整的工作與WCF的工作,但已被放在一個需要它的項目。儘管沒有給出這個要求,但我希望這個服務能夠與任何客戶端無縫地工作,而不管它使用哪種技術(例如Java)。.NET 2010和任何類型的客戶端之間的WCF
基本上,客戶端會向我發送一塊XML,我將驗證和處理。如果一切正常,我將返回一個帶有2個字段的XML文檔(退出代碼和消息)。
如果我使用DataContracts(具有1個只寫和2個只讀屬性)是否可以做到這一點,或者是我看到的更多。
非常感謝!
粘土
我是一個完整的工作與WCF的工作,但已被放在一個需要它的項目。儘管沒有給出這個要求,但我希望這個服務能夠與任何客戶端無縫地工作,而不管它使用哪種技術(例如Java)。.NET 2010和任何類型的客戶端之間的WCF
基本上,客戶端會向我發送一塊XML,我將驗證和處理。如果一切正常,我將返回一個帶有2個字段的XML文檔(退出代碼和消息)。
如果我使用DataContracts(具有1個只寫和2個只讀屬性)是否可以做到這一點,或者是我看到的更多。
非常感謝!
粘土
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還是不行,只是一個難題。
數據契約只是傳輸數據的定義 - 它不是域對象,所以決定什麼是隻讀是沒有意義的。客戶端將反序列化響應,並且您將無法控制其對數據的處理=客戶端無論如何都可以更改響應。 WCF管道中的任何處理組件都可以更改響應。
只需從DataContract
和基本的SOAP服務(basicHttpBinding)或基本的REST服務(webHttpBinding + webHttpBehavior)開始,你就會好起來的。
謝謝拉迪斯拉夫。我個人寧願選擇華盛頓特區,但如果我這樣做,我恐怕將會有更多的工作要做。 – PseudoToad 2011-05-02 20:53:05
非常感謝Cheeso ...我將要返回這個: 並且帶有許多屬性的元素,所以看起來像DataContract不會去做的伎倆。 –
PseudoToad
2011-05-02 20:49:48