ASP.NET Core原理概述

ASP.NET Core 是一个控制台应用程序,在其 main 方法中创建一个Web服务器,以下是program.cs中的代码:

using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;

namespace WebApplication5
{
    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 application host 。 builder   定义了Web服务器(例如UseKestrel)和启动类(UseStartup)方法。 在上述示例中,Kestrel Web服务器将自动分配。 ASP.NET Core‘s web host 将尝试在IIS上运行(如果可用)。 其他Web服务器(如HttpSys)可以通过调用合适的扩展方法来使用。  UseStartup 将在下一节进一步介绍。

IWebHostBuilder 是 WebHost.CreateDefaultBuilder 方法的返回值类型,提供了许多可选方法。 其中一些方法包括 UseHttpSys  ,用于在HttpSys中托管应用程序,以及 UseContentRoot ,用于指定根内容目录。 Build 和 Run 方法用于构建 IWebHost 对象,该对象将承载应用程序并开始监听HTTP请求。

Startup

The Startup class is where you define the request handling pipeline and where any services needed by the application are configured. The Startup class must be public and contain the following methods:

WebHostBuilder 上的 UseStartup 方法指定了您的应用程序的启动类:

启动类是您定义请求处理管道和配置应用程序所需的任何服务的地方。 启动类必须是公有的,并包含以下方法:

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,Identity等)。Configure  定义请求管道中的中间件。

服务是用于应用程序中常见消费的组件。 服务通过依赖注入(DI)提供。 ASP.NET Core包括一个本地控制反转(IoC)容器(默认情况下支持构造函数注入)。 本地容器可以替换为您选择的容器。 除了松耦合外,DI还可在整个应用中提供服务。 例如,您的应用程序中可以使用日志记录。有关更多信息,请参阅依赖注入

中间件

在ASP.NET Core中,您使用中间件编写请求管道。 ASP.NET Core中间件在HttpContext上执行异步逻辑,然后在依次调用下一个中间件或直接终止请求。 通过在Configure方法中调用UseXYZ扩展方法来添加一个名为“XYZ”的中间件组件。
ASP.NET Core配备了丰富的内置中间件:

  • 静态文件
  • 路由
  • 认证

您可以使用任何基于OWIN的中间件与ASP.NET Core,也可以自定义中间件。有关更多信息,请参阅Middleware and Open Web Interface for .NET (OWIN).

服务器

ASP.NET Core 托管模型不直接监听请求; 相反,它依赖于HTTP服务器实现将请求转发到应用程序。 转发的请求被包装为一组您可以通过接口访问的功能对象。该应用程序将此集合组成一个HttpContext。 ASP.NET Core包括一个受管理的,跨平台Web服务器,称为Kestrel。就像iis 或 nginx 一样。有关详细信息,请参阅 Servers and Hosting

Content root

content root 是应用程序使用的任何内容的基路径,例如视图,Razor Pages,和静态资源。默认情况下, content root 与托管应用程序的可执行文件的应用程序基路径相同。可以使用 WebHostBuilder 指定 content root 的位置。

Web root

应用程序的Web根目录是项目中包含公共静态资源(如CSS,JavaScript和图像文件)的目录。默认情况下,静态文件中间件只会从Web根目录及其子目录提供文件。请参阅working with static files获取更多信息。 Web根路径默认为 /wwwroot ,但您可以使用 WebHostBuilder 指定不同的位置。

Configuration

ASP.NET Core使用新的配置模型来处理简单的名值(name-value)对。新的配置模型不基于 System.Configuration 或 web.config ;相反,它从一组有序的配置提供者中抽取出来。内置配置提供程序支持各种文件格式(XML,JSON,INI)和环境变量,以实现基于环境的配置。您也可以编写自定义配置提供程序。有关详细信息,请参阅 Configuration

Environments

环境,如“开发”和“生产”,是ASP.NET Core中的最好的理念,可以使用环境变量进行设置。有关详细信息,请参阅Working with Multiple Environments

.NET Core vs. .NET Framework runtime

ASP.NET Core应用程序可以选择.NET Core或.NET Framework运行时。有关更多信息,请参阅.NET Core和.NET Framework之间的选择

时间: 2024-10-06 09:33:25

ASP.NET Core原理概述的相关文章

ASP.NET Core DI概述

众所周知,ASP.NET Core有一个DI框架,应用程序启动时初始化. 预定义依赖 1: IApplicationBuilder:提供了配置应用程序的请求管道机制 2:ILoggerFactory:次类型提供了创建记录器组件的模式 3:LHostinEnvironment:此类型提供管理应用程序运行的Web宿主环境的信息. 注册自定义依赖 为了注册类型,需要让系统知道如何将一个抽象类型解析为一个具体类型,这种映射可以是静态设定,也可以是动态的. public void ConfigureSer

