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系统的路由对象类型)
     
    总结:
  • 相关阅读:
    如何自建appender扩展Log4j框架
    在O(1)时间删除链表结点
    My First GitHub
    JAVA序列化和反序列化
    [转]Vim 复制粘帖格式错乱问题的解决办法
    Centos清理内存 内存回收释放及内存使用查看的相关命令
    Spark HA 的搭建
    Ambari安装
    Hadoop HA的搭建
    Hadoop32位和64位的查询
  • 原文地址:https://www.cnblogs.com/liubiao/p/5242251.html
Copyright © 2011-2022 走看看