带著难题去思索,各位好!!
WebAPI关键每日任务是啥?它的关键体制又是啥?
关键每日任务是解决HTTP恳求并出示适度的回应。
1 信息流概述
HTTP信息流的架构部件大概分2种
第一层部件只借助来源于最底层“信息程序处理”管路的关键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实行三个每日任务
ASP.Net Web Api出示一个默认设置的保持DefaultIHttpControllerSelector,
3 控制板管路
ApiController解决实体模型。
ApiController.ExecuteAsync方式內部实行。
TOP