ASP.NET Web API的核心框架是一个消息处理管道,这个管道是一组HttpMessageHandler的有序组合。这是一个双工管道,请求消息从一端流入并依次经过所有HttpMessageHandler的处理。在另一端,目标HttpController被激活,Action方法被执行,响应消息随之被生成。响应消息逆向流入此管道,同样会经过逐个HttpMessageHandler的处理。这是一个独立于寄宿环境的抽象管道,如何实现对请求的监听与接收,以及将接收的请求传入消息处理管道进行处理并将管道生成的响应通过网络回传给客户端,这就是Web API寄宿需要解决的问题。[本文已经同步到《How ASP.NET Web API Works?》]

目录
一、HttpMessageHandler
二、DelegatingHandler
三、HttpServer
四、HttpRoutingDispatcher
五、HttpControllerDispatcher

一、HttpMessageHandler

ASP.NET Web API的消息处理管道由一组HttpMessageHandler经过“首尾相连”而成,ASP.NET Web API之所以具有较高的可扩展性,主要源于采用的管道式设计。虽然ASP.NET Web API框架旨在实现针对请求的处理和响应的回复,但是采用的处理策略因具体的场景而不同。

我们不可能也没有必要创建一个“万能”的处理器来满足所有的请求处理需求,倒不如让某个处理器只负责某个单一的消息处理功能。在具体的应用场景中,我们可以根据具体的消息处理需求来选择所需的处理器并组成一个完整的消息处理管道。在这里这个用于完成某个单一消息处理功能的处理器就是HttpMessageHandler。

这里的“消息处理”具有两个层面的含义,既包括针对请求消息的处理,还包括针对响应消息的处理。HttpMessageHandler直接或者间接继承自具有如下定义的抽象类型HttpMessageHandler,该类型定义在命名空间“System.Net.Http”下。ASP.NET Web API通过类型HttpRequestMessage和HttpResponseMessage来表示管道处理的请求消息和响应消息,所以对HttpMessageHandler的定义就很好理解了。

class HttpMessageHandler : IDisposable
   2: {
void Dispose();
bool disposing);
abstract Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken);
   6: }

相关文章:

  • 2021-09-25
  • 2022-03-06
  • 2021-12-10
  • 2022-12-23
  • 2021-08-07
  • 2022-12-23
  • 2021-05-10
  • 2021-11-23
猜你喜欢
  • 2021-07-20
  • 2021-08-02
  • 2021-10-17
  • 2021-07-11
  • 2021-11-27
  • 2021-10-18
相关资源
相似解决方案