zoukankan      html  css  js  c++  java
  • .Net Core(三)MVC Core

    MVC Core的改动感觉挺大的,需要的功能大多从Nuget安装,还内置了IOC,支持SelfHost方式运行等等。

    一、项目结构的变化
    创建的新MVC项目的结构发生了变化,比如:静态文件需要统一放置到wwwroot文件夹,配置文件变成了appsettings.json,用startup.cs文件代替了global文件;原先对view命名空间的引用配置在view下的web.config,现在则改成了使用_ViewImport.cshtml文件,并且用razor语法来配置。

    二、内置IOC
    a)Autofac是很好的IOC容器,.Net Core下也还是可以用的,同时Core也内置了IOC,typescript也自带IOC,也许注入的方式会作为语言本身的一种功能吧。
    内置IOC也支持选择多种对象生命周期,比如Transient(内次请求都会实例化)、Scoped(每次Web请求)、Singleton(整个应用的生命周期)。
    b)单个对象的注入只需在Startup.ConfigureServices中设置:services.AddSingleton(typeof(Person));
    之后在用到Person的地方通过构造函数注入。
    c)实际应用了不可能采用单个对象的注入的方式,根据程序集来配置自动注入的方式为:
    var serviceAsm = Assembly.Load(new AssemblyName("2_1 MVC Core Lib"));
    var serviceTypes = serviceAsm.GetTypes().Where(t => typeof(IServiceTag)
     .IsAssignableFrom(t) && !t.GetTypeInfo().IsAbstract);
    foreach (var serviceType in serviceTypes) {
      var interfaceTypes = serviceType.GetInterfaces().Where(t => t.Name != "IServiceTag");
      foreach (var interfaceType in interfaceTypes) {
        services.AddSingleton(interfaceType, serviceType);
      }
    }
    增加t.Name != "IServiceTag"的限制是有必要的,IServiceTag是Service接口的标记,如果不增加这个判断,会将IServiceTag也注入。

    d)IOC可以“递归”注入,但要保证根对象也是被IOC创建的,而不是显式new出来的。比如如果用IOC创建ExceptionFilter,那么它自身引用的其它类也可以自动注入了。手动用IOC创建nFilter并添加到MVC中的方法为:
    services.AddMvc(options => {
      var serviceProvider = services.BuildServiceProvider();
      var filter = serviceProvider.GetService<ExceptionFilter>();
      options.Filters.Add(filter);
    });

    在前端代码中还可以用HttpContext.RequestServices.GetService来让IOC创建对象。


    学习资料:如鹏网.net提高班http://www.rupeng.com/News/10/4603.shtml

  • 相关阅读:
    dutacm.club_1094_等差区间_(线段树)(RMQ算法)
    dutacm.club_1087_Common Substrings_(KMP)_(结合此题通俗理解kmp的next数组)
    dutacm.club_1089_A Water Problem_(dp)
    14年第五届蓝桥杯第八题_地宫取宝_(记忆化搜索)
    14年第五届蓝桥杯第七题_蚂蚁感冒_(思维)
    dutacm.club_1085_Water Problem_(矩阵快速幂)
    HDU_2476_String painter_(区间dp)
    第五届蓝桥杯校内选拔第七题_(树型dp)
    第五届蓝桥杯校内选拔第六题_(dfs)
    15年第六届蓝桥杯第九题_(矩阵快速幂优化的动态规划)
  • 原文地址:https://www.cnblogs.com/zhixin9001/p/7496658.html
Copyright © 2011-2022 走看看