我有一个关于 OWIN 管道的简单问题。我非常了解这个规范的整个概念,但有些东西我还没有完全消化。
根据网上的几篇帖子,有一个 OWIN 管道,它由几个开发人员定义的模块(或中间件组件)组成,由 owin Host 构建。然后是服务器,它将侦听请求并将它们传递给 = 通过 OWIN 组件的管道。
我不完全理解的一点是为什么我们需要管道。例如,让我们想象在 StartUp 类中我们有类似的东西:
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.Use<CustomMiddleware>(new CustomComponent());
var config = new HubConfiguration { EnableCrossDomain = true };
app.MapHubs(config);
string exeFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
string webFolder = Path.Combine(exeFolder, "Web");
app.UseStaticFiles(webFolder);
}
}
在上面的示例中,我们要求 OWIN 主机构建三个 OWIN 中间件组件的管道。据我了解,服务器会将请求(可能包含在字典中)转发到该管道中的第一个组件,然后该组件将执行一些任务并将其传递给下一个组件,依此类推。
我想知道为什么我们需要获取每个请求中涉及的所有组件;例如,如果我们只要求静态 html 页面,为什么不只打扰处理静态文件的组件呢?我的意思是为什么这样的请求需要 Web Api 的参与。