在WCF服務中創建私有數據成員是否是一個好主意,如果這是一種很好的做法,那麼當我們初始化這些成員變量時,因爲客戶端只調用服務的方法。在WCF服務中創建私有數據成員
0
A
回答
1
僅將數據合約用作DTO,並將其擴展到處理數據的代碼中。
事情是這樣的:
[DataContract]
public class WCFDataClass
{
[DataMember]
public String Foo { get; set; }
}
// Your class, used for internal processing
class MyWCFDataClass : WCFDataClass
{
public String MyFoo { get; set; }
public String DoFoo()
{
return this.Foo + this.MyFoo;
}
}
0
如果您有任何的互操作性的興趣,我相信dont't它一般是一個很好的做法。
首先創建合同(操作合同,消息合同,數據合同等),以明確的方式指定哪些是支持的,哪些不支持。它明確地公開指定這些事情。當你開始宣佈私人成員參與公共合同時,很快就會變得非常混亂。程序員在你發現後面的事情之後會產生問題。
您可能試圖將邏輯封裝在數據合同中,這不是數據合同的目的。正如@CodeCaster所建議的那樣,這種操作應該在數據契約類之外進行。即使簡單的事情,如構造函數填充默認值可能會有問題。這種邏輯也應該在DataContract類之外執行。
此外,當您聲明私有成員爲[DataMember]
時,您依賴於數據協定序列化程序的非標準實現細節 - 事實上它可以讀取/寫入不是公有的成員 - 即DataConstractSerializer(至少在.NET平臺上)可以做你在自己的代碼中無法做到的事情。你依靠'魔術'。雖然這個'魔術'有助於DataConstractSerializer提供驚人的性能,但我認爲您不應該依賴於它的實現細節。例如,您會發現DataContract類無法與Silverlight應用程序共享,因爲在該平臺上,DataConstractSerializer無法讀取/寫入非公共成員。
然而,就像所有'慣例'一樣,你必須考慮你的情況。如果互操作性和可維護性不是要求,則上述大部分內容不相關,可以忽略。 :)
相關問題
- 1. WCF服務可選的數據成員
- 2. 在WCF服務中迭代數據成員
- 3. WCF服務創建
- 4. 創建WCF服務
- 5. WCF服務創建
- 6. 在es6類上創建私人成員
- 7. C#:WCF服務與IXmlSerializable的成員變成數據集
- 8. WCF服務中的列表數據成員
- 9. 啓用Silverlight的WCF服務中的類數據成員
- 10. Azure中的「私有」TCP WCF服務?
- 11. 如何根據服務調用模擬私有成員變量
- 12. 在服務器上創建具有成員資格數據庫的ASP.NET網站
- 13. WCF/WCF數據服務/ WCF RIA服務
- 14. 私有成員
- 15. 問題reg。在WCF中創建數據服務層
- 16. cpp私有數據成員SDL_Rect無效
- 17. 私有數據VS類成員變量
- 18. 複製私有數據成員
- 19. 私有數據成員訪問
- 20. 訪問私有數據成員
- 21. 訪問私有數據成員
- 22. 多態性與私有數據成員
- 23. C++私有函數成員
- 24. 我如何添加頁眉/數據成員的所有DataContracts在WCF服務?
- 25. WCF數據服務:如何避免__metadata成員
- 26. WCF Web服務數據成員默認爲null
- 27. 確保與ASP.NET成員資格的ADO.net WCF數據服務
- 28. 從數據庫創建WCF數據服務
- 29. 平WCF數據服務或WCF服務
- 30. WCF數據服務與WCF RIA服務