hangfire

120行代码打造.netcore生产力工具-小而美的后台异步组件

妖精的绣舞 提交于 2020-08-16 02:45:27
相信绝大部分开发者都接触过用户注册的流程,通常情况下大概的流程如下所示: 接收用户提交注册信息 持久化注册信息(数据库+redis) 发送注册成功短信(邮件) 写操作日志(可选) 伪代码如下: public async Task<IActionResult> Reg([FromBody] User user) { _logger.LogInformation("持久化数据开始"); await Task.Delay(50); _logger.LogInformation("持久化结束"); _logger.LogInformation("发送短信开始"); await Task.Delay(100); _logger.LogInformation("发送短信结束"); _logger.LogInformation("操作日志开始"); await _logRepository.Insert(new Log { Txt = "注册日志" }); _logger.LogInformation("操作日志结束"); return Ok("注册成功"); } 在以上的代码中,我使用Task.Delay方法阻塞主线程,用以模拟实际场景中的执行耗时。以上流程应该是包含了绝大部分注册流程所需要的操作。对于任何开发者来讲,以上业务流程没任何难度,无非是顺序的执行各个流程的代码即可。

民谣与2017年终总结

天大地大妈咪最大 提交于 2020-08-12 17:37:28
东风摇众木,即有看花期。 之所以写这个标题,是因为我最近觉得,在生活中,我们一定要积极向上的面向阳光面向正能量的姿态对待明天。 作为一个伪文青,其实很早就知道《米店》,真正被感染是老狼在《歌手》上的演绎。在一群的嘶吼、高音和炫技之中,老狼像个诗人吟唱着,张玮玮的手风琴悠然依旧,伴奏手鼓声音铿然,老狼用温润而极具叙事性、像个游吟诗人一样温柔而动听的诠释这首歌,丰富而内敛,民谣韵味如烟般弥散,微微仰着头,目光穿透一切遥望远方,如饮美酒,如对良人。 《米店》是张玮玮在新疆唱歌时写给远方情人的一首歌。歌曲中弥漫了历经时间洗礼沉淀下来的那份恬淡。他用不经雕饰的唱功,缓缓的唱出诗一般的歌词,手风琴的铺陈更渲染了文艺的氛围。在快节奏的城市生活中奔走的人们,听到这首南方气息浓郁的浪漫小情歌,应该都会不自觉的放慢脚步,想一想自己的生活。 但是真正喜欢的还是张玮玮那个版本,那段手风琴太惊艳。张玮玮在知乎上是这样说起这首歌创作的背景,2007年和女朋友异地恋,在爱情的催促下写了“米店”这首歌。女友是江南人,当时想毕业后开杂货铺,米店是她给自己店起的名字,他那时正处在人生低谷,野孩子乐队刚刚解散,他在北京各大酒吧流落演唱的他陷入迷茫,宅在北京一个老式居民楼里混日子。有时看着窗外的行人那么忙碌,觉得自己像是在时间里卡住了,很想离开北京过另一种生活。后来,他邂逅了兰州人郭龙,二人组成新的乐队,继续民谣生涯

基于 abp vNext 和 .NET Core 开发博客项目

拟墨画扇 提交于 2020-08-11 02:29:59
上一篇文章( https://www.cnblogs.com/meowv/p/12956696.html )成功使用了Redis缓存数据,大大提高博客的响应性能。 接下来,将完成一个任务调度中心,关于定时任务有多种处理方式,如果你的需求比较简单,比如就是单纯的过多少时间循环执行某个操作,可以直接使用.net core中内置的实现方式,新建一个类继承 BackgroundService ,实现 ExecuteAsync() 既可。 看一个例子,我们每过一秒输出一句HelloWorld,并写入日志中。 在 .BackgroundJobs 中新建一个Jobs文件夹,添加 HelloWorldJob.cs ,并且继承自 BackgroundService 。 //HelloWorldJob.cs using log4net; using Microsoft.Extensions.Hosting; using System; using System.Threading; using System.Threading.Tasks; namespace Meowv.Blog.BackgroundJobs.Jobs { public class HelloWorldJob : BackgroundService { private readonly ILog _log; public

基于 abp vNext 和 .NET Core 开发博客项目

僤鯓⒐⒋嵵緔 提交于 2020-08-10 05:29:48
上一篇文章( https://www.cnblogs.com/meowv/p/12961014.html )集成了定时任务处理框架Hangfire,完成了一个简单的定时任务处理解决方案。 本篇紧接着来玩一下AutoMapper,AutoMapper可以很方便的搞定我们对象到对象之间的映射关系处理,同时abp也帮我们是现实了 IObjectMapper 接口,先根据官方文档: https://docs.abp.io/zh-Hans/abp/latest/Object-To-Object-Mapping ,将AutoMapper添加依赖到项目中。 在 .Application 层模块类中添加 AbpAutoMapperModule 模块依赖。 //MeowvBlogApplicationModule.cs using Meowv.Blog.Application.Caching; using Volo.Abp.AutoMapper; using Volo.Abp.Identity; using Volo.Abp.Modularity; namespace Meowv.Blog.Application { [DependsOn( typeof(AbpIdentityApplicationModule), typeof(AbpAutoMapperModule), typeof

120行代码打造.netcore生产力工具-小而美的后台异步组件

痴心易碎 提交于 2020-08-10 03:46:16
相信绝大部分开发者都接触过用户注册的流程,通常情况下大概的流程如下所示: 接收用户提交注册信息 持久化注册信息(数据库+redis) 发送注册成功短信(邮件) 写操作日志(可选) 伪代码如下: public async Task<IActionResult> Reg([FromBody] User user) { _logger.LogInformation("持久化数据开始"); await Task.Delay(50); _logger.LogInformation("持久化结束"); _logger.LogInformation("发送短信开始"); await Task.Delay(100); _logger.LogInformation("发送短信结束"); _logger.LogInformation("操作日志开始"); await _logRepository.Insert(new Log { Txt = "注册日志" }); _logger.LogInformation("操作日志结束"); return Ok("注册成功"); } 在以上的代码中,我使用Task.Delay方法阻塞主线程,用以模拟实际场景中的执行耗时。以上流程应该是包含了绝大部分注册流程所需要的操作。对于任何开发者来讲,以上业务流程没任何难度,无非是顺序的执行各个流程的代码即可。

开源分布式Job系统,调度与业务分离-如何创建一个计划HttpJob任务

帅比萌擦擦* 提交于 2020-08-09 12:06:57
项目介绍: Hangfire:是一个开源的job调度系统,支持分布式JOB!! Hangfire.HttpJob 是我针对Hangfire开发的一个组件,该组件和Hangfire本身是独立的。可以独立更新Hangfire版本不影响! 该组件已被Hangfire官方采纳,在Hangfire官网可以查到: 开源地址: https://github.com/yuzd/Hangfire.HttpJob 该项目目的是: 剥离Job调度和业务 Hangfire.HttpJob究竟是干嘛的 传统使用Hangfire都是把JOb的处理逻辑代码写在和Hangfire的同一个工程! 缺点: 这样就耦合在了一起,如果业务线增大,会导致每个业务线的Job处理逻辑都得和Hangfire耦合在一起!发布的时候所有业务线Job都得暂停调度 而使用了Hangfire.HttpJob的话 就是把Hangfire的服务拓展成可以把Job的处理逻辑代码写在别的工程里面(以webapi的形式暴露给Hangfire去调度) 优点:这样就解耦了Hangfire和业务处理逻辑,业务job开发者可以忽略Hangfire的存在!不同的业务线分开不同的JobAgent可以分别部署,发布互不影响 Hangfire.HttpJob 是对Hangfire的一个扩展插件,利用Hangfire

基于 abp vNext 和 .NET Core 开发博客项目

倖福魔咒の 提交于 2020-08-09 11:40:37
项目介绍 此版本个人博客项目底层基于 abp vNext (不完全依赖)搭建,和免费开源跨平台的 .NET Core 3.1 开发,支持各种主流数据库(SqlServer、MySQL、PostgreSql、Sqlite)一键切换,遵循 RESTful 接口规范,前端使用 Blazor 开发,可作为 .NET Core 入门项目进行学习。 项目开源地址: https://github.com/Meowv/Blog If you liked Blog project or if it helped you, please give a star ⭐️ for this repository. 👍👍👍 系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 基于 abp vNext 和 .NET Core 开发博客项目 - 完善与美化,Swagger登场 基于 abp vNext 和 .NET Core 开发博客项目 - 数据访问和代码优先 基于 abp vNext 和 .NET Core 开发博客项目 - 自定义仓储之增删改查 基于 abp vNext 和 .NET Core 开发博客项目 - 统一规范API,包装返回模型 基于 abp

120行代码打造.netcore生产力工具-小而美的后台异步组件

不想你离开。 提交于 2020-08-08 06:59:15
相信绝大部分开发者都接触过用户注册的流程,通常情况下大概的流程如下所示: 接收用户提交注册信息 持久化注册信息(数据库+redis) 发送注册成功短信(邮件) 写操作日志(可选) 伪代码如下: public async Task<IActionResult> Reg([FromBody] User user) { _logger.LogInformation("持久化数据开始"); await Task.Delay(50); _logger.LogInformation("持久化结束"); _logger.LogInformation("发送短信开始"); await Task.Delay(100); _logger.LogInformation("发送短信结束"); _logger.LogInformation("操作日志开始"); await _logRepository.Insert(new Log { Txt = "注册日志" }); _logger.LogInformation("操作日志结束"); return Ok("注册成功"); } 在以上的代码中,我使用Task.Delay方法阻塞主线程,用以模拟实际场景中的执行耗时。以上流程应该是包含了绝大部分注册流程所需要的操作。对于任何开发者来讲,以上业务流程没任何难度,无非是顺序的执行各个流程的代码即可。

ABP框架——集成Mysql

本秂侑毒 提交于 2020-08-07 13:14:30
最近公司很多业务都要求上云,云上的数据库购买了mysql(估计是应为便宜吧),所以我用abp框架开发的应用都要逐步切换到mysql。经过一阵摸索踩坑,总算是切换成功了,所以先记录下方便后续切换使用,也顺便分享给有需要的朋友。 一、集成MySQL 其实集成mysql主要是参照官方文档进行就可以了(官方文档:https://aspnetboilerplate.com/Pages/Documents/EF-Core-MySql-Integration),这里也是简单描述下关键步骤: (1)安装 Pomelo.EntityFrameworkCore.MySql 安装 Pomelo.EntityFrameworkCore.MySql NuGet包到*.EntityFrameworkCore 项目上 (2)配置DBContext 替换 YourProjectNameDbContextConfigurer.cs文件,将“UseSqlServer”替换为“UseMySql”,如下 1 public static class WeChatDbContextConfigurer 2 { 3 public static void Configure(DbContextOptionsBuilder<WeChatDbContext> builder, string connectionString) 4 {

基于 abp vNext 和 .NET Core 开发博客项目

末鹿安然 提交于 2020-08-05 11:39:17
系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 基于 abp vNext 和 .NET Core 开发博客项目 - 完善与美化,Swagger登场 基于 abp vNext 和 .NET Core 开发博客项目 - 数据访问和代码优先 基于 abp vNext 和 .NET Core 开发博客项目 - 自定义仓储之增删改查 基于 abp vNext 和 .NET Core 开发博客项目 - 统一规范API,包装返回模型 基于 abp vNext 和 .NET Core 开发博客项目 - 再说Swagger,分组、描述、小绿锁 基于 abp vNext 和 .NET Core 开发博客项目 - 接入GitHub,用JWT保护你的API 基于 abp vNext 和 .NET Core 开发博客项目 - 异常处理和日志记录 基于 abp vNext 和 .NET Core 开发博客项目 - 使用Redis缓存数据 基于 abp vNext 和 .NET Core 开发博客项目 - 集成Hangfire实现定时任务处理 基于 abp vNext 和 .NET Core 开发博客项目 - 用AutoMapper搞定对象映射 基于 abp