ASP.NET Web API 运行框架

简介

本文主要概述下ASP.NET Web API的运行框架,即从接收到一个HttpRequest到相应的过程。

运行框架

API的框架主要如下图所示,主要由3层组成:hosting(宿主)、message handler(消息处理管道)和controller handler(控制器处理器)

 

hosting 宿主

最底层负责web api的宿主,例如这个接口在Web API和HTTP Runtime。简单说这个层负责创建HttpRequestMessage的实例,并且把他们推给上一层的消息处理管道;同时这层还负责把HttpResponseMessage返回给处理他们的管道。

一般有两个现成的hosting可选:SelfHost和WebHost。
SelfHost是基于WCF的,把Message换成HttpRequestMessage,并且推送到上层的消息处理管道。
WebHosting是基于HttpControllerHandler,把HttpRequest转成HttpRequestMessage。

WebAPI的宿主不限于这2个,还有一些社区贡献的,例如Louis Dejardin的OWIN 和 本文作者的一个host,基于Azure Service的。

Message Handler Pipeline 消息处理管道

中间层是由一个消息处理管道组成,类似于一个已有WCF Web API。这个管道暴露一个HttpServer类,他也扩展了HttpMessageHandler(组合模式)。

此管道提供了一些可扩展点,类似:日志、用户认证等。

在此管道上层有一个特别的handler:HttpControllerDispatcher。此handler是为此次请求负责获取、调用一个controller。

HttpControllerDispathcer仅在使用 controller-based programming model控制器基类编程模式(ApiController继承此类)时被使用。正常来说我们都是基于这个模式编码的。

Controller Handling 控制器处理器

最后,这最上层相当于controller的处理流程,就如:

Action selection

Filter 执行

Model binding

Action 调用

通过formatters输出内容

整个过程是在ApiController内部执行,由HttpControllerDispatcher调用。

最后

很多地方加了链接提供了详细的信息,请随意留言吧。

原文:

ASP.NET Web API Processing Architecture

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值