繁体   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