之前搭建好了各项开发环境,现在来说说ASP.NET Core的各项配置、项目结构、以及在请求管道中挂载的各式各样的中间件。今天先来探讨探讨其各项配置及其项目结构
ASP.NET Core和上一代Framework4.5中的ASP.NET MVC5(或者WebForm)在应用启动环节上有很大的不同,要探讨ASP.NET Core的启动方式需要先了解一下它的基础框架 .NET Core。
我先来看看,最初的.NET Core的应用结构,如下:
我们抛开VSCode可以简单的发现有只要两个必须的文件,一个就是应用启动的入口Program.cs文件,一个就是环境和依赖配置的project.json文件。
现在我们来看看这两个文件的内容:
![](https://img7.php1.cn/3cdc5/f27f/9f3/cbff7aeb91432135.gif)
![](https://img7.php1.cn/3cdc5/f27f/9f3/fe60f3d78820ab1b.gif)
using System;namespace ConsoleApplication
{public class Program{public static void Main(string[] args){Console.WriteLine("Hello World!");}}
}
可以就看到program只有一个main方法,看到这个相信大家不难理解程序的入口为何在这里,为啥要用Program来做入口呢,之后我们在说道说道。
![](https://img7.php1.cn/3cdc5/f27f/9f3/cbff7aeb91432135.gif)
![](https://img7.php1.cn/3cdc5/f27f/9f3/fe60f3d78820ab1b.gif)
1 {
2 "version": "1.0.0-*",
3 "buildOptions": {
4 "debugType": "portable",
5 "emitEntryPoint": true
6 },
7 "dependencies": {},
8 "frameworks": {
9 "netcoreapp1.0": {
10 "dependencies": {
11 "Microsoft.NETCore.App": {
12 "type": "platform",
13 "version": "1.0.0"
14 }
15 },
16 "imports": "dnxcore50"
17 }
18 }
19 }
在这个文件中只要用于配置使用的基础架构是Core还是framework,依赖项,程序版本说明,兼容性说明等等应用的基础配置项,这些配置项之后会一一道来,在这里可以简单先知道dependencies 这项配置适用于配置应用需要的依赖插件包的。
可以简单的理解为 ASP.NET Core 是由 .NET Core加几项配置和依赖项组成的,具体教程可以参看ASP.NET 中文文档。接下来我们直接看使用yeoman生成的asp.net Core的空应用结构:
至于Dockerfile 属于Docker范畴 后面再来另起文章来讲解, 博友也可以移步此处了解。
现在我们看看project.json内几个种重要依赖包:
1.运行服务的载体,ASP.NET Core支持3种服务载体:
a. Microsoft.AspNetCore.Server.IISIntegration,就是大家熟知的IIS
b. Microsoft.AspNetCore.Server.Kestrel ,跨平台
c. Microsoft.AspNetCore.Server.WebListener,只能在windows 上使用,还是预览版
通常我们会使用a和b两种,至于原因我们在后说Server的时候给大家说说。
2. 日志输出 Microsoft.Extensions.Logging.Console
3. 平台的基础框架包 Microsoft.NETCore.App
4. 异常中间件 Microsoft.AspNetCore.Diagnostics (包括很多异常显示,欢迎页面等等)
当然重要包还有很多,我们会在完后慢慢一一给道来。
再来看看生成出来的program.cs和Startup.cs
///
.Build();//web宿主var host = new WebHostBuilder().UseConfiguration(config) //引入配置.UseKestrel() //使用Kestrel部署.UseUrls("http://*:6000") //修改Kestrel绑定的地址.UseContentRoot(Directory.GetCurrentDirectory())//引用根目录.UseIISIntegration() //引入IIS组件包.UseStartup
.Build();//运行web宿主
host.Run();}}
///
{app.UseDeveloperExceptionPage(); //抛出详细的异常错误界面
}//管道断路app.Run(async (context) =>{await context.Response.WriteAsync("Hello World!");});}}
我们大概看了一下生成出的每一个文件的含义,包括ASP.NET Core的配置和启动顺序和方式,接下来我们将会了解中间件和管道配置等重要的HTTP请求配置
谢谢各位博友的耐心阅读,如有不对请指正