前言
本文將介紹一個專為ASP.NET Core設計的輕量級外掛框架——PluginCore,該框架不僅能夠簡化外掛的開發與整合,還能大幅提高開發效率。
另外,還將簡要介紹相關的前端技術和SDK支援,幫助我們快速上手。
專案介紹
PluginCore是一個輕量級外掛框架,透過最小化的配置簡化外掛的整合與管理,能夠快速上手並專注於核心業務邏輯的開發。
該框架支援動態WebAPI、外掛隔離與共享、前後端分離以及熱插拔等特性,非常適合需要高度模組化與可擴充套件性的應用場景。
專案特點
- 簡單易用:遵循“約定優於配置”的原則,最大限度減少配置需求,讓您專注於核心業務邏輯。
- 開箱即用:前端與後端自動整合,只需幾行程式碼即可完成整個整合流程。
- 動態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
專案使用
專案結構
一分鐘整合
推薦使用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 管理介面(注意將埠替換為你的實際埠)
專案效果
專案應用例項
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技術匠] 社群,與其他熱愛技術的同行一起交流心得,共同成長!優秀是一種習慣,歡迎大家留言學習!