0.引言

上一篇博文主要介绍了ABP模块及插件的相关知识,本章节主要开发一个插件示例来学习如何创建一个插件,并在应用程序中使用。这个命名为FirstABPPlugin的插件主要在指定的时间段内删除审计日志。

1.创建插件

(1).新建项目,选择【类库(.NET Core)】

(2).添加引用Abp、Abp.ZeroCore

(3).创建FirstABPPluginModule类,继承AbpModule类和声明依赖于AbpZeroCoreModule

    [DependsOn(typeof(AbpZeroCoreModule))]public class FirstABPPluginModule:AbpModule{public override void Initialize(){IocManager.RegisterAssemblyByConvention(Assembly.GetExecutingAssembly());}public override void PostInitialize(){var workManager = IocManager.Resolve<IBackgroundWorkerManager>();workManager.Add(IocManager.Resolve(DeleteOldAuditLogsWorker());}}

(4).添加DeleteOldAuditLogsWorker类

 public class DeleteOldAuditLogsWorker : PeriodicBackgroundWorkerBase, ISingletonDependency{private readonly IRepository<AuditLog, long> _auditLogRepository;public DeleteOldAuditLogsWorker(AbpTimer timer,IRepository<AuditLog,long> auditLogRepository) : base(timer){_auditLogRepository = auditLogRepository;Timer.Period = 5000;}[UnitOfWork]protected override void DoWork(){Logger.Info("---------------- DeleteOldAuditLogsWorker 正在工作 ----------------");using (CurrentUnitOfWork.DisableFilter(AbpDataFilters.MayHaveTenant)){var fiveMinutesAgo = Clock.Now.Subtract(TimeSpan.FromMinutes(5));_auditLogRepository.Delete(log => log.ExecutionTime > fiveMinutesAgo);CurrentUnitOfWork.SaveChanges();}}}

(5).最终结构如下

(6).生成项目,在bin/Debug/netcoreapp2.1目录下生成FirstABPPlugin.dll

2.添加插件到应用程序

(1).启动ABP项目模版生成的程序,把刚生成的FirstABPPlugin.dll拷贝到wwwroot/Plugins目录下

(2).在Mvc项目的Startup.cs类中,添加如下代码:

public class Startup
{private readonly IConfigurationRoot _appConfiguration;public Startup(IHostingEnvironment env){_appConfiguration = env.GetAppConfiguration();}public IServiceProvider ConfigureServices(IServiceCollection services){...// Configure Abp and Dependency Injectionreturn services.AddAbp<AbpProjectNameWebMvcModule>(// Configure Log4Net loggingoptions => options.IocManager.IocContainer.AddFacility<LoggingFacility>(f => f.UseAbpLog4Net().WithConfig("log4net.config"));options.PlugInSources.AddFolder(Path.Combine(_hostingEnvironment.WebRootPath, "Plugins"), SearchOption.AllDirectories););}...
}

(3)运行程序,查看Logs.txt日志记录

【ABP框架系列学习】模块系统之插件示例开发相关推荐

  1. 【ABP框架系列学习】模块系统(4)

    [ABP框架系列学习]模块系统(4) 原文:[ABP框架系列学习]模块系统(4) 0.引言 ABP提供了构建模块和通过组合模块以创建应用程序的基础设施.一个模块可以依赖于另外一个模块.通常,程序集可以 ...

  2. 【ABP框架系列学习】N层架构(3)

    目录 0.引言 1.DDD分层 2.ABP应用构架模型 客户端应用程序(Client Applications) 表现层(Presentation Layer) 分布式服务层(Distributed ...

  3. 基于领域驱动设计思想Abp框架的考试系统

    后端使用企业技术,但有部分阉割. 使用技术: 数据库:Sql Server 后端:.Net5.ABP vNext.AutoMapper.AutoFac.Dapper.EPlus 前端:Vue.js + ...

  4. abp框架(aspnetboilerplate)扩展系统表

    以OrganizationUnit为例,进行扩展,加入IsUse属性 1.创建一个新类,比如ExtendedOrganizationUnit,继承OrganizationUnit public cla ...

  5. ABP官方文档(三)【模块系统】

    1.3 ABP总体介绍 - 模块系统 1.3.1 ABP模块系统简介 ABP框架提供了创建和组装模块的基础,一个模块能够依赖于另一个模块.在通常情况下,一个程序集就可以看成是一个模块.在ABP框架中, ...

  6. [Abp vNext 源码分析] - 2. 模块系统的变化

    一.简要说明 本篇文章主要分析 Abp vNext 当中的模块系统,从类型构造层面上来看,Abp vNext 当中不再只是单纯的通过 AbpModuleManager 来管理其他的模块,它现在则是 I ...

  7. ABP 框架官网学习资料

    ABP是"ASP.NET Boilerplate Project (ASP.NET样板项目)"的简称. [新思想.新技术.新架构--更好更快的开发现代ASP.NET应用程序] AS ...

  8. ABP框架 v3.0 已发布!

    我们很高兴地宣布,ABP框架和ABP商业版3.0版已经发布.与常规的2周发布一个版本不同的是, 这个版本用了4周的时间.关闭了119个issue,合并了89个pull request 和主框架仓库中的 ...

  9. ABP框架 v2.7.0已经发布!

    ABP框架和ABP商业版 v2.7已经发布.我们没有为2.4,2.5和2.6发布博客文章,所以这篇文章也将涵盖这几个版本中新增内容和过去的2个月里我们完成了什么. 关于发布周期与开发 之前说过我们已经 ...

最新文章

  1. c语言 坐标系转换 axistoradius,dynamo编程语言翻译.pdf
  2. rodbc 连接oracle,在R中加密密码 – 使用RODBC连接到Oracle DB
  3. HelloCharts-android 之饼状图的使用
  4. java sessionid长度_php中session_id()函数详细介绍,会话id生成过程及session id长度
  5. 信息源按加工深度划分_铝合金插铣加工切削力分析及成屑弧区划分
  6. 为什么要做稀疏编码_为什么我每天都要编码一年,所以我也学到了什么,以及如何做。...
  7. JavaWeb学习----Cookie实现记住密码的功能
  8. ThinkPHP利用数据库字段做栏目的无限分类
  9. 纯MASM32打造BootClos——查看、备份系统开关机记录(0.0.0001 beta1,9KB)
  10. nasm纠正性训练指南pdf_PDF转word,一键转换?没有这么简单
  11. 网友建站经验——(转载)
  12. [MySQL] - MySQL连接字符串总结 (转)
  13. Mac 内存被一个叫Installer的程序大量占用导致 内存严重不足 解决方案
  14. 别再 select * 了,送你 12 个查询技巧!
  15. 【Windows】win10电脑Miracast投屏到电视
  16. 第一篇:了解和使用MVPArms项目
  17. typedef用法和结构体指针用法
  18. 工程数学(线性代数)笔记
  19. 边缘计算的发展和应用前景
  20. php css抽离,webpack4 单独抽离打包 css 的新实现

热门文章

  1. 干货丨FPGA零基础学习,入门必看!
  2. 题目11:给定被除数和除数,求整数商及余数。
  3. 蓝桥杯 stm32 RTC实时时钟
  4. 网易互娱动效设计师 | VX动效学习如何入门?
  5. 如何在PPT中插入视频
  6. 如何将手机录音文件转换成MP3格式
  7. linux 进程被杀日志,Linux查看日志和关闭、杀***进程命令
  8. 阿里巴巴风鸣:做技术Leader要有危机意识
  9. oracle 删掉索引,如何清除Oracle中无用索引
  10. 使用类共享提高性能,探索 IBM JRE 中最新的类共享特性