ASP.NET Core 学习笔记(一) 认识ASP.NET Core

  今年一直都在从事C/S端开发,包括目前工作也是使用winform进行UI展示,导致Core的学习一拖再拖,临近年底终于不再懒惰,搞起!

ASP.NET Core和ASP.NET的简单对比

  首先,ASP.NET Core是开源跨平台的高性能框架,与之前的ASP.NET相比最大的区别肯定就是跨平台了。ASP.NET受制于传统的System.Web库,约束了其未来的发展,依赖与IIS和.NET Framework框架导致ASP.NET不能跨平台(因为IIS和.NET Framework是不能跨平台的,只能部署在window平台)。ASP.NET Core作为微软新一代的主力框架,不是ASP.NET Framework的延申,而是有本质的区别,ASP.NET Core不再是基于传统的System.Web.dll,也不再依赖IIS和windows,而是可以跨所有平台,随心所欲的部署在Windows,Mac或者Linux平台;托管程序也不单单只能使用IIS,Nginx,Apache,Docker等都可以用来进行项目部署。

ASP.NET Core的web服务器

  ASP.NET Core的web服务器有两种:HTTP.sys和Kestrel。默认使用的是Kesterl服务器。

  HTTP.sys是仅可以运行在Windows平台的Web服务器。Kestrel是跨平台的Web服务器。默认包含在ASP.NET Core项目模板中。

  HTTP.sys服务器是运行在内核态中,因此减少了系统的调用次数,运行效率相较于Kestrel服务器要高,而且HTTP.sys可以作为反向代理服务器来使用,功能非常强大,但是最大的问题是不跨平台,只能运行在Windows下。

  Kestrel服务器运行在ASP.NET Core应用程序中,跨平台且处理网络请求的效率很高。由于ASP.NET Core拥有两种Web服务器,因此也就有两种托管模型:Inprocess(进程内托管)和Outofprocess(进程外托管)。

ASP.NET Core的托管模型

  Inprocess模型:使用的是IIS工作进程内的服务器(IISHttpServer),将应用程序的工作进程托管到IIS的工作进程内。很明显又不能跨平台了,但是优点是性能相较与Outofprocess更好,在IIS上推荐使用Inprocess。

  Outofprocess模型:将web请求转发到Kestrel服务器后端的ASP.NET Core应用。使用该模型时,必须要手动该配置文件,web.config文件中将节点aspNetCore.hostingModel的值设置为:outofprocess。设置这个值的目的就是告诉IIS,当前程序不使用IISHttpServer,而是使用kestrel服务器。

  

 

 

 

posted @ 2019-11-13 21:50  冬天从来不怕冷  阅读(230)  评论(0编辑  收藏  举报