ASPNETCore有哪些好的功能

简述:

第一是依赖注入。

第二是日志系统架构。

第三是引入了一个跨平台的网络服务器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

来源:网络整理

版权申明:本文来源于网友收集或网友提供,如果有侵权,请转告版主或者留言,本


转载请注明:http://www.shhjfk.com/jbjj/jbjj/13613.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了