PluginCore:ASP.NET Core轻量级插件框架

PluginCore - ASP.NET Core 轻量级插件框架

适用于 http://ASP.NET Core 的轻量级插件框架

介绍

适用于 http://ASP.NET Core 的轻量级插件框架

  • 简单 – 约定优于配置, 以最少的配置帮助你专注于业务
  • 开箱即用 – 前后端自动集成
  • 动态 WebAPI – 每个插件都可新增 Controller, 拥有自己的路由
  • 热插拔 – 上传、安装、启用、禁用、卸载 均无需重启站点
  • 易扩展 – 你可以编写你自己的插件sdk, 然后引用插件sdk, 编写扩展插件 – 自定义插件钩子, 并应用
  • 无需数据库 – 无数据库依赖
  • 0侵入 – 近乎0侵入

一分钟集成

推荐使用 NuGet, 在你项目的根目录 执行下方的命令, 如果你使用 Visual Studio, 这时依次点击 Tools -> NuGet Package Manager -> Package Manager Console , 确保 “Default project” 是你想要安装的项目, 输入下方的命令进行安装.

PM> Install-Package PluginCore

在你的 http://ASP.NET Core 应用程序中修改代码
Startup.cs

using PluginCore.Extensions;

// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();

    // 1. 添加 PluginCore
    services.AddPluginCore();
}

// This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
    if (env.IsDevelopment())
    {
        app.UseDeveloperExceptionPage();
    }

    app.UseHttpsRedirection();

    app.UseRouting();

    // 2. 使用 PluginCore
    app.UsePluginCore();

    app.UseAuthorization();

    app.UseEndpoints(endpoints =>
    {
        endpoints.MapControllers();
    });
}

现在访问
https://localhost:5001/PluginCore/Admin 即可进入 PluginCore Admin
https://localhost:5001 需改为你的地址

使用

  • 见示例(/examples)

添加插件钩子, 并应用

1.例如,自定义插件钩子: ITestPlugin

using PluginCore.IPlugins;

namespace PluginCore.IPlugins
{
    public interface ITestPlugin : IPlugin
    {
        string Say();
    }
}

2.在需要激活的地方,应用钩子,这样所有启用的插件中,实现了 ITestPlugin 的插件,都将调用 Say()

using PluginCore;
using PluginCore.IPlugins;

namespace WebApi.Controllers
{
    [Route("api/[controller]")]
    [ApiController]
    public class TestController : ControllerBase
    {
        private readonly PluginFinder _pluginFinder;

        public TestController(PluginFinder pluginFinder)
        {
            _pluginFinder = pluginFinder;
        }

        public ActionResult Get()
        {
            //var plugins = PluginFinder.EnablePlugins<BasePlugin>().ToList();
            // 所有实现了 ITestPlugin 的已启用插件
            var plugins2 = _pluginFinder.EnablePlugins<ITestPlugin>().ToList();

            foreach (var item in plugins2)
            {
                // 调用
                string words = item.Say();
                Console.WriteLine(words);
            }

            return Ok("");
        }
    }
}

补充
开发插件只需要, 添加对 PluginCore.IPlugins 包 (插件sdk) 的引用即可,
当然如果你需要 PluginCore , 也可以添加引用
规范
插件接口应当位于 PluginCore.IPlugins 命名空间,这是规范,不强求,但建议这么做,
程序集名不一定要与命名空间名相同,你完全在你的插件sdk程序集中,使用 PluginCore.IPlugins 命名空间。

环境

  • 运行环境: .NET Core 3.1 (+)
  • 开发环境: Visual Studio Community 2019

相关项目

  • plugincore-admin-frontend

Author

PluginCore © yiyun, Released under the Apache-2.0 License.
Authored and maintained by yiyun with help from contributors (list).

GitHub @yiyungent Gitee @yiyungent

内容出处:,

声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.net/share/27056.html

发表评论

登录后才能评论