zoukankan      html  css  js  c++  java
  • Web API框架学习——路由(一)

    HttpConfiguration(ASP.NET Web API管道的配置是通过HttpConfiguration来完成) :
    包括路由注册在内的对整个ASP.NET Web API管道的配置是通过HttpConfiguration来完成的。
    如果采用Web Host寄宿模式,此HttpConfiguration可以通过静态类型
    GlobalConfiguration来获取。
     
    在Application_Start()方法中进行路由注册:
    GlobalConfiguration.Configure(WebApiConfig.Register);
     
    Configure方法传入一个委托参数
    来看一下这个委托的传入参数HttpConfiguration类型的变量Configuration:
    其在CreateConfiguration方法中进行实例化:
    构造函数:
    RouteTable.Routes是RouteCollection类型的对象,是ASP.NET路由系统中的全局路由集合
    HostedHttpRouteCollection包含一个RouteCollection类型的变量,在构造函数中将传入的RouteTable.Routes对象赋值给了该变量
    构造函数:
    HttpConfiguration中定义了一个HttpRouteCollection类型的属性Routes,在构造函数中进行了赋值,传入的是HostedHttpRouteCollection类型的对象,HostedHttpRouteCollection类是HttpRouteCollection的子类
     
    再看一下这个,Routes属性实际是HostedHttpRouteCollection类型,所以采用Web Host寄宿模式下全局路由注册在HostedHttpRouteCollection中
     
    MapHttpRoute方法为扩展方法:
    其中调用了CreateRoute方法,CreateRoute为虚方法,被子类重写,所以来看HostedHttpRouteCollection中的CreateRoute方法
    创建的是HostedHttpRoute类型的对象
    MapHttpRoute中的Add方法在HostedHttpRouteCollection中重写:
    由此可见,Web Host模式的路由注册,还是将路由对象注册到了ASP.NET路由系统的RouteCollection集合中
     
    我们可以将HostedHttpRoute对象看成对一个Route对象的封装,如下面的代码片段所示,
    这个被封装的Route对象对应着只读属性OriginalRoute。实现在HostedHttpRoute之中的核
    心路由功能基本上是通过这个Route对象完成的,所以我们才说ASP.NET Web API的路由在
    Web Host寄宿模式下还是利用ASP.NET自身的路由系统实现的。
    (OriginalRoute的类型为Route(实际为HttpWebRoute)类型,正是ASP.NET系统的路由对象类型)
     
    总结:
  • 相关阅读:
    设计模式 — 责任链模式
    BlockingQueue 阻塞队列(生产/消费者队列)
    DDD工作流持久化(十六)
    js中匿名函数和回调函数
    DDD模型领域WF到领域层(十五)
    DDD领域模型系统的工作流(十四)
    DDD领域模型数据访问权限之权限(十二)
    DDD领域模型数据访问之对象(十一)
    DDD领域模型数据访问权限之用户权限(十)
    DDD领域模型数据访问权限(九)
  • 原文地址:https://www.cnblogs.com/liubiao/p/5242251.html
Copyright © 2011-2022 走看看