ASP.NET Web API 处理架构
来源:互联网 发布:ipad套子淘宝 编辑:程序博客网 时间:2024/06/05 19:56
这篇文章主要是介绍ASP.NET Web API的处理架构:当一个HTTP请求到达直到产生一个请求的过程。ASP.NET Web API 的处理架构图如下,主要有三层组成:宿主(hosting),消息处理管道(message handler pipeline)和控制器处理(controller handling).
宿主(Hosting)
底层负责Web API的宿主,Web API之间的接口和HTTP 处理引擎。一句话,这一层负责创建HttpRequestMessage实例。然后把他们推入到上层的消息处理管道。宿主层也负责消息处理管道返回的HttpResponseMessage 。目前在ASP.NET Web API里头已经内建的宿主选项有2个:self-hosting 和 web hosting, web hosting也就是宿主在IIS的ASP.net 的处理管道里,Self-hosting 是基于WCF channel stack,的 WCF Message 实例 ,然后转换到 HttpRequestMessage 实例然后把他们推给上层的消息处理管道。 Web-hosting 是基于IHttpAsyncHandler, 命名为 HttpControllerHandler, 它把 HttpRequest 转换为HttpRequestMessage.当然Web API hosting 是可扩展的,不仅仅局限于这两个选项,你可以根据自己的需求定制,社区已经有人实现第三方的宿主Louis DeJardin在OWIN created a host 。
消息处理管道(Message Handler Pipeline)
中间层是 message handler pipeline,这一部分就是 WCF Web API 的内容了,通过 HttpServer 类暴露, 他也扩展了 HttpMessageHandler 。这条管道提供了中间层的各种扩展点(addressing cross-cutting concerns)例如: 日志, HTTP 验证, ……
通常在这个管道的顶端是一个特殊的处理器: HttpControllerDispatcher。这个处理器负责获取和调用 一个 控制器(Controler) 处理请求。只是在使用基于控制器的编程模型(ApiController的派生类)的时候才使用HttpControllerDispatcher ,也可以使用完全不同的模型,只需要把最顶端的这个消息处理器替换掉就可以哦。
控制器处理(Controller Handling)
最后, 上层的控制器处理相关的流程,即:
- Action selection;
- Filter execution;
- Model binding;
- Action invocation;
- Response content creation via formatters.
这些处理过程都在 ApiController 实例里头完成, 被 HttpControllerDispatcher所调用。
上面的整个处理流程还是非常清晰地,本文只是简单的介绍下整个处理流程,后续的文章详细介绍各个部分。
- ASP.NET Web API 处理架构
- 异常处理在 ASP.NET Web API
- 架构设计(ASP.NET MVC+Knockout+Web API+SignalR)
- 架构设计(ASP.NET MVC+Knockout+Web API+SignalR)
- asp.net web api
- ASP.NET Web API
- asp.net web api
- asp.net web api
- asp.net web api
- ASP.NET Web API的消息处理管道: HttpRoutingDispatcher
- ASP.NET Web API之消息[拦截]处理
- ASP.NET Web API之消息[拦截]处理
- 细说Asp.Net Web API消息处理管道(二)
- 实战 ASP.NET Web API
- ASP.NET Web Api 教程
- ASP.NET Web API详解
- ASP.NET Web API 简介
- ASP.NET Web API GZip
- c语言总结
- 信息增益在决策树中的应用
- 圆圈中最后剩下的数字
- CSS样式块级元素居中的方法
- HTTPS通信原理
- ASP.NET Web API 处理架构
- mysql创建索引以及进程过程中出现的问题
- Spark 2.2源码编译 & 支持hadoop-2.6.0-cdh5.7.0
- ASP.NET Web API: 宿主(Hosting)
- Haproxy+keepalived(2)
- 《深入浅出MFC》第一、二章笔记
- 第二章 SQL命令参考-RELEASE SAVEPOINT
- 用GDB调试程序(五)
- HttpClient介绍