WebAPI-处理架构
2021-03-15 15:34
标签:red window contex 任务 web doc ssi 之间 接口 带着问题去思考,大家好! 问题1:HTTP请求和返回相应的HTTP响应信息之间发生了什么? 1:首先是最底层,托管层,位于WebAPI和底层HTTP栈之间 2:其次是 消息处理程序管道层,这里比如日志和缓存。OWIN的引用是将消息处理程序管道的一些功能下移到栈下端的OWIN中间件了。 3:控制器处理,HTTP响应,参数的验证和绑定。 托管层 首先是人生三大哲学问题; 1:是WebAPI和底层HTTP基础结构的接口,分三类(Windows进程,[服务啊,控制台啊]&Web托管[Web hosting,IIS]&OWIN的兼容服务器[Katana]) 2:它在架构最底层,托管层,位于WebAPI和底层HTTP栈之间 3:它的职责是负责API托管 比如:ASP.NET管道。HttpListener( HTTP 协议侦听器,https://docs.microsoft.com/zh-cn/dotnet/api/system.net.httplistener?redirectedfrom=MSDN&view=netframework-4.7.2).OWIN宿主。 负责创建HttpRquestMessage,返回HttpResponseMessage.转换为底层网络栈处理。 上面第二类,Web托管说下流程,托管层---HttControllerHandler---WebAPI管道,处理后的消息通过HttpResonseMessage实例复制为HttpResonse,然后在转给Asp.Net管道 消息处理管道 这层跟中间件的概念差不多。它有个扩展点,拦截器。 比如:日志和缓存,Web服务器网管接口,Python的WSGI. 首先要知道这几个类,HttpMessageHandler,DelegatingHandler
继承Object---HttpMessageHandler--DelegatingHandler--MessageProcessingHandler 抽象方法SendAsync接受HttpRequestMessage实例,返回Task 消息处理程序还需要一个数据成员,保存指向一个内部处理程序的指针和数据流逻辑,把请求和响应从一个处理程序委托给他的内部处理程序,DelegatingHandler定义了InnerHandler属性,将一个处理程序连接到其内部处理程序。 HttpConfiguration.MessageHandlers集合属性定义了消息处理程序委托的顺序。 路由分发 在消息处理程序末端。 有路由分发,HttpRoutingDispatcher类实现。根据匹配的IHTTPRoute类选择转发请求所用的下一个处理程序 和控制器分发:HttpControllerDispatcher类实现。调用ExecuteAsync方法,传入请求消息。 控制器处理 可以直接使用IHttpController,通常做法是从抽象类ApiController进行派生。 数据绑定: ApiController.ExecuteAsync方法调用一系列HttpParameterBinding实例。将参数添加到HttpActionContext实例的ActionArguments字典中 WebAPI-处理架构 标签:red window contex 任务 web doc ssi 之间 接口 原文地址:https://www.cnblogs.com/ccaa/p/12417045.html