ASP.NET Core 是一个新的开源和跨平台开发框架,用于构建Web应用,不再基于System.Web.dll
改进如下:
1.一个统一的方式构建WebUI 和 WebAPIs
2.集成现代的客户端开发框架和开发流程
3.一个适用于云的,基于环境配置的系统
4.内置的依赖注入
5.新型的轻量级的模块化的HTTP请求管道
6.运行于IIS或者宿主(self-host)于你自己进程的能力
7.基于支持真正的side-by-side应用程序版本化的.NET Core构建
8.完全以Nuget包形式发布
9.新的用于简化现代Web开发的工具
10.可以在Windows,Linux,Mac上构建和运行ASP.NET应用
11.开源并且重视社区
一、ASP.NET Core应用
ASP.NET Core应用其实就是在Main方法中创建一个Web服务器的简单的控制台应用程序
UseKestrel()//使用Kestrel作为Web服务器
UseContentRoot(Directory.GetCurrentDirectory())//指定根目录内容
UseIISIntegration()//集成IIS
Bulid和Run方法构建了宿主应用程序的IWebHost,然后启动它来监听传入的HTTP请求。
二、StartUp类
StartUp类可以用来定义请求处理管道和配置应用需要的服务
StartUp类必须是public,并且默认要包含如下方法
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseBrowserLink();
app.UseDeveloperExceptionPage();
}
else
{
app.UseExceptionHandler("/Home/Error");
}
app.UseStaticFiles();
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
}
ConfigureServices 定义应用程序使用的服务(如ASP.NET MVC ,EntityFrameWork Core Identity等等)
Configure 定义HTTP请求管道中的中间件
三、服务
服务是应用中用于通用调用的组件。服务通过依赖注入获取并使用。ASP.NET Core 内置了Ioc容器,默认支持构造器注入,并且可以替换成其他Ioc容器(如Autofac),依赖注入使服务在整个应用中都可以使用,如Logging
四、中间件
ASP.NET Core中间件为一个HttpContext执行异步逻辑然后按顺序调用下一个中间件或者直接终止请求。在StartUp中的Configure中IApplicationBuilder上使用UseXYZ方法(XYZ为具体实例)。
如静态文件(Static Files)
路由(Route)
身份认证(Authentication)
五、服务器
ASP.NET Core托管模式并不直接监听请求,而是依赖于一个HTTP Server实现来转发请求到这个程序。这个被转发的请求会以一组feature接口的形式包装,然后被应用程序组合到一个HttpContext中去。ASP.NET Core包含了一个托管的跨平台Web服务器:Kestrel,它会被运行在一个如IIS或者Nginx的生产Web服务器之后。
六、内容根目录
内容根目录是应用程序所用到的所有内容的根路径,比如views和web内容,默认情况下,内容根目录是与宿主应用的可执行程序根目录相同,其他位置可通过WebHostBuilder来设置。
七、网站根目录
应用程序的Web根目录是项目中类似CSS,JS和图片文件公开静态的资源。静态文件中间件将默认只读取Web根目录和其子目录中的文件。web根目录默认为/wwwroot,但也可以通过WebHostBuilder来设置
八、配置
不再使用web.config,默认使用appsettings.json文件配置键值对的json字符串
{
"ConnectionStrings": {
"BUAConnection": "Data Source=DESKTOP-M6SJIFR;Initial Catalog=BUA;User ID=sa;Password=123456;MultipleActiveResultSets=true"
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Warning"
}
}
}
九、环境
十、使用ASP,NET Core MVC构建Web UI 和 WebAPIs