我希望保持我的业务逻辑层纯净,不受传输协议(如http)的影响。为此,我想使用Pedestal作为(imho)它应该被使用:即为传入的http请求提供访问点,提供路由和响应的呈现(是html或格式良好的restful数据)但不是做任何业务逻辑或数据库访问的提示。即使知道数据库存在,Web层的业务是什么?
打电话给我老式的,但对我的网前规则 - 一切 - 而且是王者 - 高于一切其他"心态,业务逻辑永远不应该在与Web层相同的操作系统流程中运行。事实上,它甚至不应该放在同一个盒子里。为此,有一种规范的方法可以从Clojure Web框架(如Pedestal)调用到TCP上运行的后端服务,无论是通过域套接字还是通过  nix套接字。 FastCGI仍然是一个选择吗?
我设想一个http请求进入Pedestal。然后,基座将其路由到正确的功能。此功能通过在TCP上发送http-neutral消息(也就是说,不包括如何收到原始请求)来触发对业务逻辑层的异步调用。业务逻辑层执行其操作并将仅包含数据的另一个中性消息返回到调用Pedestal函数,该函数然后将数据移交给呈现等,并且构建http响应并将其发送回客户端。 (为简洁起见,遗漏认证等。)
在我看来,基座代码应该简单,无状态和干净。它只是将http请求路由到“中性消息调度代码”,然后呈现结果。从本质上讲,Web层应该是一个非常薄的层,绝对没有大脑。业务层应该与http 100%无关。它应该在一个单独的进程上运行。该代码的开发团队可能从未听说过http或被诅咒的“网络”。
那么,我如何实现这个无网络的必杀技呢?或者更确切地说,如何使用超级棒的Clojure将“网络”重新放回盒子中。谢谢。