【ABP框架系列学习】模块系统之插件示例开发
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框架系列学习】模块系统之插件示例开发相关推荐
- 【ABP框架系列学习】模块系统(4)
[ABP框架系列学习]模块系统(4) 原文:[ABP框架系列学习]模块系统(4) 0.引言 ABP提供了构建模块和通过组合模块以创建应用程序的基础设施.一个模块可以依赖于另外一个模块.通常,程序集可以 ...
- 【ABP框架系列学习】N层架构(3)
目录 0.引言 1.DDD分层 2.ABP应用构架模型 客户端应用程序(Client Applications) 表现层(Presentation Layer) 分布式服务层(Distributed ...
- 基于领域驱动设计思想Abp框架的考试系统
后端使用企业技术,但有部分阉割. 使用技术: 数据库:Sql Server 后端:.Net5.ABP vNext.AutoMapper.AutoFac.Dapper.EPlus 前端:Vue.js + ...
- abp框架(aspnetboilerplate)扩展系统表
以OrganizationUnit为例,进行扩展,加入IsUse属性 1.创建一个新类,比如ExtendedOrganizationUnit,继承OrganizationUnit public cla ...
- ABP官方文档(三)【模块系统】
1.3 ABP总体介绍 - 模块系统 1.3.1 ABP模块系统简介 ABP框架提供了创建和组装模块的基础,一个模块能够依赖于另一个模块.在通常情况下,一个程序集就可以看成是一个模块.在ABP框架中, ...
- [Abp vNext 源码分析] - 2. 模块系统的变化
一.简要说明 本篇文章主要分析 Abp vNext 当中的模块系统,从类型构造层面上来看,Abp vNext 当中不再只是单纯的通过 AbpModuleManager 来管理其他的模块,它现在则是 I ...
- ABP 框架官网学习资料
ABP是"ASP.NET Boilerplate Project (ASP.NET样板项目)"的简称. [新思想.新技术.新架构--更好更快的开发现代ASP.NET应用程序] AS ...
- ABP框架 v3.0 已发布!
我们很高兴地宣布,ABP框架和ABP商业版3.0版已经发布.与常规的2周发布一个版本不同的是, 这个版本用了4周的时间.关闭了119个issue,合并了89个pull request 和主框架仓库中的 ...
- ABP框架 v2.7.0已经发布!
ABP框架和ABP商业版 v2.7已经发布.我们没有为2.4,2.5和2.6发布博客文章,所以这篇文章也将涵盖这几个版本中新增内容和过去的2个月里我们完成了什么. 关于发布周期与开发 之前说过我们已经 ...
最新文章
- c语言 坐标系转换 axistoradius,dynamo编程语言翻译.pdf
- rodbc 连接oracle,在R中加密密码 – 使用RODBC连接到Oracle DB
- HelloCharts-android 之饼状图的使用
- java sessionid长度_php中session_id()函数详细介绍,会话id生成过程及session id长度
- 信息源按加工深度划分_铝合金插铣加工切削力分析及成屑弧区划分
- 为什么要做稀疏编码_为什么我每天都要编码一年,所以我也学到了什么,以及如何做。...
- JavaWeb学习----Cookie实现记住密码的功能
- ThinkPHP利用数据库字段做栏目的无限分类
- 纯MASM32打造BootClos——查看、备份系统开关机记录(0.0.0001 beta1,9KB)
- nasm纠正性训练指南pdf_PDF转word,一键转换?没有这么简单
- 网友建站经验——(转载)
- [MySQL] - MySQL连接字符串总结 (转)
- Mac 内存被一个叫Installer的程序大量占用导致 内存严重不足 解决方案
- 别再 select * 了,送你 12 个查询技巧!
- 【Windows】win10电脑Miracast投屏到电视
- 第一篇:了解和使用MVPArms项目
- typedef用法和结构体指针用法
- 工程数学(线性代数)笔记
- 边缘计算的发展和应用前景
- php css抽离,webpack4 单独抽离打包 css 的新实现