2

プレビュー SDK をいじってみると、開発中のフレームワークで使用される一連の関連する Actor タイプに共通の実装を提供しようとしたときに、いくつかの驚くべきことに気付きました。

次のようなコードを作成すると、期待どおりに動作しないようです。

としょうかん:

public abstract class CommonActor : Actor, ICommonActor
{
    public abstract void DoStuff();
}

コンソール アプリケーション:

public class MyActor : CommonActor
{
   public void override DoStuff()
   {
      //Stuff
   } 
}

アクターを作成するときに、アクターを登録する呼び出しが失敗します。

fabricRuntime.RegisterActor(typeof(MyActor)); 

タイプが Actor から派生していないというエラーが表示されますが、これは明らかに偽物です。

また、これにより、サービス マニフェストを生成するツールが壊れているように見えることにも気付きました。(ツールを無効にして、これを回避する必要がありました。)

これは基本的に、ユーザー向けの API を思い通りに書くことを妨げています。私はそれがまったく好きではありません。同様に、他の人が報告したように、ここでは依存性注入シナリオのサポートがほとんどまたはまったくなく、アクター モデルの有用性がかなり劇的に損なわれています。

何か不足していますか?ここでアクターの抽象化を実装するより良い方法はありますか?

4

2 に答える 2

5

ActorServiceこれは、子アクターがデコレータを使用して明示的に命名されている限り実行できるようになりました。MyActorあなたの例では、これは次のようにクラスを更新することに変換されます...

    [ActorService(Name = "MyActor")]      // Child actors need this decorator
    public class MyActor : CommonActor
    {
        public void override DoStuff()
        {
            //Stuff
        }
    }

詳細については、Service Fabric のドキュメントも参照してください。

于 2016-03-02T17:56:09.357 に答える
1

問題を報告していただきありがとうございます。これは既知の制限であり、将来のリリースで修正される予定です。きれいではありませんが、封じ込めを使用して回避できます。

于 2015-05-27T19:05:54.013 に答える