推薦一個 ASP.NET Core 的輕量級外掛框架

小码编匠發表於2024-10-31

前言

本文將介紹一個專為ASP.NET Core設計的輕量級外掛框架——PluginCore,該框架不僅能夠簡化外掛的開發與整合,還能大幅提高開發效率。

另外,還將簡要介紹相關的前端技術和SDK支援,幫助我們快速上手。

專案介紹

PluginCore是一個輕量級外掛框架,透過最小化的配置簡化外掛的整合與管理,能夠快速上手並專注於核心業務邏輯的開發。

該框架支援動態WebAPI、外掛隔離與共享、前後端分離以及熱插拔等特性,非常適合需要高度模組化與可擴充套件性的應用場景。

推薦一個 ASP.NET Core 的輕量級外掛框架

專案特點

  • 簡單易用:遵循“約定優於配置”的原則,最大限度減少配置需求,讓您專注於核心業務邏輯。
  • 開箱即用:前端與後端自動整合,只需幾行程式碼即可完成整個整合流程。
  • 動態WebAPI:每個外掛都可以新增新的Controller,擁有獨立的路由配置。
  • 外掛隔離與共享:提供完善的外掛隔離機制,並支援型別共享。
  • 前後端分離:允許在外掛的wwwroot資料夾中放置前端資原始檔,直接透過外掛ID訪問。
  • 熱插拔:支援在不停機的情況下上傳、安裝、啟用、禁用、解除安裝和刪除外掛;甚至可以在執行時動態新增HTTP請求中介軟體。
  • 依賴注入:在實現IPlugin介面的外掛類建構函式中支援DI。
  • 模組化:所有過程均模組化處理,並全面支援DI,便於替換和自定義外掛機制。
  • 易擴充套件:支援編寫外掛SDK和擴充套件外掛,提供自定義外掛鉤子。
  • 外掛依賴樹:宣告式的依賴關係,自動根據依賴關係確定載入順序。
  • 生命週期管理:可控的外掛生命週期,包括事件分發機制。
  • 前端掛件:可在前端定義擴充套件點,並透過外掛注入掛件,支援HTML/CSS/JavaScript。
  • 無資料庫依賴:完全不需要資料庫支援。
  • 零侵入性:對現有系統幾乎沒有侵入性。
  • 極少外部依賴:除用於解壓縮的SharpZipLib之外,無其他第三方依賴。

專案技術

  • 後端: .NET Standard, .NET Core, .NET, ASP.NET Core
  • 前端: Vue.js, vue-i18n, Vue Router, Vuex, Element UI
  • 前端工具: Babel, Mock.js, SASS, Autoprefixer, ESLint, Axios, NPM

專案使用

專案結構

推薦一個 ASP.NET Core 的輕量級外掛框架

一分鐘整合

推薦使用NuGet整合,在專案的根目錄執行以下命令。

如果使用的是Visual Studio,可以透過"工具"->"NuGet包管理器"->"包管理控制檯"來執行安裝命令:

PM> Install-Package PluginCore.AspNetCore

在ASP.NET Core專案中整合

修改Startup.cs檔案,新增以下程式碼:

using PluginCore.AspNetCore.Extensions;

public class Startup
{
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddControllers();
        services.AddPluginCore(); // 1. 新增 PluginCore
    }

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

        app.UseHttpsRedirection();
        app.UseRouting();
        
        app.UsePluginCore(); // 2. 使用 PluginCore
        
        app.UseAuthorization();
        app.UseEndpoints(endpoints => { endpoints.MapControllers(); });
    }
}

完成後,訪問https://localhost:5001/PluginCore/Admin即可進入PluginCore管理介面。(請將URL替換為您實際的地址)

注意

請登入PluginCore管理介面後,及時更改預設的使用者名稱和密碼:

{
    "Admin": {
        "UserName": "admin",
        "Password": "ABC12345"
    },
    "FrontendMode": "LocalEmbedded",
    "RemoteFrontend": "https://cdn.jsdelivr.net/gh/yiyungent/plugincore-admin-frontend@0.1.2/dist-cdn"
}

更改後立即生效,無需重啟站點,但需要重新登入PluginCore管理介面。

Docker體驗

如果希望透過Docker體驗PluginCore,可以使用以下命令:

docker run -d -p 5004:80 -e ASPNETCORE_URLS="http://*:80" --name plugincore-aspnetcore3-1 yiyungent/plugincore-aspnetcore3-1

訪問 https://localhost:5001/PluginCore/Admin 進入 PluginCore 管理介面(注意將埠替換為你的實際埠)

專案效果

推薦一個 ASP.NET Core 的輕量級外掛框架

推薦一個 ASP.NET Core 的輕量級外掛框架

推薦一個 ASP.NET Core 的輕量級外掛框架

推薦一個 ASP.NET Core 的輕量級外掛框架

推薦一個 ASP.NET Core 的輕量級外掛框架

專案應用例項

1、yiyungent/KnifeHub

【PluginCore.AspNetCore 最佳實踐】工具平臺,涵蓋日常生活、學習、工作及開發所需的各類工具集。

https://github.com/yiyungent/KnifeHub

2、yiyungent/Dragonfly

利用ASP.NET Core與Selenium實現的Web自動化解決方案。

https://github.com/yiyungent/Dragonfly

專案地址

GitHub:https://github.com/yiyungent/PluginCore

線上文件:https://yiyungent.github.io/PluginCore/zh

最後

如果你覺得這篇文章對你有幫助,不妨點個贊支援一下!你的支援是我繼續分享知識的動力。如果有任何疑問或需要進一步的幫助,歡迎隨時留言。

也可以加入微信公眾號[DotNet技術匠] 社群,與其他熱愛技術的同行一起交流心得,共同成長!優秀是一種習慣,歡迎大家留言學習!

相關文章