介绍
适用于 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.com/share/27056.html