zoukankan      html  css  js  c++  java
  • ASP.NET Core1.0 带来的新特性

    1、采用新的文件系统,不再通过工程文件(.sln和.csproj)来定义项目文件清单。

    解决方案文件还是*.sln,但项目文件变成*.xproj了。在项目文件夹下新增的文件会被自动添加到项目中,不用再手动地执行把此文件包含在项目中。

    2、Startup类

    该类可以看作是整个ASP.NET Core的入口,该类主要存在3个方法:

    1. Main--入口方法;
    2. ConfigureServices--向IoC容器注册组件;
    3. Configure--注册Mideware

    也许你第一次见到这个类会有点不明觉厉,该类中3个方法既没有接口约束,也没有从父类继承。微软在该处采用了这样一种约定:必须要存在一个名叫Startup的类,同时该类必须要存在上面提到的3个方法,该ASP.NET项目才能顺利运行成功。

    3、读取Appsetting

    由于已经不再存在web.config文件,所以新的Appsetting也采取了更加通用的设计。在新建项目的时候VS已经帮我们添加了默认的appsettings.json文件。如下的配置:

    {
      "Logging": {
        "IncludeScopes": false,
        "LogLevel": {
          "Default": "Debug",
          "System": "Information",
          "Microsoft": "Information"
        }
      }
    }

     同时在Startup类的构造函数中将appsettings.json文件添加到了ConfigurationBuilder对象中:

    public Startup(IHostingEnvironment env)
    {
        var builder = new ConfigurationBuilder()
            .SetBasePath(env.ContentRootPath)
            .AddJsonFile("appsettings.json", true, true)
            .AddJsonFile($"appsettings.{env.EnvironmentName}.json", true)
            .AddEnvironmentVariables();
        Configuration = builder.Build();
    }

     同时我们还可以看到一个环境变量env.EnvironmentName,这个设计也有利于我们区分DEV,FAT,UAT,PRD等不同的运行环境。这一变量可以在项目配置中设置(launchSettings.json):

    {
      "iisSettings": {
        "windowsAuthentication": false,
        "anonymousAuthentication": true,
        "iisExpress": {
          "applicationUrl": "http://localhost:60111/",
          "sslPort": 0
        }
      },
      "profiles": {
        "IIS Express": {
          "commandName": "IISExpress",
          "launchBrowser": true,
          "launchUrl": "api/values",
          "environmentVariables": {
            "ASPNETCORE_ENVIRONMENT": "Development"
          }
        },
        "TodoApi": {
          "commandName": "Project",
          "launchBrowser": true,
          "launchUrl": "http://localhost:5000/api/values",
          "environmentVariables": {
            "ASPNETCORE_ENVIRONMENT": "Development"
          }
        }
      }
    }

    4、默认自带IoC容器,统一依赖注入API

    依赖注入技术从很大程度上使得代码更加模块化,会在一定程度上迫使你写出低耦合,SRP的代码,另外有着良好设计的代码也具备更好的可测试性。

    ASP.NET Core自己内置了一个非常轻量级的IoC容器,如以下代码:

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        // Add framework services.
        services.AddMvc();
    
        // Add our respository type
        services.AddSingleton<ITodoRepository, TodoRepository>();
    }

    当然你可以引入第三方比较成熟的IoC容器,项目Dependency Injection定义了一组抽象,只需要将具体的IoC容器实现该抽象即可整合进ASP.NET Core中。就目前的情况来看ASP.NET Core内置的容器比较适合ASP.NET Core内部的组建使用,而实际业务依赖则可以使用第三方更强大的容器来注册。

    另外在ASP.NET Core新的设计中,不光Controller可以进行依赖注入,Filter,View以及ViewModel都可进行注入。这方面的内容比较多,也许会在单独的文章中进行介绍。

    5、中间件(Middleware

    这一设计借鉴自OWIN katana 项目的管道设计。什么是Middleware?下面这幅图很好的描述了Middleware是如何在http请求过程中工作的。

    6、统一MVC和WebAPI

    ASP.NET Core统一了MVC和WebAPI,这表现在这两者共用同一套代码,并且在开发过程中不用再继承各自独立的Controller基类了。

    7、Razor页面中引入新的Tag Helpers

    8、其他一些特性如View Components,Caching…

     

  • 相关阅读:
    PowerToys插件扩展(类似Alfred)
    .net打独立运行环境遇到无法trim遇到的bug
    blazor wasm开发chrome插件
    将php代码部署到新浪云测试(简单方法,包含数据库的连接)
    python修改csv某一列的内容
    windows10调用libcurl
    Java动态脚本Groovy,高级啊!
    Linux 配置Git
    Java动态脚本Groovy读取配置文件
    Java动态脚本Groovy获取Bean(奇淫技巧操作)
  • 原文地址:https://www.cnblogs.com/frankyou/p/5587200.html
Copyright © 2011-2022 走看看