自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

詳解 ASP.NET Core 運(yùn)行時(shí)之模塊化設(shè)計(jì)

開(kāi)發(fā) 前端
ASP.NET Core 運(yùn)行時(shí),是指框架本身在運(yùn)行時(shí)執(zhí)行的部分,主要包括以下幾個(gè)方面:HTTP 模塊、中間件管道、路由匹配、請(qǐng)求處理、響應(yīng)處理、視圖引擎等。

整體上可以分為以下幾個(gè)模塊:

應(yīng)用程序托管模塊

應(yīng)用程序托管模塊是入口點(diǎn),主要負(fù)責(zé)創(chuàng)建 Host、解析 ConfigureServices 和 Configure 方法,創(chuàng)建 Pipeline 等。Host 是應(yīng)用程序的主機(jī)運(yùn)行時(shí)環(huán)境,它提供了一些配置和管理應(yīng)用程序的基礎(chǔ)功能,例如配置文件的讀取、依賴注入容器的初始化、中間件的注冊(cè)和加載等。ConfigureServices 方法主要用于注冊(cè)依賴注入服務(wù);Configure 方法則用于配置中間件管道,在這里注冊(cè)各種 Middleware 和 Endpoint。

HTTP 模塊

HTTP 模塊是 ASP.NET Core 的核心模塊,它負(fù)責(zé)處理 HTTP 請(qǐng)求并生成 HTTP 響應(yīng)。該模塊由以下三個(gè)子模塊組成:HttpContext、HttpRequest、HttpResponse。

  1. HttpContext:表示每個(gè) HTTP 請(qǐng)求的上下文。其中包含了請(qǐng)求對(duì)象(HttpRequest)、響應(yīng)對(duì)象(HttpResponse)、路由信息、HTTP 版本以及一些自定義數(shù)據(jù)等。
  2. HttpRequest:表示一個(gè) HTTP 請(qǐng)求。其中包括了請(qǐng)求頭、Cookie、查詢字符串、Form 表單數(shù)據(jù)、請(qǐng)求正文等信息。
  3. HttpResponse:表示一個(gè) HTTP 響應(yīng)。其中包括了狀態(tài)碼、響應(yīng)頭、Cookie、響應(yīng)正文等信息。

中間件管道

中間件管道是 ASP.NET Core 處理請(qǐng)求的核心部分,它通過(guò)鏈?zhǔn)秸{(diào)用各種中間件來(lái)實(shí)現(xiàn) HTTP 請(qǐng)求處理。每個(gè) Middleware 可以選擇把請(qǐng)求傳遞給下一個(gè) Middleware 或者終止請(qǐng)求。中間件的注冊(cè)和執(zhí)行通過(guò) IApplicationBuilder 接口進(jìn)行控制。管道的執(zhí)行流程是從第一個(gè)中間件開(kāi)始執(zhí)行,如果當(dāng)前中間件沒(méi)有終止請(qǐng)求,則使用 Next() 方法將請(qǐng)求傳遞給下一個(gè)中間件,直到所有的中間件都執(zhí)行完畢并返回響應(yīng)結(jié)果。

路由模塊

路由模塊負(fù)責(zé) URL 路由和 Endpoint 的匹配工作。在路由模塊中,ASP.NET Core 提供了豐富的路由模板語(yǔ)法,用于構(gòu)建 RESTful Web API 和 MVC 應(yīng)用程序。路由模塊通常涉及到以下幾個(gè)類:Route、RouteTemplate、RouteData、RouteContext。

 ActionInvoker 模塊

ActionInvoker 模塊是 MVC/Web API 中用于調(diào)用 Controller Action 方法的核心模塊。該模塊根據(jù)路由匹配的結(jié)果獲取對(duì)應(yīng)的 ActionDescriptor,然后通過(guò)反射調(diào)用 Controller 對(duì)應(yīng)的 Action 方法,并自動(dòng)將參數(shù)綁定到 Controller Action 方法中。

視圖引擎模塊

視圖引擎模塊用于 MVC 中的視圖渲染工作,它的主要職責(zé)是根據(jù) Controller Action 指定的視圖名稱和模型數(shù)據(jù),渲染出對(duì)應(yīng)的 HTML 內(nèi)容。視圖引擎分為兩種:Razor 視圖引擎和自定義視圖引擎。

在 ASP.NET Core 的源碼設(shè)計(jì)中,框架采用了面向?qū)ο缶幊痰乃枷?,利用接口、抽象類等方式?shí)現(xiàn)模塊之間的松耦合關(guān)系,方便擴(kuò)展和替換。設(shè)計(jì)中也使用了依賴注入、工廠等設(shè)計(jì)模式來(lái)進(jìn)行對(duì)象管理和創(chuàng)建。總體上,ASP.NET Core 的源碼設(shè)計(jì)非常精巧,充分體現(xiàn)了 .NET 生態(tài)系統(tǒng)的優(yōu)秀品質(zhì)。

