5

私は Akka を初めて使用するので、アプリケーションの設計上の決定について何らかのサポートが欲しいと思っています。かなり典型的なクライアント/サーバー アプリケーションがあります。最初に、クライアントはアプリケーション レベルで認証できる必要があり、その後は通常の操作モードで実行できる必要があります。閉じている、切断されているなどの他の状態もあります。

現時点では、これを使用して実装しましたbecome()

public class MyServerActor extends UntypedActor {
  Procedure<Object> normal = new Procedure<Object>() {
    @Override
    public void apply(Object msg) {
      handleMessage(msg);
    }
  };

  @Override
  public void onReceive(Object msg) throws Exception {
    if (msg instanceof LoginMessage) {
      // do login stuff, assume the login was successful
      getContext().become(normal);
  }

したがってProcedure、別の州には別のを使用します。ただし、http://doc.akka.io/docs/akka/snapshot/java/fsm.htmlのドキュメントには、標準のステート マシンのように機能する有限ステート マシンの説明があります。状態に応じて、特定のアクションを実行します。

どちらがより良いアプローチなのだろうか?または、Java を使用して Akka でクライアント/サーバー アプリケーションを実装する通常のアプローチは何ですか?

4

1 に答える 1

1

状態ベースのアプローチを使用する場合は、 と を使用Procedurebecomeます。その状態のすべてのコードがグループ化されているため、特定の状態にあることが非常に明確になります。

于 2013-06-03T12:18:24.380 に答える