ASP.NET Core介绍
ASP.NET Core是一个新的开源和跨平台的框架,用于构建如Web应用、物联网(IoT)应用和移动后端应用等连接到互联网的基于云的现代应用程序。ASP.NET Core应用可运行于.NET Core和完整的.NET Framework之上。构建它的目的是为那些部署在云端或者内部运行的应用提供一个优化的开发框架。它由最小开销的模块化的组件构成,因此在构建解决方法的同时可以保持灵活性。
ASP.NET Core有一些架构上的改变,这些改变使得它成为一个更为精简并且模块化的框架。
通过ASP.NET Core可以获得的改进如下:
- 统一的方式用于构建Web UI和Web API
- 集成现代的客户端开发框架和开发流程
- 适用于云的基于环境的配置系统
- 内置依赖项注入
- 轻型高性能模块化HTTP请求管道
- 能够在IIS上进行托管或在自己的进程中进行自托管
- 可以在.NET Core上运行,支持真正的并行应用版本控制
- 简化新式Web开发的工具
- 能够在Windows、macOS和Linux上进行生成和运行
- 开源和关注社区
1.ASP.NET Core应用
ASP.NET Core应用其实就是在一个Main方法中创建一个Web服务器的简单控制台应用程序。
using Microsoft.AspNetCore; using Microsoft.AspNetCore.Hosting; namespace WebApplication { public class Program { public static void Main(string[] args) { CreateWebHostBuilder(args).Build().Run(); } public static IWebHostBuilder CreateWebHostBuilder(string[] args) => WebHost.CreateDefaultBuilder(args) .UseStartup<Startup>(); } }
Main方法调用WebHost.CreateDefaultBuilder,后者按照生成器模式来创建Web应用程序主机。生成器提供定义Web服务器(例如UseKestrel)和启动类(UseStartup)的方法。
IWebHostBuilder是WebHost.CreateDefaultBuilder调用的返回类型,它提供了许多可选方法,包括用于在HTTP.sys中托管应用的UseHttpSys,以及用于指定根内容目录的UseContentRoot。Build和Run方法生成IWebHost对象,该对象托管应用并开始侦听HTTP请求。
2.StartUp
WebHostBuilder的UseStartup方法为你的应用指定Startup类
Startup类可用来定义请求处理管道和配置应用需要的服务。Startup类必须是公开的(public),并且必须包含如下方法:
public class Startup { // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1); } // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseHsts(); } app.UseHttpsRedirection(); app.UseMvc(); } }
ConfigureServices方法用于定义你的应用所使用的服务(例如,ASP.NET Core MVC、Entity Framework Core、Identity等)。
Configure方法用于定义你的请求管道中的中间件。
3.服务
服务是应用中用于通用调用的组件。服务通过依赖注入获取并使用。ASP.NET Core内置了一个简单的控制反转(IoC)容器,它默认支持构造器注入,并且可以方便地替换成你自己选用的IoC容器。由于它的松耦合特性,依赖注入(DI)使服务在整个应用中都可以使用。
4.中间件
在ASP.NET Core中,你可以使用中间件构建你的请求处理管道。一般来说,要想使用一个中间件,只需在Configure方法里调用IApplicationBuilder上一个对应的UseXXX扩展方法即可。
ASP.NET Core带来了丰富的内置中间件,也可以创建自己的自定义中间件。
5.服务器
ASP.NET Core托管模式并不直接监听请求,而是依赖于一个HTTP Server实现来转发请求到应用程序。
ASP.NET Core包含了一个托管的跨平台Web服务器:Kestrel,它往往会被运行在一个如IIS或者Nginx的生产Web服务器之后。
6.内容根目录
内容根目录是应用程序所用到的所有内容的根路径,比如它的views和web内容。
7.网站根目录
应用程序的Web根目录是项目中类似于CSS、JS和图片文件公开、静态的资源的目录。Web根目录默认为<contentroot>/wwwroot,但是也可以通过WebHostBuilder来指定另外一个地址。
8.配置
ASP.NET Core使用了一个新的配置模型,用来处理简单的键值对。新的配置模型不是基于System.Configuration或者web.config;相反,它是一个有序拉取数据的配置providers。
9.环境
环境,如"Development"和"Production",是ASP.NET Core中的第一级概念,而且它可以使用环境变量来设置。
10.使用ASP.NET Core MVC构建Web UI和Web API
- 可以使用Model-View-Controller(MVC)模式创建优秀的、可测试的Web应用程序
- 可以构建支持多种格式并且完全支持内容协商的HTTP服务
- Razor提供了一种高效的语言,用于创建Views
- TagHelpers启用服务器端的代码参与到Razor文件的创建和HTML元素渲染
- 可以使用自定义或者内置的formatters(JSON、XML)来构建完全支持内容协商的HTTP服务
- Model Binding自动映射HTTP请求中的数据到action方法参数
- Model Validation自动执行客户端和服务器端验证