服務結構要求[DataContract]
和[DataMember]
屬性用於所有用作Actor服務的輸入參數的類。將非DataContract類發送到Azure服務結構角色
有沒有辦法來覆蓋這個默認值?
在我們的項目中,我們大量使用只讀消息類,它具有隻讀屬性和構造函數。序列化由Newtonsoft JSON序列化程序處理,該序列化程序非常棒。現在,我想在Service Fabric中發送這些消息,所以我需要一種方法來重寫像JSON序列化程序之類的默認WCF類序列化。
服務結構要求[DataContract]
和[DataMember]
屬性用於所有用作Actor服務的輸入參數的類。將非DataContract類發送到Azure服務結構角色
有沒有辦法來覆蓋這個默認值?
在我們的項目中,我們大量使用只讀消息類,它具有隻讀屬性和構造函數。序列化由Newtonsoft JSON序列化程序處理,該序列化程序非常棒。現在,我想在Service Fabric中發送這些消息,所以我需要一種方法來重寫像JSON序列化程序之類的默認WCF類序列化。
我能夠通過自己實現序列化來制定解決方法。基本上,這是如何工作的:
定義,其接受並返回byte[]
+類型名稱,例如演員(+合同)
Task<byte[]> DoWork(string typeName, byte[] message);
反序列化byte[]
通過使用自定義序列的指定類型的實例(I使用Newtonsoft JSON轉換器)。
在發送端,使用相同的串行器將對象序列化到byte[]
。
我定義了一些基類來包裝它,所以我不必爲每個actor/client重複它。
雖然這感覺有點哈克。很高興能從Service Fabric團隊獲得一些意見。從平臺本身獲得本地可擴展性更好。 DataContract
感覺有點古老,它不再用在我們項目的任何地方。
這種方法在我的blog post中有更詳細的描述。