2013-05-29 9 views
5

Sono abbastanza nuovo per Akka e mi piacerebbe avere qualche supporto per una decisione di progettazione per la mia applicazione. Ho un'applicazione client/server piuttosto tipica. All'inizio il client dovrebbe essere in grado di autenticarsi a livello di applicazione e successivamente dovrebbe essere in grado di funzionare in modalità operativa normale. Ci sono anche altro stato come chiusura, scollegato, ecc pp.Akka design per autenticazione (macchina a stati finiti)

Al momento, ho implementato questo usando 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); 
    } 

quindi vorrei usare un diverso Procedure per uno stato diverso. Tuttavia, nel documento http://doc.akka.io/docs/akka/snapshot/java/fsm.html c'è una descrizione del computer a stati finiti che funziona praticamente come una macchina a stati standard; a seconda dello stato, esegui determinate azioni.

Mi chiedo quale sia l'approccio migliore? O qual è il solito approccio implementando un'applicazione client/server in Akka con java?

risposta

1

Se stai per un approccio basato sullo stato, quindi utilizzare Procedure e become. Rende molto chiaro che sei in uno stato specifico poiché tutto il codice per quello stato è raggruppato insieme.

Problemi correlati