我们知道ASP.NET Core请求处理管道由一个服务器和一组有序的中间件组成,所以从总体设计来讲是非常简单的,但是就具体的实现来说,由于其中涉及很多对象的交互,我想很少人能够地把它弄清楚。为了让读者朋友们能够更加容易地理解管道处理HTTP请求的总体流程,我们根据真实管道的实现原理再造了一个“模拟管道”并在此管道上开发了一个发布图片的应用,这篇文章旨在为你讲述管道是如何处理HTTP请求的

目录
一、HttpApplication
    FeatureCollection
    HostingApplication
二、HttpContext
    DefaultHttpContext
    HostingApplication
    小结
三、服务器
    HttpListenerServer
    ServerFactory
    小结

ASP.NET Core管道深度剖析(3):管道是如何处理HTTP请求的?

ASP.NET Core请求处理管道由一个服务器和一组有序排列的中间件组合而成。我们可以在这基础上作进一步个抽象,将后者抽象成一个HttpApplication对象,那么该管道就成了一个Server和HttpApplication的综合体(如图5所示)。Server会将接收到的HTTP请求转发给HttpApplication对象,后者会针对当前请求创建一个上下文,并在此上下文中处理请求,请求处理完成并完成响应之后HttpApplication会对此上下文实施回收释放处理。

我们通过具有如下定义的IHttpApplication<TContext>来表示上述的这个HttpApplication,泛型参数TContext代表这个泛化的上下文类型。一个HttpApplication对象在接收到Server转发的请求之后需要完成三项基本的操作,即创建上下文、在上下文中处理请求以及请求处理完成之后释放上下文,这三个基本操作搞好通过对应的三个方法来完成。

interface IHttpApplication<TContext>
   2: {
   3:     TContext CreateContext(IFeatureCollection contextFeatures); 
   4:     Task ProcessRequestAsync(TContext context);
void DisposeContext(TContext context, Exception exception);
   6: }

相关文章:

  • 2021-05-16
  • 2021-05-21
  • 2021-09-28
  • 2022-12-23
  • 2022-12-23
  • 2021-07-26
  • 2021-05-24
  • 2021-12-16
猜你喜欢
  • 2021-09-09
  • 2022-12-23
  • 2021-04-24
  • 2021-05-25
  • 2022-02-05
相关资源
相似解决方案