我试图了解应该如何为EWGI兼容性设计中间件。鉴于目前还没有符合EWGI标准的Web服务器,我只能征求您的意见。
如果我理解规范。正确地说,中间件接收#ewgi_context {}记录作为输入,并返回相同类型的另一条记录。
问题是,中间件是否会在django中被调用两次,还是应该以递归方式调用其余的中间件?
此外,是否有任何建议的方法让中间件通知其余的中间件,其结果应该是最终响应? (例如,文件服务中间件命中文件,因此没有必要调用视图中间件)。由于我的观点是一个上下文记录,其余的中间件(或服务器)如何找出它是最终的响应?
答案 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)来修改上下文(如果需要)并返回它。
希望这有帮助。