4

服務結構要求[DataContract][DataMember]屬性用於所有用作Actor服務的輸入參數的類。將非DataContract類發送到Azure服務結構角色

有沒有辦法來覆蓋這個默認值?

在我們的項目中,我們大量使用只讀消息類,它具有隻讀屬性和構造函數。序列化由Newtonsoft JSON序列化程序處理,該序列化程序非常棒。現在,我想在Service Fabric中發送這些消息,所以我需要一種方法來重寫像JSON序列化程序之類的默認WCF類序列化。

回答

2

不幸的是,我不認爲這是可能的。從this文章,

「可靠的集合允許串行被否決,但 可靠的演員目前還沒有。」

因此,它可能值得映射到新的類。

2

我能夠通過自己實現序列化來制定解決方法。基本上,這是如何工作的:

  1. 定義,其接受並返回byte[] +類型名稱,例如演員(+合同)

    Task<byte[]> DoWork(string typeName, byte[] message); 
    
  2. 反序列化byte[]通過使用自定義序列的指定類型的實例(I使用Newtonsoft JSON轉換器)。

  3. 在發送端,使用相同的串行器將對象序列化到byte[]

我定義了一些基類來包裝它,所以我不必爲每個actor/client重複它。

雖然這感覺有點哈克。很高興能從Service Fabric團隊獲得一些意見。從平臺本身獲得本地可擴展性更好。 DataContract感覺有點古老,它不再用在我們項目的任何地方。

這種方法在我的blog post中有更詳細的描述。

相關問題