ASP.NET Core 基础知识

ASP.NET Core 基础知识

ASP.NET Core 应用程序是在其 Main 方法中创建 Web 服务器的控制台应用:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
namespace aspnetcoreapp
{
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}
}

Main 方法调用 WebHost.CreateDefaultBuilder,后者按照生成器模式来创建 Web 应用程序主机。 生成器提供定义 Web 服务器(例如,UseKestrel)和启动类 (UseStartup) 的方法。 在前面的例子中,自动分配了 Kestrel Web 服务器。 ASP.NET Core 的 Web 主机尝试在 IIS 上运行(如果可用)。 对于其他 Web 服务器(如 HTTP.sys),可通过调用相应的扩展方法来使用。

IWebHostBuilderWebHost.CreateDefaultBuilder 调用的返回类型,它提供了许多可选方法。 其中的一些方法包括用于在 HTTP.sys 中托管应用的 UseHttpSys,以及用于指定根内容目录的 UseContentRootBuildRun 方法生成 IWebHost 对象,该对象托管应用并开始侦听 HTTP 请求。

启动

WebHostBuilder 上的 UseStartup 方法为你的应用指定 Startup 类:

1
2
3
4
5
6
7
8
9
10
11
12
public class Program
{
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.Build();
}

Startup 类用于定义请求处理管道和配置应用所需的任何服务。 Startup 必须是公共类,并包含以下方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class Startup
{
// This method gets called by the runtime. Use this method
// to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
}
// This method gets called by the runtime. Use this method
// to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app)
{
}
}

ConfigureServices 定义应用所使用的服务(如 ASP.NET Core MVC、Entity Framework Core 和标识)。 Configure 定义请求管道的中间件。

内容根

内容根是应用所使用的任何内容的基路径,如视图、Razor 页面 和静态资产。 默认情况下,内容根与用于托管应用的可执行文件的应用程序基路径相同。

Web 根

应用的 Web 根是项目中的目录,其中包含公共资源、CSS 等静态资源、JavaScript 和图形文件。

依赖关系注入(服务)

服务是应用中常用的组件。 可以通过依存关系注入 (DI) 来获取服务。 ASP.NET Core 包括默认支持构造函数注入的本机控制反转 (IoC) 容器。 可根据需要替换默认本机容器。 DI 除了具备松散耦合优势以外,还可以使服务(例如,日志记录)在整个应用中可用。

中间件

在 ASP.NET Core 中,使用中间件来撰写请求管道。 ASP.NET Core 中间件在 HttpContext 上执行异步逻辑,然后调用序列中的下一个中间件或直接终止请求。 通过在 Configure 方法中调用 UseXYZ 扩展方法来添加名为“XYZ”的中间件组件。

ASP.NET Core 包含一组丰富的内置中间件:

  • 静态文件
  • 路由
  • 身份验证
  • 响应压缩中间件
  • URL 重写中间件

可以将任何基于 OWIN 的中间件与 ASP.NET Core 应用结合使用,也可以编写自己的自定义中间件。

启动 HTTP 请求

有关使用 IHttpClientFactory 访问 HttpClient 实例以发出 HTTP 请求的信息,请参阅启动 HTTP 请求

环境

环境(如“开发”环境和“生产”环境)是 ASP.NET Core 的高级概念,可使用环境变量进行设置。

配置

ASP.NET Core 基于名称/值对使用配置模型。 配置模型不基于 System.Configurationweb.config。配置从一组有序的配置提供程序获取设置。 内置配置提供程序支持各种文件格式(XML、 JSON、INI)和环境变量,从而实现基于环境的配置。 也可以编写你自己的自定义配置提供程序。

日志记录

ASP.NET Core 支持适用于各种日志记录提供程序的日志记录 API。 内置提供程序支持向一个或多个目标发送日志。 可使用第三方记录框架。

错误处理

