0

私はStatefulServiceメソッドを持っています。メソッドの最初の引数は、アクタの 1 つに対応するインターフェイス タイプを受け入れます。アクターは を使用してサービス メソッドを呼び出し、最初の引数としてServiceProxy渡します。thisこれにより、ファイルがコンパイルされます。署名が一致します。

ただし、実行すると、予期しないタイプの IMyActorType が に認識されていないというエラーが表示されDataContractSerializerます。このメッセージの意味はわかっています。ServiceProxy扱いませんかActorReferences?私はActorProxy作品を知っています。を使用して、あるアクターを別のアクターに渡すことができActorProxyます。

それとも、私の設定に問題があるのStatefulServiceでしょうか? 私のServiceReplicaListenerセットアップで何か?

StatefulServiceメソッドのメソッドシグネチャを に変更することで、この問題を回避しましたActorReference。それは問題なくシリアライズされ、反対側で解凍できます。ただし、適切なタイピングが必要です。

4

2 に答える 2

2

Service Proxy は、Actor Proxy のように Actor 参照を処理しません。サービス スタックはアクターから独立しており、アクターの参照に関する知識はありません。アクター インターフェイスを渡す代わりに、アクター参照 ( https://msdn.microsoft.com/en-us/library/azure/microsoft.servicefabric.actors.actorreference.get.aspx ) を渡してからバインド ( https: //msdn.microsoft.com/en-us/library/azure/microsoft.servicefabric.actors.actorreference.bind.aspx ) 受信側のアクター インターフェイス タイプへのアクター参照。バインディング メソッドの出力をアクター インターフェイスにキャストできます。

于 2015-12-02T18:36:12.940 に答える
0

インターフェイスではなく、単純な DataContract で装飾された POCO を渡す必要があります。DataContractSerializer はインターフェイスでは機能しません。WCF に適用されるのと同じ規則が Service Fabric にも適用されます。

于 2015-12-01T02:21:09.277 に答える