国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【.Net動態(tài)Web API】背景與實現(xiàn)原理

這篇具有很好參考價值的文章主要介紹了【.Net動態(tài)Web API】背景與實現(xiàn)原理。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

??前言
本文是《.Net Core進階編程課程》教程專欄的導航站(點擊鏈接,跳轉(zhuǎn)到專欄主頁,歡迎訂閱,持續(xù)更新…)

專欄介紹:通過源碼實例來講解Asp.Net Core進階知識點,讓大家完全掌握每一個知識點。

專欄適用于人群:Web后端開發(fā)人員
————————————————

本課程內(nèi)容:

1、動態(tài)Web API背景

2、動態(tài)Web API實現(xiàn)原理

3、識別自定義控制器

一、動態(tài)Web API背景

一說到動態(tài)Web API,很多人都是因為使用ABP框架了解的。在講解如何實現(xiàn)之前,我們了解下動態(tài)Web API的好處!

在DDD框架中,領(lǐng)域?qū)雍蛻?yīng)用層是核心、所有業(yè)務(wù)處理與邏輯全部放在這兩個層,而API層是只是薄薄的一層。

比如:DDD教程里的API代碼,都是只有2行代碼。

【.Net動態(tài)Web API】背景與實現(xiàn)原理,Asp.Net Core進階教程,.net,c#,.netcore

這樣就存在2個問題:

1、每一個對外提供的API接口,我們都需要編寫,這些都很機械化的代碼。

2、EletricAuthorize權(quán)限驗證,其實是屬于應(yīng)用層的,但這邊被放在API層。

而通過動態(tài)Web API,可以減少代碼量、提升工作效率等諸多好處。

二、動態(tài)Web API實現(xiàn)原理

2.1 應(yīng)用程序部件

我們之所以可以實現(xiàn)動態(tài)Web API,要歸功于Asp.net Core為我們提供的:應(yīng)用程序部件。

在Asp.Net Core架構(gòu)里,MVC控制器、視圖組件、Razor Pages、Razor 視圖、標記幫助程序(Tag Helpers)等都是一個獨立的功能組件,它允許我們通過發(fā)現(xiàn)并加載應(yīng)用程序中的特定功能組件。

比如:Web API只需加載MVC控制器、MVC架構(gòu)的程序需要加載MVC控制器、視圖組件。

比如官方文檔里示例里,就是通過加載外部的DLL庫,來加載控制器。

【.Net動態(tài)Web API】背景與實現(xiàn)原理,Asp.Net Core進階教程,.net,c#,.netcore

官方文檔地址:https://learn.microsoft.com/zh-cn/aspnet/core/mvc/advanced/app-parts?view=aspnetcore-8.0

2.2 獨立控制器項目示例

下面用一個示例來演示下,如何使用。

2.2.1 新建Web API項目

【.Net動態(tài)Web API】背景與實現(xiàn)原理,Asp.Net Core進階教程,.net,c#,.netcore

項目名稱:Electric.DynamicWebAPI

【.Net動態(tài)Web API】背景與實現(xiàn)原理,Asp.Net Core進階教程,.net,c#,.netcore

為了后續(xù)方便調(diào)試:勾選啟用OpenAPI,框架版本:這里選擇.Net 7.0(這里可以根據(jù)需求自行選擇)。

【.Net動態(tài)Web API】背景與實現(xiàn)原理,Asp.Net Core進階教程,.net,c#,.netcore

添加后的目錄:

【.Net動態(tài)Web API】背景與實現(xiàn)原理,Asp.Net Core進階教程,.net,c#,.netcore

2.2.2 新建控制器項目

選擇類庫項目

【.Net動態(tài)Web API】背景與實現(xiàn)原理,Asp.Net Core進階教程,.net,c#,.netcore

項目名稱:Electric.Controller

【.Net動態(tài)Web API】背景與實現(xiàn)原理,Asp.Net Core進階教程,.net,c#,.netcore

框架:.Net 7.0

【.Net動態(tài)Web API】背景與實現(xiàn)原理,Asp.Net Core進階教程,.net,c#,.netcore

添加后的目錄:

【.Net動態(tài)Web API】背景與實現(xiàn)原理,Asp.Net Core進階教程,.net,c#,.netcore

2.2.3 新增控制器

在項目Electric.Controller,新增控制器:TestController。

【.Net動態(tài)Web API】背景與實現(xiàn)原理,Asp.Net Core進階教程,.net,c#,.netcore

TestController代碼:

using Microsoft.AspNetCore.Mvc;

namespace Electric.Controller
{
    [ApiController]
    [Route("[controller]")]
    public class TestController : ControllerBase
    {
        [HttpGet]
        public string GetName()
        {
            return "GetName";
        }
    }
}
2.2.4 編譯項目Electric.Controller

編譯后把dll拷貝至 Electric.DynamicWebAPI項目bin目錄下。

