我理解一个过程是如何工作的。我了解如何实现OTP行为,如gen-server等.
但我不清楚我什么时候会选择一种方法而不是另一种方法。
例如,塞萨里尼等。在Erlang编程中,通过生成进程、编写循环函数等方法,在p 240上实现数据库服务器。Joe Armstrong在p 196上的聊天客户端在编程中也产生了一个进程。
为什么这些不能更好地作为OTP服务器来实现呢?是为了教育目的吗?还是有合理的技术原因?
换句话说,什么经验法则会指导我实施一种方法而不是另一种方法?
非常感谢。
发布于 2013-10-02 20:26:53
在上面的两个例子中,为了教育目的,简单生成的过程是首选的:这更容易解释,这些作者不需要解释OTP来传达他们想要教的东西,而且理解Erlang中的过程的概念也很重要。即使在遵循OTP规则的实际应用程序中,也不是所有进程都使用OTP行为实现并插入到监督树中。
经验法则很简单。通过回顾OTP所带来的内容(代码更改、容错等)来确定是否要遵循OTP的设计原则。或者您是否计划与OTP兼容的代码集成。如果您想要OTP所带来的任何特性,请遵循OTP原则,避免重新发明轮子。
如果您坚持OTP原则,并因此使用了gen_*行为,那么您应该对任何不需要被监督或代码升级的短寿命进程做一个简单的派生。它的使用时间不应超过部署发行版的时间(否则,您无论如何都需要soft_purge )。所有其他进程都必须插入到监视树中,并可能实现gen_*行为。
https://stackoverflow.com/questions/19144894
复制相似问题