ServiceFabric StatefulService 方法传递 Actor Proxy DataContract 错误

ServiceFabric StatefulService method passed Actor Proxy DataContract error

我有一个StatefulService方法。该方法的第一个参数接受与我的一个 Actors 对应的接口类型。 Actor 使用 ServiceProxy 调用服务方法,将 this 作为第一个参数传入。这个编译文件。签名匹配。

然而,当 运行 时,我收到有关 DataContractSerializer 未知的意外 IMyActorType 类型的错误。我知道这条消息是什么意思。 ServiceProxy 不处理 ActorReferences 吗?我知道 ActorProxy 有效。我可以使用 ActorProxy.

将一个 Actor 传递给另一个 Actor

或者这可能是我配置 StatefulService 的一些问题?我的 ServiceReplicaListener 设置有问题吗?

我现在通过将 StatefulService 方法的方法签名更改为 ActorReference 来解决这个问题。序列化很好,我可以在另一边解压它。但是,我更希望输入正确。

您需要传递一个简单的 DataContract 修饰的 POCO 而不是一个接口。 DataContractSerializer 不会在接口上工作。适用于 WCF 的相同规则也适用于 Service Fabric。

Service Proxy 不像 Actor Proxy 那样处理 Actor 引用。服务堆栈独立于参与者并且不知道参与者引用。除了传递参与者接口,您还可以将参与者引用 (https://msdn.microsoft.com/en-us/library/azure/microsoft.servicefabric.actors.actorreference.get.aspx) and then bind (https://msdn.microsoft.com/en-us/library/azure/microsoft.servicefabric.actors.actorreference.bind.aspx) 参与者引用传递给接收端的参与者接口类型。您可以将绑定方法的输出转换为 actor 接口。