首页 > 其他分享 >SimpleAdmin手摸手教学之:插件管理

SimpleAdmin手摸手教学之:插件管理

时间:2023-04-06 20:56:03浏览次数:50  
标签:插件 Configure Plugin SimpleAdmin 引用 手摸 public

一、前言

在2.0的架构设计中,引入了插件的概念,目的就是为了解决代码臃肿问题,随着系统功能越来越多,System层的代码也越来越多,之前是以文件夹的方式区分功能模块,这样的话代码就过于集中,想找到某一个功能模块的代码就要翻好几个文件夹,不利于以后的开发和维护。所以在新的架构中,我将部分功能模块通过插件的方式提取出来,封装成类库形式的插件,这样System层如果需要哪个功能,就直接引用该功能模块的插件,我们调试代码中遇到问题也直接可以去对应功能模块的插件项目中查看代码并调试,非常方便。

二、插件说明

2.1核心插件

2.1.1 SimpleAdmin.Plugin.Core

插件核心,被其他插件所引用,类似SimplAdmin.Core层,存放一些公共的特性,常量,枚举,接口等。

2.1.2 SimpleAdmin.Plugin.SqlSugar

SqlSugar插件,集成了SqlSugar的单例模式,数据库实体和一些常量我也移了过来,之前是放在核心层,但是我觉得提取出来的话后面找数据库相关的功能和配置就直接到SqlSugar插件找,非常方便。

2.1.3 SimpleAdmin.Plugin.CodeFirst

CodeFirst数据迁移插件,如果需要数据库初始化和种子数据的生成,则引用该插件。

2.1.4 SimpleAdmin.Plugin.Cache

缓存插件,支持MemeryCache和Redis二选一,默认使用MemeryCache。

2.1.5 SimpleAdmin.Plugin.Aop

Aop插件,如果需要Aop功能,则可以使用该插件。

2.2系统模块

2.2.1 SimpleAdmin.Plugin.Mqtt

Mqtt插件,集成mqtt客户端功能,如果需要使用mqtt功能则可以引用该插件,支持和SignalR插件并存。

2.2.2 SimpleAdmin.Plugin.SignalR

SignalR插件,主要用于及时通讯和消息通知,系统默认消息通知使用的是Signalr,当然也可以切换成mqtt,可以和mqtt插件并存。

2.2.3 SimpleAdmin.Plugin.ImportExport  

导入导出插件,继承了数据导入导出功能,使用的Magicodes.IE.Excel实现的

2.2.4 SimpleAdmin.Plugin.Gen

代码生成插件,集成了代码生成器功能,跟其他插件不同的是该插件引用System层而不是被System层引用。

2.2.5 SimpleAdmin.Plugin.Batch

批量编辑插件,集成了批量编辑功能。

三、如何新建插件

新建类库项目,输入项目名称和项目位置,命名规则为SimpleAdmin.Plugin.XXX,注意项目位置要在SimpleAdmin.Plugin文件夹。

双击新建的插件,修改PropertyGroup里得内容,这里的DocumentationFile改成自己的插件名称。

	<PropertyGroup>
		<TargetFrameworks>net7.0;net6.0</TargetFrameworks>
		<NoWarn>1701;1702;8616;1591;8618;8629;8602;8603;8604;8625;8765</NoWarn>
		<DocumentationFile>SimpleAdmin.Plugin.Test.xml</DocumentationFile>
		<ImplicitUsings>enable</ImplicitUsings>
		<Nullable>enable</Nullable>
	</PropertyGroup>

vs应该会提示重新加载项目,选择重新加载项目,并引用SimpleAdmin.Plugin.Core插件。

创建GlobalUsing.cs文件,用于全局引用。

global using Furion;
global using Microsoft.AspNetCore.Builder;
global using Microsoft.AspNetCore.Hosting;
global using Microsoft.Extensions.DependencyInjection;
global using SimpleAdmin.Plugin.Core;

新建startup.cs类,在 Furion 框架中,提供了更为灵活的 Startup 类配置方式,无需在 Web 启用层 中配置,可将配置放到任何项目层。详情可以查看Furion文档 https://furion.baiqian.ltd/docs/appstartup

/// <summary>
/// AppStartup启动类
/// </summary>
public class Startup : AppStartup
{
    /// <summary>
    /// ConfigureServices中不能解析服务,比如App.GetService(),尤其是不能在ConfigureServices中获取诸如缓存等数据进行初始化,应该在Configure中进行
    /// 服务都还没初始化完成,会导致内存中存在多份 IOC 容器!!
    /// 正确应该在 Configure 中,这个时候服务(IServiceCollection 已经完成 BuildServiceProvider() 操作了
    /// </summary>
    /// <param name="services"></param>
    public void ConfigureServices(IServiceCollection services)
    {
         Console.WriteLine("注册Test插件");
         //serviec.AddXXX();
    }
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
    }
}

 通过startup的方式,你只要引用了插件,则系统启动之后会自动调用里面的ConfigureServicesConfigure。如果你想你的插件可以通过配置文件选择启用或者不启用,那么你应该创建一个Component类,可以参考MQTT组件和Furion文档https://furion.baiqian.ltd/docs/component

