原文 https://docs.asp.net/en/latest/intro.htmlhtml
by Daniel Roth, Rick Anderson and Shaun Luttin前端
章节nginx
ASP.NET Core 是对 ASP.NET 的一次重大修改,基本是从新设计了。本篇向你介绍了ASP.NET Core 的一些新概念以及这些新的特性能对咱们编写如今流行的WEB应用提供哪些帮助。git
ASP.NET Core 是一个开源、跨平台用于开发如今流行的基于云的网页应用的 .NET 框架。为了提供一个既能在云端部署又能在本地运行的这样牛逼的开发框架,咱们几乎是从头构建了这个框架。ASP.NET 5 是由模块组件构成,可让应用的资源开销很小,而且让咱们的解决方案保持灵活性。ASP.NET 5 能够在 Windows、Mac和Linux这三个操做系统进行跨平台开发和运行。ASP.NET 5 是彻底开源的,全部的源码都在 GitHub上。github
做为 .NET Framework 的一部分,ASP.NET从发布 的第一个预览版到如今已经差很少15年了,在这期间,成千上万的开发者用ASP.NET开发出了不少很是好的网页应用,同时,咱们也改进和添加了不少功能到ASP.NET。web
ASP.NET Core在架构上有很是大的改变,这样就能使框架变得很是简洁和模块化。ASP.NET Core 再也不依赖于 System.Web.dll 这个程序集,而是基于一系列更细粒度、更细分的 NuGet 包,这样可让你根据须要去优化你的应用,只包含一些你须要用到的 NuGet 包。The benefits of a smaller app surface area include tighter security, reduced servicing, improved performance, and decreased costs in a pay-for-what-you-use model.api
使用 ASP.NET Core 你将得到一下基本的改进:浏览器
ASP.NET Core 应用只是一个在Main方法中建立了 web服务 的控制台应用程序:前端框架
using System; using Microsoft.AspNetCore.Hosting; namespace aspnetcoreapp { public class Program { public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel() .UseStartup<Startup>() .Build(); host.Run(); } } }
Main方法使用遵循建造者模式的 WebHostBuilder 类来构建 web 应用宿主。Web宿主构造器有方法能够用来指明使用哪一种WEB服务(好比 UserKestrel 方法),和从哪一个类启动(经过UserStart方法)。在上面的例子中,咱们使用了Kestrel Web服务器,咱们也能够指定使用其余的Web服务器。在下面的章节中,咱们再谈谈 UserStartup 方法。WebHostBuilder 类提供了不少可选的方法,好比,UseIISIntegration 方法可让咱们把咱们的web应用放到IIS 和 IIS Express 运行,UserContentRoot 方法能够用来指定内容的根目录。Build方法将构造一个 IWebHost类型的WEB应用服务器,Run方法开始启动应用并侦听HTTP请求。服务器
使用 WebHostBuilder类中的UserStartup方法来指定Web应用的启动类。
public class Program { public static void Main(string[] args) { var host = new WebHostBuilder() .UseKestrel() .UseStartup<Startup>() .Build(); host.Run(); } }
尖括号中的 Startup 类就是咱们用来处理请求管线和用来配置程序中须要用到的服务。Startup 类必须是公共类,还要包含下边的两个方法:
public class Startup { public void ConfigureServices(IServiceCollection services) { } public void Configure(IApplicationBuilder app) { } }
在应用中,服务就是一个组件,用来实现资源共享。服务经过依赖注入的方式加入到系统中。ASP.NET 5 包含了一个简单的内置“控制反转容器(IoC)”,默认支持够构造注入。想要把这个默认的IoC容器替换成你喜欢的IoC容器也很是简单。除了松散耦合的好处,DI(依赖注入)还能使服务贯穿你的应用,好比:日志(Logging)在你整个Web应用的任何地方均可以使用,具体看“依赖注入”。
在ASP.NET Core 中,请求管道是由一个个中间件构成。在HTTP上下文中, 从逻辑的角度看,ASP.NET Core 中间件在Http上下文中是异步执行,而后在中间件序列中有选择地调用下一个中间件或者直接终止HTTP请求返回浏览器。一般,咱们使用的中间件都依赖于NuGet包,统一在Startup类中的Configure方法中,经过IApplicationBuilder类的扩展方法来调用,扩展方法名一般写成 UseXXX。
ASP.NET 5 已经内置了一大波中间件:
你也可建立属于你本身的自定义中间件。
你也能够在 ASP.NET Core 中使用任何基于 OWIN 的中间件。详情请看 Open Web Interface for .NET (OWIN) 介绍。
ASP.NET Core 应用程序托管模型并无直接侦听网络请求,而是依靠HTTP服务器将HTTP请求专递给他。专递过来的HTTP请求被包装成一个接口集合,在ASP.NET Core中,被封装到 HtppContext这个类中。在ASP.NET Core 中,已经包含了一个用托管代码写的跨平台的Web服务器叫Kestrel,固然,你也能够将你的ASP.NET Core程序运行在IIS和nginx中。
内容跟目录就是咱们程序中用到的任何资源(好比,视图和网页内容)的根路径。默认状况下,内容根目录就是咱们程序运行的根目录,固然,你也能够经过 WebHostBuilder 类指定另外的目录做为内容的根目录。
网页根目录就是在咱们的项目中,用来存放公共的静态文件的一个文件夹,静态文件就是咱们写网页常常要用到的CSS、JS和图片等文件。默然状况下,静态文件中间件只处理网页根目录下的文件及子目录下的文件,网页根目录在项目中的 wwwroot 文件,固然,一样,你也可经过 WebHostBuilder 类指定另一个文件夹做为网页根目录。
ASP.NET Core 使用了新的配置模型来处理简单的“名称-值”数据。新的配置模型不在基于“System.Configuration”和 “web.config”文件,而是依赖于一组有序的配置提供器。ASP.NET Core内置的配置提供器支持多种格式的配置文件(XML,JSON,INI)和使用环境变量,使用环境变量,能够使基于环境的配置得以实现。你也能够根据须要,写出自定义的配置提供器。
详情请看 配置章节
环境,好比说是生产环境仍是产品环境,在ASP.NET Core中,能够经过环境变量来设置。详情请看 在多种环境下工做。
你能够使用MVC模式来建立一个能够分离和可测试的网页应用,详情请看 MVC 和 测试。
你能够写一个HTTP服务来支持多种返回格式和支持彻底的内容协商。详情请看 格式化相应数据。
Razor提供了一个产品级的语言来建立视图
Tag Helpers 能够用来在 Razor 文件中用服务器端端代码来生成HTML元素。
You can creat HTTP Services with full suport for content negotiation using custom or built-in formatters (JSON,XML)。
模型绑定自动将HTTP请求中的数据映射到Action方法的参数。
模型验证自动执行客户端验证和服务端验证。
ASP.NET Core 在设计上,无缝集成了多种前端框架,好比 AngularJS,KnockoutJS 和 Bootstrap,详情请看 前端开发。