2013-05-29 42 views
5

Tôi khá mới đối với Akka và tôi rất muốn có một số hỗ trợ cho quyết định thiết kế cho ứng dụng của tôi. Tôi có một ứng dụng Client/Server khá điển hình. Khi bắt đầu, máy khách sẽ có thể xác thực ở cấp ứng dụng và sau đó sẽ có thể chạy ở chế độ hoạt động bình thường. Ngoài ra còn có tình trạng khác như đóng cửa, ngắt kết nối, vv pp.Thiết kế Akka để xác thực (Máy nhà nước hữu hạn)

Tại thời điểm này, tôi thực hiện điều này bằng 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); 
    } 

Vì vậy, tôi sẽ sử dụng một khác nhau Procedure cho một quốc gia khác nhau. Tuy nhiên, trong tài liệu tại http://doc.akka.io/docs/akka/snapshot/java/fsm.html có một mô tả Máy hữu hạn của Bang có nhiều công trình giống như một Máy nhà nước tiêu chuẩn; tùy thuộc vào tiểu bang làm một số hành động nhất định.

Tôi tự hỏi đó là cách tiếp cận nào tốt hơn? Hoặc cách tiếp cận thông thường thực hiện ứng dụng Client/Server trong Akka với java là gì?

Trả lời

1

Nếu bạn đang đi đến một cách tiếp cận dựa trên trạng thái, sau đó sử dụng Procedurebecome. Nó làm cho nó rất rõ ràng rằng bạn đang ở trong một trạng thái cụ thể vì tất cả các mã cho trạng thái đó được nhóm lại với nhau.

Các vấn đề liên quan