如何从Clojure web框架(如底座)调用到进程外后端侦听TCP?

如何从Clojure web框架(如底座)调用到进程外后端侦听TCP?,clojure,Clojure,我希望保持我的业务逻辑层纯净,不受http等传输协议的污染。为此,我想使用Destale as(imho),它应该被使用:即为传入的http请求提供访问点,提供路由和响应的呈现(html或格式良好的restful数据),但不做任何业务逻辑或数据库访问的提示。即使知道数据库存在,web层的业务是什么 可以说我过时了,但按照我的“前web统治一切,并凌驾于一切之上”的心态,业务逻辑永远不应该与web层运行在同一个O/S流程中。事实上,它甚至不应该在同一个盒子上。为此,是否有一种规范的方法可以跨域套接

我希望保持我的业务逻辑层纯净,不受http等传输协议的污染。为此,我想使用Destale as(imho),它应该被使用:即为传入的http请求提供访问点,提供路由和响应的呈现(html或格式良好的restful数据),但不做任何业务逻辑或数据库访问的提示。即使知道数据库存在,web层的业务是什么

可以说我过时了,但按照我的“前web统治一切,并凌驾于一切之上”的心态,业务逻辑永远不应该与web层运行在同一个O/S流程中。事实上,它甚至不应该在同一个盒子上。为此,是否有一种规范的方法可以跨域套接字或“nix套接字”从Clojure web框架(如基座)调用运行在TCP上的后端服务。FastCGI仍然是一个选项吗?

我设想有一个http请求进入数据库。然后,底座将其导向正确的功能。此函数通过TCP发送http中立消息(也就是说,不包括有关原始请求接收方式的任何信息),从而触发对业务逻辑层的异步调用。业务逻辑层完成它的工作,并将另一条仅包含数据的中立消息返回给调用函数,然后调用函数将数据交给呈现等,并构建http响应并发送回客户端。(为了简洁起见,省略了身份验证等。)

在我看来,基座代码应该非常简单、无状态和干净。它只是将http请求路由到“中立消息调度代码”,然后呈现结果。本质上,web层应该是一个非常薄的层,完全没有大脑。业务层对http应该是100%不可知的。它应该在一个单独的进程上运行。开发团队可能从未听说过http或被诅咒的“web”


那么,我如何实现这个无网络的涅盘呢?或者更准确地说,在使用uber awsome Clojure的同时,我如何将该死的“网络”放回它的盒子里。谢谢

除非我忽略了你问题的实质,否则你似乎已经有了一个定义良好的关注点分离(SoC)政策。从Clojure呼出是图书馆的选择问题。换句话说,由于Clojure代码只是“后端”的代理/代理的选择,例如
clj http
。除非我遗漏了您问题的实质,否则您似乎已经有了一个定义良好的关注点分离(SoC)策略。从Clojure呼出是图书馆的选择问题。换句话说,因为Clojure代码只是为“后端”选择代理/代理,例如
cljhttp