.NET Framework 管道模型
特点:管道模型是全家桶式, 不支持热拔插。一次性集成在里面。
请求进入ASP.NET 工作进程后,由进程创建HTTPWorkRequest对象,封装此次请求的所有信息,然后进入HttpRuntime 模块做进一步处理,HttpRuntime通过请求信息创建HttpContext 上下文对象,此对象贯穿整个管道,直到响应结束。同时创建或从应用程序池里初始化一个HttpApplication 对象,由此对象开始处理之前注册的多个HttpMoudle 对象,之后调用HttpHanlderFactory 创建HttpHandler 对象,最终处理此次请求内容,生成响应并返回。
.NET Core 管道模型
特点:支持热拔插,灵活,所以性能更好
IHttpMoudle 和IHttpHandler 已经不存在,取而代之的是中间件(middleware), Server接到请求后直接向后传递,依次经过每个中间件(middleware)处理,然后由最后一个中间件处理并生成响应内容后回传,再反向依次经过每个中间件,直到Server发送出去。中间件就像一层层滤网,过滤所有的请求和响应。
ASP.NET Core是一套全新的平台,已经不再向前兼容,设计追求组件化,追求高性能,没有全家桶。那么ASP.NET Core 是怎么搭建请求管道的呢?默认情况,管道返回一个404.然后你也可以增加请求的处理,这就是之前的Handler,只包含业务处理环节,其他的都是中间件(middleware).