WebAPI-处理架构
https://www.cnblogs.com/ccaa/archive/2020/03/04/12417045.html
带着问题去思考,大家好!
问题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<HttpResponse Message>,异步生成一个HttpResponseMessage.这个方法是基于任务的异步模式。
消息处理程序还需要一个数据成员,保存指向一个内部处理程序的指针和数据流逻辑,把请求和响应从一个处理程序委托给他的内部处理程序,DelegatingHandler定义了InnerHandler属性,将一个处理程序连接到其内部处理程序。
HttpConfiguration.MessageHandlers集合属性定义了消息处理程序委托的顺序。
路由分发
在消息处理程序末端。
有路由分发,HttpRoutingDispatcher类实现。根据匹配的IHTTPRoute类选择转发请求所用的下一个处理程序
和控制器分发:HttpControllerDispatcher类实现。调用ExecuteAsync方法,传入请求消息。
控制器处理
可以直接使用IHttpController,通常做法是从抽象类ApiController进行派生。
数据绑定:
ApiController.ExecuteAsync方法调用一系列HttpParameterBinding实例。将参数添加到HttpActionContext实例的ActionArguments字典中
- ARM处理器架构-----异常/中断处理
- 基于Flink的流数据处理架构
- asp.net架构之请求处理过程:HttpModule,HttpHandler
- 大恶人吉日嘎拉之走火入魔闭门造车之.NET疯狂架构经验分享系列之(四)高效的后台权限判断处理
- 从几幅架构图中偷得半点海量数据处理经验
- Python-TensorFlow架构下CNN手写体识别(一)----简介与图像预处理
- 日处理20亿数据,实时用户行为服务系统架构实践
- Asp.Net WebAPI Get提交、Post提交处理
- 每秒处理10万订单乐视集团支付架构
- 网络层架构设计与实战九框架拓展设计之请求成功类型转换包装处理
- 大数据处理的架构逻辑
- Asp.Net WebApi 使用OWIN架构后,出现 “没有 OWIN 身份验证管理器与此请求相关联” 异常的解决办法
- 从Hadoop框架与MapReduce模式中谈海量数据处理(含淘宝技术架构)
- 基于6U VPX架构的Xilinx Virtex6+C6678 DSP+ADC+DAC+DDR3的信号处理卡
- 架构中的流程控制和处理方法
- 项目架构开发:异常处理及日志
- HEVC算法和体系结构:编码结构之编码时的分层处理架构
- 每秒处理10万订单的支付架构 乐视集团
- kafka socket架构 处理流程
- 【Struts2】2.异常处理和模型驱动及分层体系架构