- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Akka提供了两种重叠的方式来管理角色状态Finite State Machines和unbecome/become。他们各自的好处/缺点是什么?什么时候应该选择其中一个?
最佳答案
FSM
是DSL,它使您可以构建比使用核心actor API更为复杂,可读性强的状态机。您可以潜在地向业务人员显示FSM代码,他们可以验证业务规则。FSM
DSL使您可以更清晰地将内容组合在一起。例如,transitions允许您排除必须在actor become
行为之间重复的逻辑。您也可以订阅其他参与者,以得到有关转换的通知,这有助于进行去耦和测试。
计时器也很好地集成到了DSL中,诸如取消之类的事情也得到了很好的处理。使用调度程序编码超时消息有很多陷阱。FSM
的缺点是它是DSL和其他团队成员可以消化的新语法。好的方面是,它是DSL和更高级别的抽象。我认为agilesteel的2种状态阈值是一个很好的阈值。但是一旦您超过了2种状态,FSM
的好处就非常引人注目。
一定要阅读the FSM docs和accompanying examples和become
和FSM
对比。
一个注意事项是:使用unbecome
“ pop ”行为-默认行为是不使用行为堆栈。它仅在少数用例中才有意义(即通常与状态机无关)。
关于akka - FSM vs在Akka变得/变得不受欢迎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17110045/
我在 android 代码中使用 asmack XMPP。我可以正常登录 XMPP 服务器,但是当我尝试创建新用户时出现问题。我想要实现的是: 以管理员身份登录。 创建一个新用户。 从管理员注销。 以
这是我的标记页面,其中有一个按钮可以从数据库中搜索数据并显示在网格中 这是我背后的代码 if (!IsPostBack) { LblInfo.Text = "Page Load
当我多次将相同的 float 值插入到我的集合中时,本应花费恒定时间的 x in s 检查变得非常慢。为什么? 时序x in s的输出: 0.06 microseconds 0.09 mi
我有一个小型聊天客户端,可以将所有历史记录存储在 sqlite 数据库中。当用户单击我的应用程序中的 history 选项卡时,我的应用程序会获取所有相关历史记录并将其显示在 QWebView 中。我
我是一名优秀的程序员,十分优秀!