簡體   English   中英

將Structs與WCF服務一起使用

[英]Using Structs with WCF Services

有沒有關於使用結構作為WCF服務的返回類型的官方建議?

我目前正在與一項我沒有寫過的服務進行互動,並發現自己受到啟發,要求查看我的煩惱是否合理。

我過去總是使用類 - 可能部分是因為這是樣本總是顯示的,但正如我現在想的那樣,出於其他“直觀”的原因:

  • 我通過定義一個單獨的項目來開始合同樣式,該項目的接口表示服務來回傳遞的類型。

  • 我使用LINQ很多,因此對於可空性的測試是隱含的引用類型,而對於結構和其他值類型,我總是需要標記為可空。

雖然我承認它比我腦子里的項目符號列表更直觀,但有些東西會馬上來找我。 我想問這個問題,因為我正在處理一個返回結構的服務,並且在處理返回值時必須寫:

var foo = Bar.Value.MyField;

代替

var foo = Bar.Value;

如果你可以創建一個結構並在其上放置一個[DataContract]屬性 - 繼續使用它! 對於WCF,這沒有什么區別--WCF只要求使用標記有DataContract屬性的類或結構,並且要包含在序列化消息中的所有字段都要用[DataMember]屬性標記。

如果您檢查DataContractAttribute上的MSDN文檔,它表明您也可以在結構上使用它:

[AttributeUsageAttribute(AttributeTargets.Class|
 AttributeTargets.Struct|AttributeTargets.Enum, 
 Inherited = false, AllowMultiple = false)]
public sealed class DataContractAttribute : Attribute

更新:至於何時使用結構而不是類(通常在.NET中),請在此處查看此SO問題:

我什么時候應該使用結構而不是類?

但是,由於WCF實際上是關於消息傳遞(即您的客戶端進行方法調用,該調用及其參數將轉換為序列化消息,該消息通過線路發送,然后在另一端重新組裝並轉回方法我沒有看到使用struct任何令人信服的理由。

一般.NET的所有好處並不真正適用於WCF的SOA世界,我會說(你不是在傳遞類或結構實例 - 見上文)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM