abp框架系列学习模块系统之示例开发(代码片段)

oldergiser oldergiser     2023-01-24     742

关键词:

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 Injection
        return services.AddAbp<AbpProjectNameWebMvcModule>(
            // Configure Log4Net logging
            options => 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提供了在启动时配置模块的基础设施和模型。1.配置ABP配置ABP是在模块的PreInitialize方法中完成的,例如:publicclassSimpleTaskSystemModule:AbpModulepublicoverridevoidPreInitialize()//添加语言Configuration.Localization.Languages.Add(newLanguageI 查看详情

abp开发框架前后端开发系列---abp基础接口处理和省份城市行政区管理模块的开发(代码片段)

...:https://www.cnblogs.com/wuhuacong/p/11017095.html最近没有更新ABP框架的相关文章,一直在研究和封装相关的接口,总算告一段落,开始继续整理下开发心得。上次我在随笔《ABP开发框架前后端开发系列---(5)WebAPI调用类在Winform项目中的... 查看详情

abp架构学习系列

...ABP中配置的注册和初始化ABP架构学习系列三:手工搭建ABP框架 IOC基础学习系列.NetIOC框架入门之一U 查看详情

abpvnext(代码片段)

一、简要介绍#ABPvNext 是ABP框架作者所发起的新项目,截止目前(2019年8月20日)已经拥有1400多个Star,最新版本号为 v0.19.0,可以尝试用于生产环境。新的ABPvNext框架完全是基于ASP.NETCore进行开发,其完全模块化的组件库能够... 查看详情

abp框架-模块系统(代码片段)

模块系统介绍ABP提供了基础设施功能来构建模块,并通过组合这些模块来创建应用。一个模块可以依赖于另一个模块。一般来讲,一个程序集被认为和定义成一个模块。如果你的应用包含多个程序集,那么你可以为每一个程序集... 查看详情

如何使用abp进行软件开发之基础概览(代码片段)

ABP框架简述1)简介在.NET众多的技术框架中,ABP框架(本系列中指aspnetboilerplate项目)以其独特的魅力吸引了一群优秀开发者广泛的使用。在该框架的赋能之下,开发者可根据需求通过官方网站【https://aspnetboilerplate.com/Templates】... 查看详情

abp框架系列学习介绍篇(代码片段)

原文:【ABP框架系列学习】介绍篇(1) 0.引言该系列博文主要在【官方文档】及【tkbSimplest】ABP框架理论研究系列博文的基础上进行总结的,或许大家会质问,别人都已经翻译过了,这不是多此一举吗?原因如下:1.【tkbSimplest】... 查看详情

abp框架系列学习介绍篇(代码片段)

...p;0.引言该系列博文主要在【官方文档】及【tkbSimplest】ABP框架理论研究系列博文的基础上进行总结的,或许大家会质问,别人都已经翻译过了,这不是多此一举吗?原因如下:1.【tkbSimplest】的相关博文由于撰写得比较早的,在... 查看详情

abp框架-启动配置(代码片段)

ABP可以在启动的时候对模块进行配置。配置ABP在模块的PreInitialize方法中,可以对ABP进行配置。配置示例如下:publicclassSimpleTaskSystemModule:AbpModulepublicoverridevoidPreInitialize()//AddlanguagesforyourapplicationConfiguration.Localization. 查看详情

框架学习系列之spring框架学习总结(代码片段)

1介绍学习和使用Spring框架有了一段时间,这里将学习心得总结在博客的文章里面。期间也参考学习了其他优秀的文章,如有错误之处欢迎指正,转载请申明原文地址,希望大家支持,谢谢。2What:什么是Spr... 查看详情

modulezero模块[x-admin&abp框架开发-rbac](代码片段)

 在业务系统需求规划过程中,通常对于诸如组织机构、用户和角色等这种基础功能,通常是将这部分功能规划到通用子域中,这也说明了,对于这部分功能来讲,是系统的基石,整个业务体系是建立于这部分基石之上的,当然... 查看详情

2019年起如何开始学习abp框架系列文章-开篇有益

2019年起如何开始学习ABP框架系列文章-开篇有益[[TOC]]本系列文章推荐阅读地址为:52ABP开发文档https://www.52abp.com/Wiki/52abp/latest/Welcome-to-52abp本文的目的是为了让刚刚接触ABP框架的同学或者准备接触ABP框架的同学,能够理解和搞明... 查看详情

springboot系列之集成scala开发api接口(代码片段)

...L实现,因为不熟悉scala语法,所以想到scala里结合springboot框架,快速开发,并没有系统学习scala,有些代码可能不够精简,有问题欢迎提出后端主要技术栈:Scala2.11.12JDK1.8SpringBoot2.2.1.RELEASEMybatisPlus3.4.3.41、 查看详情

abp学习入门系列

...WEB应用程序的新起点,它旨在成为一个通用的WEB应用程序框架和项目模板。框架ABP是基于最新的ASP.NETCORE,ASP.NETMVC和WebAPI技术的应用程序框架。并使用流行的框架和库,它提供了便于使用的授权,依赖注入,验证 查看详情

abp开发框架前后端开发系列---框架的总体介绍

....NETBoilerplate的简称,ABP是一个开源且文档友好的应用程序框架。ABP不仅仅是一个框架,它还提供了一个最徍实践的基于领域驱动设计(DDD)的体系结构模型。学习使用ABP框架也有一段时间了,一直想全面了解下这个框架的整个来龙去... 查看详情

springboot系列之resttemplate使用示例(代码片段)

...道可以用RestTemplate来做http请求,RestTemplate是SpringFramework框架封装的基于模板方法设计模式的一个工具类,带有同步模板方法API的原始SpringREST客户端类,下面博主分析一些对接过程的一些经验,RestTemplate基本使用可以参考官网文... 查看详情

javascript系列文章:react总结之webpack模块组织(代码片段)

现代前端开发离不开打包工具,以Webpack为代表的打包工具已经成为日常开发必备的工具,以React技术栈为例,我们ES6形式的源代码,需要经过Webpack和Babel处理,才能生成发布版文件,在浏览器中运行。今天就结合React来梳理一下W... 查看详情

juc系列executor框架之futuretask(代码片段)

JUC系列Executor框架之FutureTaskJDK版本1.8文章目录JUC系列Executor框架之FutureTask使用示例示例一示例二源码分析类图Callable接口Future接口RunnableFuture接口内部类WaitNode成员变量任务状态状态关系图构造函数核心方法执行任务获取任务执行... 查看详情