设计EWGI兼容性

时间:2009-08-13 16:54:00

标签: erlang

我试图了解应该如何为EWGI兼容性设计中间件。鉴于目前还没有符合EWGI标准的Web服务器,我只能征求您的意见。

如果我理解规范。正确地说,中间件接收#ewgi_context {}记录作为输入,并返回相同类型的另一条记录。

问题是,中间件是否会在django中被调用两次,还是应该以递归方式调用其余的中间件?

此外,是否有任何建议的方法让中间件通知其余的中间件,其结果应该是最终响应? (例如,文件服务中间件命中文件,因此没有必要调用视图中间件)。由于我的观点是一个上下文记录,其余的中间件(或服务器)如​​何找出它是最终的响应?

2 个答案:

答案 0 :(得分:3)

  

鉴于目前还没有符合EWGI标准的Web服务器,我只能征求您的意见

不需要存在符合EWGI标准的Web服务器,因为它是EWGI的角色,用于统一对不同Web服务器的访问。这是EWGI的核心理念。

另一方面,如果您的意思是“符合EWGI的Web框架”,实际上有两个(或更多?)Web框架支持EWGI。这些是Erlang Web和BeepBeep。

  

还是应该以递归方式调用其余的中间件?

中间件应该以递归方式相互调用,因此决定下一步该做什么是中间件的作用。

  

此外,是否有任何建议的方法让中间件通知其余的中间件,其结果应该是最终的响应

为了回答你的上一个问题,我认为因为中间件以递归方式相互调用,实现这一目标的最简单方法是,如果答案是最终的,则不要调用其他中间件,并将#ewgi_context {}记录返回到ewgi层。 / p>

答案 1 :(得分:1)

中间件可以根据情况使用迭代或递归方法。

迭代方法的一个例子是:

http://groups.google.com/group/ewgi/browse_thread/thread/f9042018cb27baa3

其他简单示例位于ewgi_examples

一般来说,我更喜欢迭代方法,但是如果你有一个依赖于其他方法的中间件,那么递归方法可能会更好。

  

此外,是否有任何建议的方法让中间件通知其余的中间件,其结果应该是最终响应? (例如,文件服务中间件命中文件,因此没有必要调用视图中间件)。由于我的观点是一个上下文记录,其余的中间件(或服务器)如​​何找出它是最终的响应?

没有提议的方法。如果您使用递归方法作为疯狂回答您只需要返回ewgi_context。在迭代方法中,视图或视图调用者可以检查是否在ewgi_context中设置了响应主体和标头,并决定相应的操作。

总的来说,我认为ewgi是网络的unix管道。每个中间件都获得一个请求和响应(类似于管道中的stdin和stdout)来修改上下文(如果需要)并返回它。

希望这有帮助。