以下是一個(gè) ASP.NET Core 運(yùn)行時(shí)的示例代碼,以說(shuō)明運(yùn)行時(shí)如何工作:

using System;
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;

namespace MyNamespace
{
    public class Startup
    {
        // Configure services for DI container
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddControllers();
        }

        // Configure HTTP request pipeline
        public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
        {
            if (env.IsDevelopment())
            {
                app.UseDeveloperExceptionPage();
            }

            app.UseRouting();

            app.UseEndpoints(endpoints =>
            {
                endpoints.MapGet("/", async context =>
                {
                    await context.Response.WriteAsync("Hello World!");
                });
                endpoints.MapControllers();
            });
        }
    }
}

在上述示例中,Startup 類是應(yīng)用程序托管模塊。ConfigureServices 方法用于注冊(cè)依賴注入服務(wù),這里使用 AddControllers() 方法來(lái)添加 MVC 控制器。Configure 方法則負(fù)責(zé)配置中間件管道,首先判斷當(dāng)前是否在開(kāi)發(fā)環(huán)境中,如果是,則調(diào)用 UseDeveloperExceptionPage() 中間件來(lái)為開(kāi)發(fā)者提供異常信息的友好顯示;接著使用 UseRouting() 方法啟用 Routing,接下來(lái)使用 UseEndpoints() 方法來(lái)配置請(qǐng)求終結(jié)點(diǎn),其中 MapGet() 方法配置了一個(gè) GET 請(qǐng)求終結(jié)點(diǎn)“/”,返回“Hello World!”;MapControllers() 方法則將所有控制器動(dòng)作方法映射到當(dāng)前應(yīng)用程序。

官方文檔:https://learn.microsoft.com/en-us/aspnet/core/introduction-to-aspnet-core?view=aspnetcore-7.0。

責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2023-07-03 08:48:40

Web模塊化設(shè)計(jì)

2023-07-04 08:26:15

2009-07-20 16:14:39

ASP.NET運(yùn)行時(shí)

2024-09-09 07:37:51

AspJWT權(quán)限

2009-11-27 14:17:45

ASP.NET 4運(yùn)行

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設(shè)計(jì)

2009-08-10 14:31:46

ASP.NET組件設(shè)計(jì)ASP.NET控件生命

2009-07-29 16:08:07

ASP和ASP.NET

2009-08-10 14:08:15

ASP.NET服務(wù)器控ASP.NET組件設(shè)計(jì)

2024-10-21 07:15:08

2017-03-06 11:13:57

ASP.NETCoreMVC

2009-04-23 10:33:52

ASP.NET設(shè)計(jì)思想微軟

2021-03-04 11:10:29

容器化Docker虛擬機(jī)

2009-07-28 17:17:19

ASP.NET概述

2009-07-28 16:57:50

ASP.NET Ses

2009-07-22 16:25:41

ASP.NET AJA

2009-07-24 10:14:22

ASP.NET開(kāi)發(fā)

2009-08-05 11:14:33

ASP.NET ISA

2025-04-18 08:45:26

2021-01-05 07:51:06

版本化ASP
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)