ASP.NET Core1.0 带来的新特性
2016-06-15 13:45
711 查看
1、采用新的文件系统,不再通过工程文件(.sln和.csproj)来定义项目文件清单。
解决方案文件还是*.sln,但项目文件变成*.xproj了。在项目文件夹下新增的文件会被自动添加到项目中,不用再手动地执行把此文件包含在项目中。
2、Startup类
该类可以看作是整个ASP.NET Core的入口,该类主要存在3个方法:
Main--入口方法;
ConfigureServices--向IoC容器注册组件;
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请求过程中工作的。
![](https://images2015.cnblogs.com/blog/780135/201606/780135-20160615144508448-1468894317.png)
6、统一MVC和WebAPI
![](https://images2015.cnblogs.com/blog/780135/201606/780135-20160615144559604-1794850960.png)
ASP.NET Core统一了MVC和WebAPI,这表现在这两者共用同一套代码,并且在开发过程中不用再继承各自独立的Controller基类了。
7、Razor页面中引入新的Tag Helpers
8、其他一些特性如View Components,Caching…
相关文章推荐
- ASP.NET 允许跨域请求
- 【翻译整理】ASP.NET Web API 2
- ASP.NET MVC基于标注特性的Model验证:ValidationAttribute
- aspnet调用mysql存储过程
- Microsoft.AspNetCore.Routing路由
- ASP.NET Core 中间件详解及项目实战
- ASP.NET Core -- 安装版
- ASP.NET Core真实管道详解[1]:中间件是个什么东西?
- asp.net MVC 应用程序的生命周期
- ASP.NET Core 中文文档 第二章 指南(4.3)添加 View
- 基于ASP.NET MVC的ABP框架入门学习教程
- ASP.NET样板项目ABP框架的特性总结
- Asp.net WebApi + EF 单元测试架构 DbContext一站到底
- Asp.net WebApi + EF 单元测试架构 DbContext一站到底
- ASP.NET Core 源码阅读笔记(5) ---Microsoft.AspNetCore.Routing路由
- 如何在asp.net中使用多线程及队列,异步处理一个耗时的任务(原创)
- asp.net连接数据库 windows身份验证模式
- MVC4数据注解和验证
- ASP.NET——Bundling and Minification(捆绑和压缩)概述
- [转]在ASP.NET开发中容易忽略的2个小问题 Cookie乱码存取异常 和 iframe弹框的login跳转