Ø 前言
ASP.NET 的应用程序都会有自己的消息处理管道和生命周期,比如:ASP.NET Web 应用程序(Web Form)、ASP.NET MVC,还有本文将讨论的 ASP.NET Web API 2。消息处理管道是一个复杂的过程,导致于很多人对这块半知半解,包括本人也是。本文将从以下几点展开研究,不对之处,欢迎指出。
1. 为什么要了解消息处理管道或生命周期
我们知道,Web 应用程序都是发布到 IIS(服务器)上,提供给其他程序访问。而每个请求“进来”,我们的 IIS 帮我们做了哪些事情呢?这就涉及到消息处理管道了,每个一个请求进来,都会执行相同的生命周期。而有些消息管道是我们可以写程序干预的,比如:DelegatingHandler(委托处理程序)、和一系列的过滤器等等。这样我们就可以编写自己的处理程序,来完成我们制定的个性化需求了。
2. 首先, 我们来看下 ASP.NET Web API 2 的生命周期(来至于:https://www.asp.net/media/4071077/aspnet-web-api-poster.pdf)
1) 首先程序初始化时,自动创建了一个 HttpServer 对象,该对象用于配置整个Web 环境所需的配置,例如:委托处理程序、路由配置、过滤器、媒体类型格式化程序等等,该类继承于 System.Net.Http.DelegatingHandler。也属于委托处理程序中的一种,是比较特殊的处理程序。
1. 委托处理程序:它是每个请求必须经历的消息通道,可以指定多个消息处理程序,从而形成消息处理程序委托链,当请求到来时最先执行消息处理程序。委托处理程序继承于 System.Net.Http.HttpMessageHandler 类,该类是消息处理程序的基类。
2. 路由配置:用于配置 HTTP 请求的路由格式,由 System.Web.Http.Dispatcher.HttpRoutingDispatcher 处理程序来找到请求的 Controller 和 Action,同样继承于 System.Net.Http.HttpMessageHandler 类。
3. 过滤器:也是我们会经常接触的,大致分为四种类型:身份验证过滤器、授权过滤器、动作过滤器、以及异常过滤器。
4. 媒体类型格式化程序:用于配置请求和响应媒体类型格式的相关设置,例如:Json、XML 格式的设置等。
待完善…
ASP.NET Web API 2 消息处理管道的更多相关文章
-
ASP.NET Web API的消息处理管道: Self Host下的消息处理管道[上篇]
ASP.NET Web API的消息处理管道: Self Host下的消息处理管道[上篇] ASP.NET Web API服务端框架核心是一个独立于具体寄宿环境的消息处理管道,它不关心请求消息来源于何 ...
-
ASP.NET Web API的消息处理管道: HttpRoutingDispatcher
ASP.NET Web API的消息处理管道: HttpRoutingDispatcher 认情况下,作为消息处理管道“龙头”的HttpServer的Dispatcher属性返回一个HttpRouti ...
-
ASP.NET Web API的消息处理管道:";龙头";HttpServer
ASP.NET Web API的消息处理管道:"龙头"HttpServer 一般来说,对于构成ASP.NET Web API消息处理管道的所有HttpMessageHandler来 ...
-
ASP.NET Web API标准的“管道式”设计
ASP.NET Web API的核心框架是一个消息处理管道,这个管道是一组HttpMessageHandler的有序组合.这是一个双工管道,请求消息从一端流入并依次经过所有HttpMessageHan ...
-
ASP.NET Web API的安全管道
本篇体验ASP.NET Web API的安全管道.这里的安全管道是指在请求和响应过程中所经历的各个组件或进程,比如有IIS,HttpModule,OWIN,WebAPI,等等.在这个管道中大致分两个阶 ...
-
Web API之消息处理管道
Web API之消息处理管道 前言 MVC有一套请求处理的机制,当然Web API也有自己的一套消息处理管道,该消息处理管道贯穿始终都是通过HttpMessageHandler来完成.我们知道请求信息 ...
-
Web APi之消息处理管道(五)
前言 MVC有一套请求处理的机制,当然Web API也有自己的一套消息处理管道,该消息处理管道贯穿始终都是通过HttpMessageHandler来完成.我们知道请求信息存在 RequestMessa ...
-
ASP.NET Web API标准的“管道式”设计
详见:http://www.cnblogs.com/artech/p/asp-net-web-api-pipeline.html http://www.codeproject.com/Articles ...
-
ASP.NET Web API消息处理管道:Self Host下的消息处理管道[下篇]
ASP.NET Web API消息处理管道:Self Host下的消息处理管道[下篇] 我们知道ASP.NET Web API借助于HttpSelfHostServer以Self Host模式寄宿于当 ...
随机推荐
-
Python’s SQLAlchemy vs Other ORMs[转发 4]peewee
peewee peewee is a small, expressive ORM. Compared to other ORMs, peewee focuses on the principal of ...
-
Google镜像站更新地址
越来越觉得某度的行为无耻无下限,Google镜像站地址,不方便访问Google的可以参考,后面会尽量保持更新可用的镜像库. (收藏地址即可,免得镜像站被封) https://g.jikewenku.c ...
-
jQuery CSS 的操作函数
jQuery CSS 操作函数 下面列出的这些方法设置或返回元素的 CSS 相关属性. CSS 属性 描述 css() 设置或返回匹配元素的样式属性. height() 设置或返回匹配元素的高度. o ...
-
ORACLE的RMAN
1.什么是RMAN? RMAN可以用来备份和还原数据库文件.归档日志和控制文件.它也可以用来执行完全或不完全的数据库恢复. 注意:RMAN不能用于备份初始化参数文件和口令文件. RMAN启动数据库上的 ...
-
java设计模式之桥接模式
桥接模式 桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化.这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦.这种模式涉及到一个作为桥接的 ...
-
ORACLE聚合函数细节
select * from emp order by mgr; 概要 select count(1), --14 sum(1), --14 count(*), --14 count(distinct ...
-
数据库索引------B-Tree 索引和 Hash 索引的对比
对于 B-tree 和 hash 数据结构的理解能够有助于预测不同存储引擎下使用不同索引的查询性能的差异,尤其是那些允许你选择 B-tree 或者 hash 索引的内存存储引擎. B-Tree 索引的 ...
-
[luogu P3960] [noip2017 d2t3] 队列
[luogu P3960] [noip2017 d2t3] 队列 题目描述 Sylvia 是一个热爱学习的女♂孩子. 前段时间,Sylvia 参加了学校的军训.众所周知,军训的时候需要站方阵. Syl ...
-
shell脚本示例:计算毫秒级、微秒级时间差
bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 有时候需要计算命令的执行时间长度,可以使用time命令,虽然t ...
-
Setting Up Swagger 2 with a Spring REST API
Last modified: August 30, 2016 REST, SPRING by baeldung If you're new here, join the next webinar: & ...