简述:
第一是依赖注入。
第二是日志系统架构。
第三是引入了一个跨平台的网络服务器kestrel。可以没有iis,apache和nginx就可以单独运行。
第四是可以使用命令行创建应用。
第五是使用appsettings来配置工程。
第六是使用startup来注册服务。
第七是更好的支持异步编程。
第八是对于跨网站的请求的预防和保护机制。
详解:
1、依赖注入
ASP.NETCore支持依赖关系注入(DI)软件设计模式,这是一种在类及其依赖关系之间实现控制反转(IoC)的技术。
2、日志系统架构
在ASP.NETCore中关于日志的变化是非常令人欣慰的,因为它现在不是作为MVC中间件配置的一部分了,而是Host的一部分,这句话好像有点别扭,囧~。这意味着你可以记录到更加底层产生的一些错误信息了。
现在你可以这样来扩展日志配置。.net2.0
1
2
3
4
5
publicstaticIWebHostBuildWebHost(string[]args)=
WebHost.CreateDefaultBuilder(args)
.UseStartupStartup()
.ConfigureLogging(factory={你的配置})
.Build();
3、跨平台的网络服务器kestrel
可以没有iis,apache和nginx就可以单独运行,你可以在Windows、Mac和Linux上跨平台的开发和运行你的ASP.NETCore应用。
4、可以使用命令行创建应用
使用dotnet命令创建.NETCore项目
创建项目文件夹
利用”dotnetnew–tweb“命令创建web项目,用这个命令创建的其实就是.NetCore项目
执行“dotnetrestore”命令恢复依赖的NuGet包
执行“dotnetrun”启动MVC之后在浏览器中输入
ASP.NETCore的一些组件已经提供了一些实例的绑定,像AddMvc就是MvcMiddleware在IServiceCollection上添加的扩展方法。
789101publicstaticIMvcBuilderAddMvc(thisIServiceCollectionservices){if(services==null){thrownewArgumentNullException(nameof(services));}varbuilder=services.AddMvcCore();builder.AddApiExplorer();builder.AddAuthorization();AddDefaultFrameworkParts(builder.PartManager);...
}
7、更好的支持异步编程
步编程就是通过Task.Run()来实现的。
了解线程的人都知道,新开一个线程来处理事务这个很常见,但是在以往是没办法接收线程里面返回的值的。所以这时候就该await出场了,await从字面意思不难理解,就是等待的意思。
执行await的方法必须是async修饰的,并且是Task的类型。异步执行后,返回的信息存储在result属性中。但并非主进程就会卡在await行的代码上,执行到await方法之后主线程继续往下执行,无需等待新的线程执行完再继续。只有当需要用到新线程返回的result结果时,此时主进程才会等待新线程执行完并返回内容。也就是说,若无需用到新线程返回的结果,那么主进程不会等待。
async和await呢,返回类型就3种:void、Task、TaskTResult。
8、对于跨网站的请求的预防和保护机制
ASP.NETCore使用ASP.NETCoredataprotectionstack来实现防请求伪造。如果在服务器集群中必配置ASP.NETCoreDataProtection,有关详细信息,请参阅Configuringdataprotection。
在ASP.NETCoreMVC2.0中,FormTagHelper为HTML表单元素注入防伪造令牌。例如,Razor文件中的以下标记将自动生成防伪令牌:
formmethod="post"!--formmarkup--/form
在以下情况为HTML格式元素自动生成防伪令牌:
该form标签包含method="post"属性
action属性为空(action="")或者
未提供action属性(formmethod="post")。
您可以通过以下方式禁用自动生成HTML表单元素的防伪令牌:
明确禁止asp-antiforgery,例如
formmethod="post"asp-antiforgery="false"/form
通过使用标签帮助器!禁用语法,从标签帮助器转化为表单元素。
!formmethod="post"/!form
在视图中移除FormTagHelper,您可以在Razor视图中添加以下指令移除FormTagHelper:
removeTagHelperMicrosoft.AspNetCore.Mvc.TagHelpers.FormTagHelper,Microsoft.AspNetCore.Mvc.TagHelpers来源:网络整理
版权申明:本文来源于网友收集或网友提供,如果有侵权,请转告版主或者留言,本