推荐一个 ASP.NET Core 的轻量级插件框架

前言

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

相关推荐
TXRock3 小时前
从入门到放弃,我们为何从 Blazor 回到 Vue
c#·.net·recommendations
慧都小妮子1 天前
全新更新!Fastreport.NET 2025.1版本发布,提升报告开发体验
.net·报表控件·fastreport
时光追逐者1 天前
一款基于.NET8开源且免费的中小型酒店管理系统
开发语言·后端·c#·.net
小码编匠1 天前
2024 年 ASP.NET Core 学习指南
后端·c#·.net
Crazy Struggle1 天前
.NET 实现的零部件离散型 MES+WMS 系统
wms·.net·mes·制造管理系统
孟章豪1 天前
使用 JWT 实现 .NET 应用的授权与鉴权
.net
sssuperMario3 天前
【.Net】【C#】Program.cs通用代码模板
c#·.net·1024程序员节
小码编匠3 天前
.NET 8 实现无实体库表 API 部署服务
后端·c#·.net
Crazy Struggle3 天前
.NET + 微信小程序开源多功能电商系统
小程序·.net·电商系统·移动端app