【.Net動態(tài)Web API】背景與實現(xiàn)原理,Asp.Net Core進階教程,.net,c#,.netcore

2.2.5 Electric.DynamicWebAPI加載控制器

在Program.cs加載程序集dll。

【.Net動態(tài)Web API】背景與實現(xiàn)原理,Asp.Net Core進階教程,.net,c#,.netcore

當然了,如果Electric.DynamicWebAPI如果引用了項目TestController,Asp.Net Core框架會默認掃描所有控制器,就不需要添加上面的代碼。

【.Net動態(tài)Web API】背景與實現(xiàn)原理,Asp.Net Core進階教程,.net,c#,.netcore

//加載控制器

var assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + "Electric.Controller.dll");

builder.Services.AddControllers().AddApplicationPart(assembly);

2.2.6 運行項目

運行項目后,我們就可以看到控制器:TestController,已經(jīng)被加載了。

【.Net動態(tài)Web API】背景與實現(xiàn)原理,Asp.Net Core進階教程,.net,c#,.netcore

2.3 ApplicationPartManager

通過官方文檔和上面的演示,知道Asp.Net Core為我們提供了ApplicationPartManager,來方便我們根據(jù)需求來加載各種組件,比如控制器組件、視圖組件等。

官方文檔也告訴我們,通過AddApplicationPart和ConfigureApplicationPartManager,都可以實現(xiàn)加載組件。

【.Net動態(tài)Web API】背景與實現(xiàn)原理,Asp.Net Core進階教程,.net,c#,.netcore

3、識別自定義控制器

3.1 問題

看完上面的例子,可能會有很多人會產(chǎn)生一個問題:你定義的控制器,是繼承了ControllerBase,Asp.Net Core可以自動識別,但是我們在DDD框架中,編寫的可是應(yīng)用服務(wù),不會去繼承ControllerBase。

【.Net動態(tài)Web API】背景與實現(xiàn)原理,Asp.Net Core進階教程,.net,c#,.netcore

3.2 檢查應(yīng)用程序部件

針對上面的問題,我們就需要用到:檢查應(yīng)用程序部件。

Asp.net Core也為我們提供了檢查應(yīng)用程序部件的方法,通過這些功能提供程序,我們就可以告訴

Asp.net Core哪一個是控制器。

【.Net動態(tài)Web API】背景與實現(xiàn)原理,Asp.Net Core進階教程,.net,c#,.netcore

3.3 ApplicationPartManager 定義

我們通過ApplicationPartManager的源碼定義看,我們就可以很清楚的知道。

我們要實現(xiàn)動態(tài)API,只需兩個步驟:

1、為ApplicationParts加載程序集資源;

2、為FeatureProviders添加檢查應(yīng)用程序部件的方法,告訴Asp.net Core哪一個是控制器。

【.Net動態(tài)Web API】背景與實現(xiàn)原理,Asp.Net Core進階教程,.net,c#,.netcore

四、最后

【.Net動態(tài)Web API】背景與實現(xiàn)原理就介紹到這邊啦!

下一個課程講解:如何實現(xiàn)動態(tài)控制器!

這個系列預(yù)計一天一篇文章,想要學習的可以關(guān)注起來!

文章會持續(xù)更新,大家有想要了解的功能點或者話題,可以在評論區(qū)告訴我!

【本課程源碼下載鏈接】加我:xgbbwj文章來源地址http://www.zghlxwxcb.cn/news/detail-855193.html