ASP.NET Core 的内置功能可处理应用中的错误,包括开发人员异常页、自定义错误页、静态状态代码页和启动异常处理。

路由

ASP.NET Core 提供将应用请求路由到路由处理程序的功能。

文件提供程序

ASP.NET Core 通过使用文件提供程序抽象化文件系统访问,文件提供程序可提供一个跨平台处理文件的通用界面。

静态文件

静态文件中间件为静态文件(如 HTML、CSS、映像和 JavaScript)提供服务。

宿主

ASP.NET Core 应用可配置和启动一个主机,负责应用启动和生存期管理。

会话和应用状态

ASP.NET Core 提供几种可在用户浏览 web 应用时保留会话和应用状态的方法。

服务器

ASP.NET Core 托管模型不直接侦听请求。 托管模型依赖 HTTP 服务器实现将请求转发到应用。 转发的请求被打包为一组可通过接口进行访问的功能对象。 ASP.NET Core 包含托管的跨平台 Web 服务器,名为 Kestrel。 Kestrel 通常在生产 Web 服务器(如 IISNginx)后台运行。 Kestrel 可作为边缘服务器运行。

全球化和本地化

使用 ASP.NET Core 创建多语言网站,可让网站拥有更多受众。 ASP.NET Core 提供的服务和中间件可将网站本地化为不同的语言和文化。

请求功能

与 HTTP 请求和响应相关的 Web 服务器实现详细信息在接口中定义。 服务器实现和中间件使用这些接口来创建和修改应用的托管管道。

后台任务

后台任务作为托管服务实现。 托管服务是一个类,具有实现 IHostedService 接口的后台任务逻辑。

.NET 的开放 Web 接口 (OWIN)

ASP.NET Core 支持 .NET 的开放 Web 接口 (OWIN)。 OWIN 允许 Web 应用从 Web 服务器分离。

WebSockets

WebSocket 是一个协议,支持通过 TCP 连接建立持久的双向信道。 它可用于聊天、股票报价和游戏等应用,以及 Web 应用中需要实时功能的任何位置。 ASP.NET Core 支持 Web 套接字功能。

Microsoft.AspNetCore.All 元包

ASP.NET Core 的 Microsoft.AspNetCore.All 元包包括:

  • ASP.NET Core 团队支持的所有包。
  • Entity Framework Core 支持的所有包。
  • ASP.NET Core 和 Entity Framework Core 使用的内部和第三方依赖关系。

.NET Core 与 .NET Framework 运行时

ASP.NET Core 应用可以面向 .NET Core 或 .NET Framework 运行时。

在 ASP.NET Core 和 ASP.NET 之间进行选择

有关在 ASP.NET Core 和 ASP.NET 之间进行选择的详细信息,请参阅 在 ASP.NET Core 和 ASP.NET 之间进行选择

×

谢谢你请我吃辣条

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

文章目录
  1. 1. ASP.NET Core 基础知识
    1. 1.1. 启动
    2. 1.2. 内容根
    3. 1.3. Web 根
    4. 1.4. 依赖关系注入(服务)
    5. 1.5. 中间件
    6. 1.6. 启动 HTTP 请求
    7. 1.7. 环境
    8. 1.8. 配置
    9. 1.9. 日志记录
    10. 1.10. 错误处理
    11. 1.11. 路由
    12. 1.12. 文件提供程序
    13. 1.13. 静态文件
    14. 1.14. 宿主
    15. 1.15. 会话和应用状态
    16. 1.16. 服务器
    17. 1.17. 全球化和本地化
    18. 1.18. 请求功能
    19. 1.19. 后台任务
    20. 1.20. .NET 的开放 Web 接口 (OWIN)
    21. 1.21. WebSockets
    22. 1.22. Microsoft.AspNetCore.All 元包
    23. 1.23. .NET Core 与 .NET Framework 运行时
    24. 1.24. 在 ASP.NET Core 和 ASP.NET 之间进行选择
,