服务结构要求[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中有更详细的描述。