前言

本文将介绍一个专为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技术匠] 社区,与其他热爱技术的同行一起交流心得,共同成长!优秀是一种习惯,欢迎大家留言学习!

推荐一个 ASP.NET Core 的轻量级插件框架的更多相关文章

  1. 从零开始实现ASP.NET Core MVC的插件式开发(六) - 如何加载插件引用

    标题:从零开始实现ASP.NET Core MVC的插件式开发(六) - 如何加载插件引用. 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/1171 ...

  2. 如何一秒钟从头构建一个 ASP.NET Core 中间件

    前言 其实地上本没有路,走的人多了,也便成了路. -- 鲁迅 就像上面鲁迅说的那样,其实在我们开发中间件的过程中,微软并没有制定一些策略或者文档来约束你如何编写一个中间件程序, 但是其中却存在者一些最 ...

  3. Kubernetes初探[1]:部署你的第一个ASP.NET Core应用到k8s集群

    Kubernetes简介 Kubernetes是Google基于Borg开源的容器编排调度引擎,作为CNCF(Cloud Native Computing Foundation)最重要的组件之一,它的 ...

  4. 从零开始实现ASP.NET Core MVC的插件式开发(一) - 使用ApplicationPart动态加载控制器和视图

    标题:从零开始实现ASP.NET Core MVC的插件式开发(一) - 使用Application Part动态加载控制器和视图 作者:Lamond Lu 地址:http://www.cnblogs ...

  5. 从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板

    标题:从零开始实现ASP.NET Core MVC的插件式开发(二) - 如何创建项目模板 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11155 ...

  6. 从零开始实现ASP.NET Core MVC的插件式开发(三) - 如何在运行时启用组件

    标题:从零开始实现ASP.NET Core MVC的插件式开发(三) - 如何在运行时启用组件 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/112 ...

  7. 从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装

    标题:从零开始实现ASP.NET Core MVC的插件式开发(四) - 插件安装 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/11260750. ...

  8. 从零开始实现ASP.NET Core MVC的插件式开发(五) - 插件的删除和升级

    标题:从零开始实现ASP.NET Core MVC的插件式开发(五) - 使用AssemblyLoadContext实现插件的升级和删除 作者:Lamond Lu 地址:https://www.cnb ...

  9. 从零开始实现ASP.NET Core MVC的插件式开发(七) - 近期问题汇总及部分解决方案

    标题:从零开始实现ASP.NET Core MVC的插件式开发(七) - 问题汇总及部分解决方案 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun/p/12 ...

  10. 从零开始实现ASP.NET Core MVC的插件式开发(八) - Razor视图相关问题及解决方案

    标题:从零开始实现ASP.NET Core MVC的插件式开发(八) - Razor视图相关问题及解决方案 作者:Lamond Lu 地址:https://www.cnblogs.com/lwqlun ...

随机推荐

  1. 哈希基础知识学习-python版

    哈希 哈希表 根据key直接进行访问的无序数据结构,复杂度为O(1) 哈希表的实现---字典 初始化 d1 = dict() 查找 #使用中括号[]进行查找,括号内为特定的键, 键-值 dic = { ...

  2. [rCore学习笔记 023]任务切换

    导读 还是要先看官方手册. 学过DMA的同志可能比较好理解,一句话, 释放CPU总线 : 如果把应用程序执行的整个过程进行进一步分析,可以看到,当程序访问 I/O 外设或睡眠时,其实是不需要占用处理器 ...

  3. EF Core 索引器属性(Indexer property)场景及应用

    EF Core 索引器属性(Indexer property)场景及应用 简介 EF Core 中的索引器属性(Indexer Property)是指通过一个特殊的属性来访问实体类中的数据,而不必明确 ...

  4. 17-canvas绘制扇形

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

  5. 2024 (ICPC) Jiangxi Provincial 省赛

    2024 (ICPC) Jiangxi Provincial 省赛 前言 和队友 vp 7t,赛后补了几题. A. Maliang Learning Painting 思路 输出 a + b + c ...

  6. 代码随想录Day16

    513.找树左下角的值 给定一个二叉树的 根节点 root,请找出该二叉树的 最底层 最左边 节点的值. 假设二叉树中至少有一个节点. 示例 1: 输入: root = [2,1,3] 输出: 1 示 ...

  7. Linux中级——“驱动” 控制硬件必须学会的底层知识

    驱动认知 1. 什么是驱动 驱动就是对底层硬件设备的操作进行封装,并向上层提供函数接口. 设备分类: linux系统将设备分为3类:字符设备.块设备.网络设备. 字符设备:指只能一个字节一个字节读写的 ...

  8. Win32 GDI 在内存中绘制彩色的位图

    Wind32 GDI在内存中绘制彩色位图 1创建兼容的内存DC hPicture为创建的静态文本框控件句柄 LRESULT OnPaint(HWND hWnd) { PAINTSTRUCT ps; H ...

  9. JuiceFS 在多云架构中加速大模型推理

    在大模型的开发与应用中,数据预处理.模型开发.训练和推理构成四个关键环节.本文将重点探讨推理环节.在之前的博客中,社区用户 BentoML 和贝壳的案例提到了使用 JuiceFS 社区版来提高模型加载 ...

  10. 如何使用 Shebang

    什么是 Shebang? 简单来说,就是你在脚本开头看到的这个: #!/usr/bin/bash Shebang(也称为 hash-bang.pound-bang 或者 bang)是一个作为脚本文件中 ...