期末告一段落,有一周的时间给我折腾折腾,那就继续dotNet Core吧,先列一下文章列表。
ASP.NET Core 是一个跨平台的高性能开源框架,用于生成基于云且连接 Internet 的新式应用程序。
使用 ASP.NET Core,可以:
.NET Core或 .NET Framework上运行。数百万开发人员在使用(并继续使用)ASP.NET Core 来创建 Web 应用。ASP.NET Core 是重新设计的ASP.NET Core ,对体系结构进行了更改,提供更精简的模块化框架。
ASP.NET Core 具有如下优点:
.NET Core上运行,支持真正的并行应用版本控制。ASP.NET Core完全作为 NuGet 包的一部分提供。 这可优化应用,使其只包含需要的 NuGet 包。 较小的应用图面区域的优势包括:提升安全性、减少维护和提高性能。
ASP.NET Core应用其实就是在Main中创建一个Web服务器的简单控制台应用程序。

如上图,Main方法调用遵循builder模式的WebHostBuilder,用于创建一个Web应用程序的宿主。这个builder具有定义Web服务器(如UseKestrel)和startup类型(UseStartup)的方法。
Build和Run方法构建了用于宿主应用程序的IWebHost,然后启动它来监听传入的HTTP请求。
上面的Main方法中有写到WebHostBuilder的UseStartup方法为应用制定了Startup类。
Startup类 可以用来定义请求和处理管道和配置应用需要的服务。Starup类必须是public的,内容实例如下:

在ASP.NET Core中,Startup类 提供了应用程序的入口并充当为应用程序的启动点。ASP.NET会在主程序集中搜索名为Startup的类,Startup类能够选择性地在构造函数中接受通过依赖注入提供的依赖项,将要被配置的应用程序的方法应定义于Stratup类的构造函数中,如Configuration。Startup类必须定义Configure方法,可以选择定义一个ConfigureServices方法,这些方法在应用程序启动时被调用。
Configure方法用于定义请求管道中的中间件,即指定ASP.NET应用程序将如何响应每一个HTTP请求,简言之,可以配置每个请求都接收相同的响应。事实上,大多数应用程序都需要更复杂的管道配置并将其封装与中间件(middleware)中,并通过扩展方法添加到IApplicationBuilder上。
ConfigureServices方法用于定义应用所使用的服务(如ASP.NET MVC Core Framework,Entity Framework Core,Identity等)。
服务是应用中用于通用调用的组件。服务通过依赖注入获取并使用。ASP.NET Core内置了一个简单的控制反转(IoC)容器,它默认支持构造器注入,并且可以方便的替换成自己的选用的IoC容器。由于他的松耦合性,依赖注入(DI)使服务在整个应用中都可以使用。例如,Logging在整个应用中都可用。
在ASP.NET Core中个可以使用中间件构建请求处理管道。ASP.NET Core中间件为一个HttpContext执行异步逻辑,然后按顺序调用下一个中间件或者直接终止请求。一般来说,要使用一个中间件,只需要在Configure方法中调用IApplicationBuilder上一个对应的UseXYZ扩展方法即可。
ASP.NET Core带来了丰富的内置中间件:
可以创建自定义中间件,或者在ASP.NET Core中使用任何基于OWIN的中间件。
ASP.NET Core托管模式并不会直接监听请求,而是依赖一个HTTP Server实现来转发请求到应用程序。这个转发的请求会以feature接口的形式被包装,然后被应用程序组合到一个HttpContext中去。ASP.NET Core包含了一个托管的跨平台Web服务器:Kestrel,通常运行在一个IIS或者Nginx的生产Web服务器之后。