namespace SimpleAdmin.Plugin.Test;

/// <summary>
///  Test组件
/// </summary>
public sealed class TestComponent : IServiceComponent
{

    /// <summary>
    /// ConfigureServices中不能解析服务,比如App.GetService(),尤其是不能在ConfigureServices中获取诸如缓存等数据进行初始化,应该在Configure中进行
    /// 服务都还没初始化完成,会导致内存中存在多份 IOC 容器!!
    /// 正确应该在 Configure 中,这个时候服务(IServiceCollection 已经完成 BuildServiceProvider() 操作了
    /// </summary>
    /// <param name="services"></param>
    public void Load(IServiceCollection services, ComponentContext componentContext)
    {
        Console.WriteLine("注册Test插件");
    }
}


/// <summary>
/// Test组件
/// 模拟 Configure
/// </summary>
public sealed class TestApplicationComponent : IApplicationComponent
{
    public void Load(IApplicationBuilder app, IWebHostEnvironment env, ComponentContext componentContext)
    {

    }
}

System层引用新建的插件,如果你的插件是像代码生成插件一样引用了System层,则要Web.Core层引用才行。

启动项目,可以看到插件启动了,剩下的就是自己写插件功能了。

标签:插件,Configure,Plugin,SimpleAdmin,引用,手摸,public
From: https://www.cnblogs.com/huguodong/p/17294128.html

相关文章

  • YouTube的英文视频翻译插件
      1官方地址https://www.dual-subtitles.com/应用商店  2设置   3添加后效果      ......
  • 【wordpress】wordpress插件之自动采集发布工具
    前言安装好wordpress后,就要开始发布文章,由于之前的文章分散在各个平台,想要一个个拷贝过去,的确费时费力,所以想要一劳永逸的解决这个问题,就要用到今天介绍的这个采集工具插件安装搜索:FatRatCoolect然后点击现在安装如果因为网速慢下载不下来,可以直接到官网下载然后上传:cd/wp-con......
  • vue 上传大型文件插件(vue上传视频插件)
    ​IE的自带下载功能中没有断点续传功能,要实现断点续传功能,需要用到HTTP协议中鲜为人知的几个响应头和请求头。 一. 两个必要响应头Accept-Ranges、ETag        客户端每次提交下载请求时,服务端都要添加这两个响应头,以保证客户端和服务端将此下载识别为可以断点续传......
  • VSCode插件Project Manager的使用方法
    1.在VSCode扩展里下载插件ProjectManager   2.点击文件,打开文件夹  3.这是你当前在vscode中打开的项目,单机回车就可以保存到项目管理  3.如果同时保存了多个项目管理文件,还可以给他们进行分组。 单击图标后编辑tags内容  4.再点击如下图标即可看......
  • 性能工具之Jmeter扩展配置元件插件
    背景Jmeter有很多的配置元件可以定义变量值在测试过程中使用比如最常见的两个:用户自定义变量CSV数据文件设置配置元件主要是用于测试前配置,将配置转换为变量设置到Jmetercontext中。而Jmeter默认并没有配置文件(.properties)读取器,但由于Jmeter是开源的,我们自己可以自定义一个配置......
  • 小程序对接三方插件契约锁
    1.申请插件在开始开发前,需要先申请契约锁小程序插件的使用权限,开发者需要登录自身小程序管理后台,在”设置-第三方服务-插件管理“中添加小程序插件,通过如下appId:wxaf8f505686ddf66a匹配到插件后添加即可提交申请。 2.引入插件,也可在分包目录下引入,在主包内引入可能会超两......
  • Kubernetes 如何安装 NFS-Subdir-External-Provisioner存储插件?
    一、搭建NFS服务器1、背景介绍Kubernetes对Pod进行调度时,以当时集群中各节点的可用资源作为主要依据,自动选择某一个可用的节点,并将Pod分配到该节点上。在这种情况下,Pod中容器数据的持久化如果存储在所在节点的磁盘上,就会产生不可预知的问题,例如,当Pod出现故障,Kubernetes......
  • vscode配置docker插件
    参考:https://zhuanlan.zhihu.com/p/530413695  ================================================  本文不对vscode、docker的安装及docker插件的安装进行讲解,本文只讲在vscode上如何配置以使docker插件正常使用。 VSCODE上安装好docker插件后会发现并不能正常使用......
  • VSCode更改插件安装位置
    1、使用–extensions-dir命令使用命令行打开VSCode,增加参数–extensions-dir插件路径这种方式存在弊端,就是命令行窗口不能关闭。当然也可以增加一个.bat文件打开编辑器。2、使用–extensions-dir命令如果不在安装目录里面创建data目录,那么vscode默认是在C:\Users\dell.vscode......
  • Blender网格建模插件MESHmachine倒角和圆角:扁平 化
    推荐:将NSDT场景编辑器加入你的3D工具链编辑模式ye使用拼合工具,您可以拼合单个或多个多边形,并且可以在2种模式下展平:沿边或沿法线。选择展平可以采取2种选择。您可以选择 3个折点或多个多边形,其中一个处于活动状态。如果选择3个顶点,则连接多边形的所有顶点都将根据3个顶点......