3

2 つのインターフェイスを持つアクターを作成する方法はありますか? Interfaces アセンブリでパブリック インターフェイスを定義し、Actor アセンブリで内部インターフェイスを定義したいと考えています。その理由は、クライアントが使用するメソッドとシステムが使用するメソッドを分離するためです。

例えば:

class MyActor
    : Actor
    , IPublicInterface
    , IInternalInterface
{
    ...
}

ActorService 属性では単一の名前しか許可されていないため、これは不可能のようです。

パブリック メソッドと内部メソッドを分離するためのより良い方法 (機能する) はありますか?

4

3 に答える 3

1

Reliable Actors フレームワークでポリモーフィズムを促進することで、それを達成できると思います。

https://azure.microsoft.com/en-us/documentation/articles/service-fabric-reliable-actors-polymorphism/

頭に浮かぶ別の分離方法は、公開機能と内部機能をより多くのアクターに分割することです。

于 2016-10-07T15:51:05.307 に答える
1

複数のインターフェースがある場合、ランタイムはサービスのデフォルト名を生成できません。https://msdn.microsoft.com/en-us/library/azure/microsoft.servicefabric.actors.runtime.actorserviceattribute.aspxを適用する必要があります

[ActorService(Name="MyActorService")] をアクターの実装に追加します。その後、 https://msdn.microsoft.com/en-us/library/azure/mt694503.aspxメソッドを使用して、このサービス名でアクター プロキシを作成できます。

于 2016-10-20T04:16:02.710 に答える
0

ちょっとした実験で答えを見つけました。

ActorProxy.Create 呼び出しで指定された serviceUri がアクターへの Uri である限り、任意のインターフェイスを使用できます。したがって、上記の例では、次のコードは IInternalInterface へのアクセスを提供します。

ActorProxy.Create<IInternalInterface>(actorId, ActorNameFormat.GetFabricServiceUri(typeof(IPublicInterface)));
于 2016-10-07T15:59:31.530 に答える