ASP.NET Core 2.2 基础知识(十六) SignalR 概述

原文:ASP.NET Core 2.2 基础知识(十六) SignalR 概述 我一直觉得学习的最好方法就是先让程序能够正常运行,才去学习他的原理,剖析他的细节. 就好像这个图: 所以,我们先跟着官方文档,创建一个 SignalR 应用: https://docs.microsoft.com/zh-cn/aspnet/core/tutorials/signalr?view=aspnetcore-2.2&tabs=visual-studio 这个例子一共涉及到下面几个步骤: 自定义中心 ChatH

asp.net core 3.x 通用主机原理及使用

原文:asp.net core 3.x 通用主机原理及使用 一.前言 只是讲asp.net core 3.x通用主机的大致原理,这些东西是通过查看源码以及自己根据经验总结得来的,在文章中不会深入源码,因为个人觉得懂原理就晓得扩展点,后期碰到有需求的时候再仔细去研究源码也不迟.阅读前你应该先去了解下(推荐博客园老A的博客): asp.net core中的依赖注入. 配置, 讲解的方式是: 概述 逐一介绍核心类及扩展方式 通常我们如何使用 总结 二.概述 以前的控制台应用程序.winform程序启动

ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件)

小分享:我有几张阿里云优惠券,用券购买或者升级阿里云相应产品最多可以优惠五折!领券地址:https://promotion.aliyun.com/ntms/act/ambassador/sharetouser.html?userCode=ohmepe03 ASP.NET Core 运行原理剖析2:Startup 和 Middleware(中间件) Startup Class 1.Startup Constructor(构造函数) 2.ConfigureServices 3.Configure方法

ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行

ASP.NET Core 运行原理剖析1:初始化WebApp模版并运行 核心框架 ASP.NET Core APP 创建与运行 总结 之前两篇文章简析.NET Core 以及与 .NET Framework的关系和.NET Core的构成体系从总体上介绍.NET Core,接下来计划用一个系列对ASP.NET Core的运行原理进行剖析. ASP.NET Core 是新一代的 ASP.NET,早期称为 ASP.NET vNext,并且在推出初期命名为ASP.NET 5,但随着 .NET Core

基于 ASP.NET Core 2.0 WebAPI 后台框架搭建(0) - 目录概述

概述 博主自毕业后,进公司就一直是以ASP.NET MVC 5.0 + MySQL 进行项目开发,在项目也使用了很多常用功能,如 WCF.SignalR.微信公众号API.支付宝API.Dapper等等,前端是大杂烩,如:Bootstrap.AmazeUI.EasyUI.Light7.WeUI等等.其实对于我们公司的项目来说,技术栈虽说不庞大,但五脏俱全,而且基于这一套技术,开发速度有保证.但是,作为一个有梦想的程序猿,必须与时俱进,因此无意中接触了.Net Core 2.0.听说它是开源的?它

asp.net core 系列 1 概述

一.   概述 ASP.NET Core 是一个跨平台的高性能开源框架,可以用来:建置 Web 应用程序和服务.IoT应用和移动后端.在 Windows macOS 和 Linux 上使用喜爱的开发工具.部署到云或本地.NET Core 或 .NET Framework 上运行. ASP.NET Core  可以面向 .NET Core 或 .NET Framework.面向 .NET Framework 的 ASP.NET Core 应用无法跨平台,它们仅在 Windows 上运行.通常,AS

让ASP.NET Core支持GraphQL之-GraphQL的实现原理

众所周知RESTful API是目前最流行的软件架构风格之一,它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. RESTful的优越性是毋庸置疑的,不过GraphQL也可以作为一种补充,让你的服务既支持RESTful的http调用,也容许客户端通过GraphQL支持的声明式语法调用服务. 本篇文章并不想对比RESTful和GraphQL孰轻孰重,或者那种方式更好,相关比较可以参考GraphQL的前世今生.本文旨在介绍如何在ASP.NET C

asp.net core 使用identityServer4的密码模式来进行身份认证(2) 认证授权原理

原文:asp.net core 使用identityServer4的密码模式来进行身份认证(2) 认证授权原理 前言:本文将会结合asp.net core 认证源码来分析起认证的原理与流程.asp.net core版本2.2 对于大部分使用asp.net core开发的人来说. 下面这几行代码应该很熟悉了. services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) .AddJwtBearer(options => { o