關於我們

質量為本、客戶為根、勇於拼搏、務實創新

新聞公告

< 返回新聞公共列表

WebApi关键每日任务是啥?它的关键体制又是啥?

發布時間:2020-10-07 10:00:00

带著难题去思索,各位好!!

WebAPI关键每日任务是啥?它的关键体制又是啥?

关键每日任务是解决HTTP恳求并出示适度的回应。

1  信息流概述

HTTP信息流的架构部件大概分2种

  • 借助HTTP信息得到前后文的部件
  • 借助高层住宅程序编写实体模型得到前后文

第一层部件只借助来源于最底层“信息程序处理”管路的关键HTTP信息前后文。

 

 这幅图是信息解决管路和控制板管路。

依靠高层住宅程序编写实体模型的部件不一样,这种部件能够 浏览并应用程序编写架构抽象性层。

2  信息解决管路

HttpServer是信息解决管路的通道,HttpServer启用HttpClientFactory的CreatePipeline方式。应用全局性和路由器配备数据信息中出示的程序处理,复位管路。

HttpServer自身派生的DelegatingHandler类,HttpServer变成了信息解决管路中第一个程序处理,之后是了解好几个订制的DelegatingHandler目标构成,这种订制目标申请注册在HttpConfiguration中,然后是HttpRoutingDispatcher,最终要不是HttClientFactory.CreatePipline结构的另一个信息解决管路,要不就是说默认设置的HttpControllerDispatcher

 1:HttpServer将HttpClientFactory.CreatePipeline回到的值赋为自己的InnerHandler特性,变成管路的第一个连接点。

 2:启用自身的基类SendAsync方式。将决策权转交给下一个程序处理。

管路全部的信息解决都用这类方法转交

return base.SendAsync(request,cancellationToken)

 3:基类DelegatingHanlder立即启用目标的InnerHandler的SendAsync方式。目标的內部程序处理在自身的SendAsync方式中解决信息。最有一个就是说将恳求派发到控制板案例的程序处理

 

 它是根据每日任务的多线程管路。

 派发程序流程

HttpServer应用HttpRoutingDispatcher的一个案例做为信息程序处理管路的最后一个连接点。这是承担信息解决管路的最后一个连接点,或是默认设置HttpControllerDispatcher。 

HttpControllerDispatcher派生自HttpMessageHandler。HttpMessageHandler没法立即启用。HttpRoutingDispatcher将派发程序流程案例封裝在一个HttpMessageHandler目标中实行。

var invoker=(routeData.Route==null||routeData.Route.Handler==null)?_defaultInvoker:new HttpMessageInvoker(routeData.Route.Handler,disposeHandler:false);return invoker.SendAsync(request,cancellationToken);

HttpControllerDispatcher实行三个每日任务

  • 应用一个案例IHttpControllerSelector插口目标,挑选一个控制板
  • 应用一个案例IHttpControllerActivator插口目标,挑选一个控制板的案例。
  • 传到一个控制板前后文,实行控制板案例

ASP.Net Web Api出示一个默认设置的保持DefaultIHttpControllerSelector,

  • 分辨控制板是不是能够 从路由器数据信息立即发觉,应用根据特性的路由器时,这一条为真
  • 查验控制板名是不是合理,假如操纵名缺少或是为空字符串数组,404.
  • 应用控制板名,在控制板信息内容缓存文件中找寻配对的HttpControllerDescriptor并回到

3  控制板管路

ApiController解决实体模型。

 

 ApiController.ExecuteAsync方式內部实行。

 



/../template/Home/Zkeys/PC/Static