何时应使用 OTP 行为而不是生成



我了解一个过程是如何工作的。我了解如何实现 OTP 行为,例如生成服务器等。

但我不清楚我什么时候会选择一种方法而不是另一种方法。

例如,Cesarini 等人在 Erlang Programming 中,通过生成进程、编写循环函数等方式在 p 240 上实现数据库服务器。 Joe Armstrong 在 Programming Erlang 中 p 196 上的聊天客户端也生成了一个进程。

为什么这些不能更好地实现为OTP生成服务器?是出于教育目的吗?还是有合理的技术原因?

换句话说,什么经验法则可以指导我实施一种方法而不是另一种方法?

非常感谢。

在上面的两个例子中,出于教育目的,简单的生成过程是首选:这更容易解释,这些作者不必解释 OTP 来传达他们想要教授的内容,无论如何理解 Erlang 中过程的概念都很重要。即使在遵循 OTP 规则的实际应用程序中,也不是所有进程都使用 OTP 行为实现并插入到监督树中。

经验法则很简单。通过查看 OTP 设计带来的内容(代码更改、容错等(来确定是否要遵循 OTP 设计原则,或者是否计划与符合 OTP 的代码集成。如果您想要它带来的任何功能,请遵循 OTP 原则,并避免重新发明轮子。

如果您坚持 OTP 原则,因此使用gen_*行为,则应为任何不需要监督或代码升级的短期进程执行简单的生成。它的生存期不应超过部署发布的时间(否则,无论如何都需要soft_purge(。所有其他进程都必须插入到监督树中,并且可能实现 gen_* 行为。

最新更新