我了解流程的运作方式。而且我了解如何实现OTP行为,例如gen-server等。
但是我不清楚我何时会选择一种方法来替代另一种方法。
例如,Cesarini等。例如,在Erlang编程中,通过产生一个进程,编写一个循环函数等在p 240上实现数据库服务器。JoeArmstrong在编程Erlang的p 196上的聊天客户端也产生一个进程。
为什么不能将它们更好地实现为OTP发电服务器?是出于教育目的吗?还是有合理的技术原因?
换句话说,哪种经验法则可以指导我实现一种方法而不是另一种方法?
非常感谢。
最佳答案
在上面的两个示例中,出于教育目的,首选简化的生成过程:这更易于解释,这些作者不必解释OTP即可传达要教的内容,无论如何,了解at的概念都非常重要在Erlang中进行处理。即使在遵循OTP规则的实际应用程序中,并非所有进程都使用OTP行为来实现并插入到监督树中。
经验法则很简单。 通过查看它带来的内容(代码更改,容错等)来确定是否要遵循OTT设计原则,或者是否打算与OTP兼容代码集成。如果要获得OTP带来的任何功能,请务必遵循OTP原则,并避免重新发明轮子。
如果您遵循OTP原则,并因此使用gen_*
行为,则应该为不需要监督或代码升级的的任何短暂进程进行简单的生成。它的生存期不得超过部署发行版的时间(否则,仍然需要 soft_purge
)。所有其他进程都必须插入监管树中,并且可能实现gen_ *行为。
关于process - Erlang:OTP与生成,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19144894/