zoukankan      html  css  js  c++  java
  • WebApi框架概述

    WebApi框架,可分为三层:托管层、消息处理程序托管层、控制器处理层。

    一、托管层:

    即Host,是WebAPI宿主,如:控制台,Windows服务等。

    寄宿方式。

    1、定制托管。

    2、自托管。

    3、Web托管

    Owin寄宿 ,如Katana, 在一个Owin兼容的服务器上建立一个WebApi层,生成HttRequestMessage,WebApi处理完毕后,把HttpResponseMessage写入 Owin上下文。

    WebApi相关对象(负责框架与外表数据交换的载体,Http包的托管封装):

    1)HttRequestMessage

      WebAPI封装的请求对象(从Http请求包解析而来,对应之前HttpWebRequest,在System.Net.Http中)

    2)HttpResponseMessage

        WebAPI封装的返回对象(从托管代码最终生成的http返回请求对象,由框架转换为http响应包)。

    二、消息处理程序托管层

    HttpServer:WebApi 消息处理通道,可在此出添加扩展处理程序,如代理,网关,缓存处理,访问记录。

    核心对象:HttpMessageHandler 类。

                  DelegatingHandler抽象类, 用于构建处理链,通过InnerHanlder属性进行传递,责任链模式实现

    处理流程:

    1 HttpRequestMessage

    2、myDelegatingHandler1

        myDelegatingHandler2

        myDelegatingHandler3

    3、路由分发处理程序

      1)控制器选择(HttpRoutingDispacher)

             

    4、控制分发处理程序   

          1)控制器选择(HttpControllerDispacher)

        ControllerSelector (工厂模式实现)=> ControllerDescription (工厂模式实现)。

          2)错误处理。

    5、HttpResponseMessage

      4、=> 3、=> 2、=> 5、

    三、控制器处理层

    1、根据上下文信息,定位控制器中要请求的方法;

    ApiController

    实现IHttpController接口。

    功能:身份认证,授权认证,模型检查。

    1)格式化

    2)模型绑定

      参数映射为对象模型,如 Hotel类型

         媒体类型解析。

    3)筛选器。

       IActionFilter接口,权限验证等。

    ----------------

    核心对象介绍:

    HttpMessageHandler 核心类,针对请求的处理实现在SendAsync中,针对响应的处理通过返回类型Task<HttpResponseMessage>完成
    HttpRequestMessage Content属性封装Http主体信息
    HttpResponseMessage StatusCode、ReasonPhrase属性表示响应状态码与描述
    DelegatingHandler 用于构建处理链,通过InnerHanlder属性进行传递,是责任链模式的实现
    HttpServer Dispatcher属性指向最终的分发器对象,Configuration属性包含了所有的配置信息。
    HttpConfiguration

    全局配置信息:托管层、消息处理程序管道层、控制器处理层等配置。

  • 相关阅读:
    浏览器缓存
    HTML学习笔记(九) Web Socket
    [转]maven2中snapshot快照库和release发布库的区别和作用
    [转]maven2中snapshot快照库和release发布库的应用
    CentOS 7 mini 试用笔记
    Windows找出占用端口的进程
    ORA-24408: could not generate unique server group name
    Oracle中NVL、NVL2、NULLIF 三个函数的区别?
    【代码大全-读书笔记】第1章 欢迎进入软件构建的世界
    【代码大全-读书笔记】前言
  • 原文地址:https://www.cnblogs.com/coolen/p/5609814.html
Copyright © 2011-2022 走看看