前段需要在业务中实现某些时间段的简单定时任务,类似crontab的调度,因为业务会放在docker中,所以不想用直接用crontab,在网上搜了一下,发现一个开源的实现 Pomelo.AspNetCore.TimedJob,使用简单,但是因为是时间间隔执行,不太符合指定时间段要求,不过感谢有此开源代码,我在其基础上重新撸了个crontab的实现,并增加了一些功能,代码已放在Github上. 源码地址:https://github.com/aquilahkj/Light.Cron 使用Demo:h…
这是一文说通系列的第二篇,里面有些内容会用到第一篇中间件的部分概念.如果需要,可以参看第一篇:一文说通Dotnet Core的中间件   一.前言 后台任务在一些特殊的应用场合,有相当的需求. 比方,我们需要实现一个定时任务.或周期性的任务.或非API输出的业务响应.或不允许并发的业务处理,像提现.支付回调等,都需要用到后台任务.   通常,我们在实现后台任务时,有两种选择:WebAPI和Console. 下面,我们会用实际的代码,来理清这两种工程模式下,后台任务的开发方式.     为了防止不…
0x00 简介 DotBPE.RPC是一款基于dotnet core编写的RPC框架,而它的爸爸DotBPE,目标是实现一个开箱即用的微服务框架,但是它还差点意思,还仅仅在构思和尝试的阶段.但不管怎么说RPC是微服务的基础,先来讲讲RPC的实现吧.DotBPE.RPC底层通信默认实现基于DotNetty,这是由微软Azure团队开发的C#的Netty实现,非常酷.当然你也可以替换成其他Socket通信组件.DotBPE.RPC使用的默认协议名称叫Amp,编解码使用谷歌的Protobuf3,不过这…
Supervisor 相信对Linux系统很熟的都知道这个软件,基于Python写的一个守护进程软件.具体的介绍和使用我就不再赘述了. 使用asp.net core 部署在Linux常用的方法 我们可以用Docker.Jexus .Supervisor等.具体应该使用哪个,因不同的软件都有各自的优缺点,根据自身应用的场景选择一个即可. 在使用Supervisor  部署asp.net core的时候通常我们只要在supervisord.d 目录中添加对应的配置文件如xxx.ini或xxx.con…
C#:在Task中使用依赖注入的Service/EFContext dotnet core时代,依赖注入基本已经成为标配了,这就不多说了. 前几天在做某个功能的时候遇到在Task中使用EF DbContext的问题,学艺不精的我被困扰了不短的一段时间, 于是有了这个文章. 先说一下代码结构和场景. 首先有一个HouseDbContext,代码大概是下面这样: public class HouseDbContext : DbContext { public HouseDbContext(DbCon…
安装 Ubuntu        dotnet core 跨平台已不再是梦,它带来的意义非凡,比如api接口可以在linux上编写及部署,也可以在windows上编写好,打包发布,然后copy到linux上部署.从官网下载最新版本, 然后装到虚拟机VMware中.如果是centeros,系统开启后,默认进入命令行模式,估计一部分同学,看到类似dos界面,有点恐慌,不急,在命令行中输入startx回车,进入到图形界面.无论是哪种系统,虚拟机上装的操作系统,在开机启动后,都有可能窗口不能自适应,也就…
今天开始学习dotnet core的开发,距离Visual Stuio 2017正式版的发布,也就是VS20周岁的生日还有三天,在我的电脑上安装的是VS2017 Enterprise RC版, 在VS2017RC版本中dotnet core的版本是1.1版本,很快随着VS正式版的发布,2.0也随之上线了,dotnet core 1.1版本和之前的1.0版本呢,很大的区别就在于,project.json文件的变化,在1.1版本上,是把project.json合并到了.csproj和MSBuild文…
背景 根据我之前写的文章 将 Net 项目升级 Core项目经验:(一)迁移Net项目为Net Core\Standard项目,我们将公司内部最核心的ORM框架迁移到net core 上面,并在window和mac操作系统上运行测试通过,在后续我们开始准备迁移web 项目到net core 上,并运行在linux系统上. 我们选择的linux不是国际上的大牌linux发行版本,而是我们国内的linux发行版-中标麒麟.在迁移的过程中遇到了太多的问题,最后花费了1个星期的时间,部署成功了.我将其中…
上一篇随笔记录到RabbitMQ的安装,安装完成,我们就开始使用吧. RabbitMQ简介 AMQP,即Advanced Message Queuing Protocol,高级消息队列协议,是应用层协议的一个开放标准,为面向消息的中间件设计.消息中间件主要用于组件之间的解耦,消息的发送者无需知道消息使用者的存在,反之亦然. AMQP的主要特征是面向消息.队列.路由(包括点对点和发布/订阅).可靠性.安全.RabbitMQ是一个开源的AMQP实现,服务器端用Erlang语言编写,支持多种客户端,如…
循环执行的例行性工作调度 crontab(定时任务) 15.1 例行性工作调度 不考虑硬件与服务器的链接状态,Linux帮助提醒很多任务. Linux例行性工作是如何进行调度的? Linux调度就是通过 crontab 与 at 这两个东西   15.1.1 Linux工作调度的种类:at,cron 两种工作调度的方式: 一种是例行性的,每隔一定的周期要来办的事情,定时任务 一种是突发性的,就是每次做完以后就不在执行的,只调度一次   at:at是可以处理仅执行一次就结束调度的指令,不过要执行a…