因此,我们拥有通用部分和特定部分,这要归功于erlang / OTP行为,这极大地简化了我们的代码,并为我们提供了一个人人都能理解的通用框架。
我是一名Erlang新手,并试图了解OTP的概念。 但其中
哪种行为适合哪种应用。
我提出这个问题的原因是因为经过一些冗长的理论后,我仍然不确定哪个更适合XYZ应用。
是否有任何标准或经验法则,或者只是程序员本能在这种情况下重要? 有什么帮助吗?
答案 0 :(得分:1)
备注,这是一个非常普遍的问题,不适合这个社区的使用。
主管可以控制您的应用程序启动和发展的方式。 它以正确的顺序启动流程,验证一切正常,在发生故障时管理重启策略,流程池,监督树......优点是它可以帮助您遵循"让它碰撞"在您的应用程序中规则,它集中在几行代码中,以协调您的所有流程。
我主要使用gen_event进行日志记录。您可以使用此行为根据您的目标按需连接不同的处理程序。在我的一个应用程序中,默认情况下,我有一个允许一目了然地检查行为的图形记录器,以及一个允许更深入和事后分析的文本文件处理程序。
Gen_server是所有应用程序的基本块。它允许保持状态,通话,演员甚至简单消息。它管理代码更改并提供启动和停止功能。我的大多数模块都是gen_servers,您可以将其视为负责执行单个任务的actor。
Gen_fsm为gen服务器提供具有特定行为的当前状态的概念,以及从状态到状态的转换。它可以用于例如游戏中控制游戏的进化(配置,等待玩家,游戏,改变等级......)
创建应用程序时,您将识别您必须执行的不同任务,并将它们分配给gen_server gen_fsm。您将添加gen_event以允许发布/订阅机制。然后,您将必须考虑其依赖性和错误恢复来对所有进程进行分组。这将为您提供监督树和重启策略。
答案 1 :(得分:0)
我使用以下规则。
gen_server
。gen_fsm
。例如,我喜欢使用gen_fsm
来实现网络协议。gen_event
。