从 Ring 开始。我最熟悉的是 PHP 中的网络开发,在 PHP 中,PHP 应用程序会在每次请求时重新启动,并由 Web 服务器代理,例如 Apache。
这当然意味着 PHP 应用程序本身不可能维护任何内存中的状态(PHP 强制执行“无共享”架构)。因此,我注意到在 Java 和 Clojure 等其他语言中,服务器是长运行进程,因此有一个全局状态选项。尽管如此,我仍然希望遵守 12 因素原则,因此我明白应该避免应用程序状态,就像我使用 PHP 编程那样。
我对重新加载工作流程等有所了解。当然,在许多情况下都是合理的。
然而,由于我现在编写 Web 应用程序的目标是没有任何全局状态,这意味着我实际上不需要重新加载工作流程(因此仅 lein ring 足够 - 只需重新加载代码,而不是状态)。
我想知道我是否忽略了什么。例如,如果我发现配置变量,这可能算作“状态”,那么可能需要重新加载。是的,我会适时亲自测试以了解更多信息。
但是,我只是想找到任何关于这些点的通用提示/讨论,帮助我迈出正确的步伐。