簡體   English   中英

將非DataContract類發送到Azure Service Fabric Actor

[英]Send non-DataContract class to Azure Service Fabric Actor

Service Fabric需要[DataContract][DataMember]屬性用於所有用作Actor服務的輸入參數的類。

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

在我們的項目中,我們大量使用只讀消息類,它們具有只讀屬性和構造函數。 序列化由Newtonsoft JSON序列化程序處理,它運行得很好。 現在,我想在Service Fabric中發送此消息,因此我需要一種方法來覆蓋類似JSON序列化程序的默認類WCF序列化。

不幸的是,我不認為這是可能的。 這篇文章來看,

“Reliable Collections允許覆蓋序列化器,但Reliable Actors目前不會。”

所以可能值得映射到新類。

我能夠通過自己實現序列化來解決這個問題。 基本上,這是它的工作原理:

  1. 定義一個接受並返回byte[] +類型名稱的actor(+ contract),例如

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

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

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

這感覺有點哈哈。 很高興從Service Fabric團隊獲得一些意見。 從平台本身獲得本機擴展點會更好。 DataContract感覺有點陳舊,它不再用於我們項目的任何地方。

在我的博客文章中更詳細地描述了這種方法。

暫無
暫無

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

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