• 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系统的路由对象类型)
     
    总结:
  • 相关阅读:
    poj1191(記憶化搜索)
    poj1088(記憶化搜索)
    二叉樹鏈表
    19_高级映射:一对多查询(使用resultMap)
    18_高级映射:一对一查询(使用resultMap)
    17_高级映射:一对一查询(使用resultType)
    15_CXF和Spring开发手机号查询网站
    14_CXF发布REST服务
    13_CXF和Spring整合发布服务
    12_CXF入门
  • 原文地址:https://www.cnblogs.com/liubiao/p/5242251.html
Copyright © 2020-2023  润新知