到了這里,關(guān)于【.Net動態(tài)Web API】背景與實現(xiàn)原理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Web SSH 的原理與在 ASP.NET Core SignalR 中的實現(xiàn)

    Web SSH 的原理與在 ASP.NET Core SignalR 中的實現(xiàn)

    有個項目,需要在前端有個管理終端可以 SSH 到主控機的終端,如果不考慮用戶使用 vim 等需要在控制臺內(nèi)現(xiàn)實界面的軟件的話,其實使用 Process 類型去啟動相應(yīng)程序就夠了。而這次的需求則需要考慮用戶會做相關(guān)設(shè)置。 這里用到的原理是偽終端。偽終端(pseudo terminal)是現(xiàn)

    2024年02月07日
    瀏覽(20)
  • ASP.NET Core Web API用戶身份驗證

    ASP.NET Core Web API用戶身份驗證

    ASP.NET Core Web API用戶身份驗證的方法有很多,本文只介紹JWT方法。JWT實現(xiàn)了服務(wù)端無狀態(tài),在分布式服務(wù)、會話一致性、單點登錄等方面凸顯優(yōu)勢,不占用服務(wù)端資源。簡單來說,JWT的驗證過程如下所示: (1)通過用戶名和密碼獲取一個Token。 (2)訪問API時,加上這個Toke

    2024年02月11日
    瀏覽(23)
  • ASP.NET Core 中的兩種 Web API

    ASP.NET Core 有兩種創(chuàng)建 RESTful Web API 的方式: 基于 Controller,使用完整的基于ControllerBase的基類定義接口endpoints。 基于 Minimal APIs,使用Lambda表達式定義接口 endpoints。 基于 Controller 的 Web API 可以使用構(gòu)造函數(shù)注入,或者屬性注入,遵循面向?qū)ο竽J健?基于 Minimal APIs 的 Web API 通

    2024年02月09日
    瀏覽(34)
  • ASP.NET Core Web API之Token驗證

    ASP.NET Core Web API之Token驗證

    在實際開發(fā)中,我們經(jīng)常需要對外提供接口以便客戶獲取數(shù)據(jù),由于數(shù)據(jù)屬于私密信息,并不能隨意供其他人訪問,所以就需要驗證客戶身份。那么如何才能驗證客戶的什么呢?今天以一個簡單的小例子,簡述ASP.NET Core Web API開發(fā)過程中,常用的一種JWT身份驗證方式。僅供學

    2024年02月11日
    瀏覽(22)
  • ASP.NET Core Web API 流式返回,逐字顯示

    ASP.NET Core Web API 流式返回,逐字顯示

    Websocket、SSE(Server-Sent Events)和長輪詢(Long Polling)都是用于網(wǎng)頁和服務(wù)端通信的技術(shù)。 Websocket是一種全雙工通信協(xié)議,能夠?qū)崿F(xiàn)客戶端和服務(wù)端之間的實時通信。它基于TCP協(xié)議,并且允許服務(wù)器主動向客戶端推送數(shù)據(jù),同時也允許客戶端向服務(wù)器發(fā)送數(shù)據(jù)。 SSE是一種單向

    2023年04月23日
    瀏覽(21)
  • ASP.NET Core Web API入門之三:使用EF Core

    ASP.NET Core Web API入門之三:使用EF Core

    一般來講我們做項目都會用實體類跟數(shù)據(jù)庫實體進行關(guān)系對應(yīng),這樣的好處方便我們維護、增刪改查,并且可以減少SQL的編寫,從而統(tǒng)一風格,那么 Entity Framework Core 就是很不錯的ORM框架。 1、跨數(shù)據(jù)庫支持能力強大,只需修改配置就可以輕松實現(xiàn)數(shù)據(jù)庫切換。 2、提升了開發(fā)效

    2024年02月10日
    瀏覽(22)
  • 2.1 .net 8 ASP.NET Core Web API - Controller詳解

    2.1 .net 8 ASP.NET Core Web API - Controller詳解

    書接上回,上節(jié)我們留了幾個問題,即: 1、接口Hello的名字究竟怎么來的? 2、我們?nèi)绻氚呀涌诟某善渌拿Q,應(yīng)該怎么做? 3、我們繼承ControllerBase,以及[Route(“[controller]”)]屬性,又是分別起到什么作用? 需要解決以上幾個問題,我們就要繼續(xù)深入研究Controller相關(guān)的

    2024年02月20日
    瀏覽(22)
  • ASP.NET Core 中基于 Controller 的 Web API

    ASP.NET Core 中基于 Controller 的 Web API

    客戶端發(fā)送Http請求,Contoller響應(yīng)請求,并從數(shù)據(jù)庫讀取數(shù)據(jù),序列化數(shù)據(jù),然后通過 Http Response返回序列化的數(shù)據(jù)。 Web API 的所有controllers 一般繼承于 ControllerBase 類,而不是Controller 類。 因為 Controller 類也繼承自ControllerBase 類,但是支持views,而API一般不需要這個功能。 Co

    2024年02月10日
    瀏覽(30)
  • 在 ASP.NET Core Web API 中處理 Patch 請求

    PUT 和 PATCH 方法用于更新現(xiàn)有資源。 它們之間的區(qū)別是,PUT 會替換整個資源,而 PATCH 僅指定更改。 在 ASP.NET Core Web API 中,由于 C# 是一種靜態(tài)語言( dynamic 在此不表),當我們定義了一個類型用于接收 HTTP Patch 請求參數(shù)的時候,在 Action 中無法直接從實例中得知客戶端提供了哪

    2024年02月04日
    瀏覽(98)
  • ASP.NET Core 中基于 Minimal APIs 的Web API

    Minimal APIs 是ASP.NET Core中快速構(gòu)建 REST API 的方式,可以用最少的代碼構(gòu)建全功能的REST API。比如下面三行代碼: 可以實現(xiàn)在請求網(wǎng)站根目錄結(jié)點的時候,返回\\\"Hello World!\\\"。 這種方式的Web API可以用于構(gòu)建微服務(wù),極簡功能的網(wǎng)站。 下面代碼,將幾個 HTTP 請求的 url映射到 Lambda

    2024年02月10日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包