2013-05-29 7 views
5

私はAkkaを新しく使いました。私は自分のアプリケーションの設計上の決定を支持したいと思っています。私はかなり典型的なクライアント/サーバーアプリケーションを持っています。開始時に、クライアントはアプリケーションレベルで認証を受けることができ、その後は通常の運用モードで実行できるはずです。他の状態などを切断終了、などの頁もあります。認証用のAkkaデザイン(有限状態マシン)

瞬間、私はだから私は別の状態に異なるProcedureを使用することになり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); 
    } 

を使用して、これを実装しました。 しかし、http://doc.akka.io/docs/akka/snapshot/java/fsm.htmlの文書には、標準状態マシンのようにかなり機能する有限状態マシンの記述があります。状態に応じて特定のアクションを実行します。

私はどちらがより良いアプローチですか?または、JavaでAkkaでClient/Serverアプリケーションを実装する通常の方法は何ですか?

答えて

1

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

関連する問題