网站大量收购独家精品文档,联系QQ:2885784924

第3章消息处理管道.PDF

  1. 1、本文档共42页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3 章 消息处理管道 ASP.NET Web API 的核心框架是一个消息处理管道,这个管道是一组 HttpMessageHandler 的有序组合。这是一个双工管道,请求消息从一端流入 并依次经过所有HttpMessageHandler 的处理。在另一端,目标HttpController 被激活,Action 方法被执行,响应消息随之被生成。响应消息逆向流入此管 道,同样会经过逐个 HttpMessageHandler 的处理。这是一个独立于寄宿环境 的抽象管道,如何实现对请求的监听与接收,以及将接收的请求传入消息处 理管道进行处理并将管道生成的响应通过网络回传给客户端,这就是Web API 寄宿需要解决的问题。 104 第3 章 消息处理管道 3.1 HttpMessageHandler 管道 ASP.NET Web API 的核心框架采用管道式设计,这个用于“处理请求、响应回复”的管 道是一组HttpMessageHandler 的有序组合。这是一个“双工管道”,相反方向的请求消息和 响应消息同时在这个管道中流动并经过逐个HttpMessageHandler 的处理。 3.1.1 HttpMessageHandler ASP.NET Web API 的消息处理管道由一组HttpMessageHandler 经过“首尾相连”而成, ASP.NET Web API 之所以具有较高的可扩展性,主要源于采用的管道式设计。虽然ASP.NET Web API 框架旨在实现针对请求的处理和响应的回复,但是采用的处理策略因具体的场景而 不同。 我们不可能也没有必要创建一个“万能”的处理器来满足所有的请求处理需求,倒不如 让某个处理器只负责某个单一的消息处理功能。在具体的应用场景中,我们可以根据具体的 消息处理需求来选择所需的处理器并组成一个完整的消息处理管道。在这里这个用于完成某 个单一消息处理功能的处理器就是HttpMessageHandler 。 这里的“消息处理”具有两个层面的含义,既包括针对请求消息的处理,还包括针 对响应消息的处理。HttpMessageHandler 直接或者间接继承自具有如下定义的抽象类型 HttpMessageHandler ,该类型定义在命名空间“System.Net.Http ”下。在本书第2 章中我 们已经提到过ASP.NET Web API 通过类型HttpRequestMessage 和HttpResponseMessage 来表示管道处理的请求消息和响应消息,所以对 HttpMessageHandler 的定义就很好理 解了。 public abstract class HttpMessageHandler : IDisposable { public void Dispose(); protected virtual void Dispose(bool disposing); protected abstract TaskHttpResponseMessage SendAsync( HttpRequestMessage request, CancellationToken cancellationToken); } ASP.NET Web API 2 框架揭秘 Error! Use the Home tab to apply 标题 2 to the text that you want to appear here. 105 如上面的代码片段所示,抽象类 HttpMessageHandler 定义了一个受保护的抽象方法 SendAsync,这是一个采用针对Task 的“并行编程模式”的异步方法,在后续的章节中我们 会看到 ASP.NET Web API 的应用程序接口基本上都采用这样的定义方式。对于这个 SendAsync 方法来说,request 参数表示传递给当前HttpMessageHandler 进行处理的请求,这 是一个HttpRequestMessage 对象。另一个参数cancellationToken 是一个用于发送取消操作信 号的

文档评论(0)

ldj215323 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档