2013-05-29 55 views
5

我對Akka相當陌生,我很想爲我的應用程序的設計決策提供一些支持。我有一個相當典型的客戶/服務器應用程序。在開始時,客戶端應該能夠在應用程序級進行身份驗證,之後應該能夠以正常操作模式運行。也有其他國家如關閉,斷開等頁。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實現客戶端/服務器應用程序的常用方法是什麼?

回答

1

如果您打算採用基於狀態的方法,請使用Procedurebecome。它清楚地表明你處於特定狀態,因爲該狀態的所有代碼都被分組在一起。