C#/.NET/.NET Core定时任务调度组件有哪些?

摘要 C#/.NET/.NET Core的定时任务调度组件你用过那些呢,是Timer,FluentScheduler,TaskScheduler,Gofer.NET,Coravel,Quartz.NET还是Hangfire,又或者是其他的定时任务调度框架/组件呢?你常用的实现定时任务调度的方法又是怎样的呢? 前言 定时任务,任务调度这些词在程序开发中会被经常提及。定时任务是什么?在计算机的世界里,定时任务就是在指定的时间或者时间范围内,按照一定的频率完成指定的指令。它是一个具有周期性,规律性的活动。 定时任务可以是:早上按时叫你起床的闹钟,记录并提醒你日程的日历或者生日问候,某网站定时给你的周刊、月刊消息推送,某系统周期性做的每日、月度、年度数据汇总,等等。 由此可见,定时任务与我们的生活、工作紧密联系在一起。特别地,对于我们开发人员来说,但凡要实现周期性地操作,就需要使用定时任务来处理。 那么,对于C#/.NET开发人员来说,如何实现定时任务,实现定时任务又有哪些方法或者有哪些组件呢?这些问题对于从事C#/.NET的开发者,特别是刚入行不久或者经验欠缺者来说将会是比较困扰的问题。 今天Rector就收集整理一些C#/.NET/.NET Core应用程序编程开发中常用的实现定时任务调度的方法或者定时任务调度组件。 Timer类 Timer是.NET内置的定时器类,它位于命名空间System.Timers下。Timer是一个基于服务器端的计时器,提供了Interval属性来设置重复触发定时任务的间隔(单位为毫秒),触发事件则由Elapsed事件来指定。另外,还可以通过AutoReset属性来设置Timer的Elapsed事件只触发一次或者重复触发。 官方地址: https://docs.microsoft.com/en-us/dotnet/api/system.timers.timer?view=netframework-4.8 特性 轻量,简单易用 .NET框架内置,无须引用第三方库 不支持Cron表达式 FluentScheduler FluentScheduler是由一位巴西的.NET开发者Talles L开发并维护的.NET平台下的一款自动定时任务调度器组件,它提供了比较丰富的定时任务调度接口,开发者可以快速方便地通过接口设置调度时间,比如:间隔1秒,2秒…n秒,只执行一次,哪月的哪一天等等。具体请参考我之前写过的两篇关于FluentScheduler的文章: 《推荐一个简单、轻量、功能非常强大的C#/ASP.NET定时任务执行管理器组件—FluentScheduler》 《简单、轻量、功能非常强大的C#/ASP.NET定时调度任务执行管理组件–FluentScheduler之实例篇》 官方地址: https://github.com/fluentscheduler/FluentScheduler 特性 提供丰富的任务调度接口,配置方便 TaskScheduler TaskScheduler是一个为Windows任务调度程序提供.NET的封装组件,可以代替Windows操作系统自带的定时任务使用,提供了代码和编辑器两种方式创建定时任务。它聚合了多个版本,并提供编辑调度编辑器以快速创建定时任务。 官方地址: https://github.com/dahall/TaskScheduler 特性 支持.NET的多个版本(.NET 2.0, 3.5, 4.0, 4.52 and .NET Standard 2.0.) 支持包括脚本语言在内的所有.NET语言,比如(PowerShell) 支持所有的V2本地化属性,甚至在V1的系统中 支持序列化成XML 支持目标版本的任务验证 支持Cron表达式触发器 提供可视化的定时任务调度编辑器 提供动作编辑器,触发器编辑器,事件查看器,任务执行历史查看器等对话框 http://Gofer.NET http://Gofer.NET是支持分布式的任务/作业调度组件,可以运行在.NET Core应用程序中。 官方地址: https://github.com/brthor/Gofer.NET 特性 使用通用表达式语法将作业添加到队列并执行 可简单地通过添加新节点来扩展任务工作池 在Redis的支持下,所有的任务都被持久化 Coravel Coravel是一个零配置的基于.NET标准库的微组件,它包含了定时任务调度,缓存,队列,事件广播等等功能。 官方地址: https://docs.coravel.net/Scheduler/ 简单,优雅,流畅的代码书写方式创建定时任务 基于.NET标准库,跨平台 丰富的调度接口 支持Cron表达式 支持全局错误处理 http://Quartz.NET http://Quartz.NET是一个开源的定时作业调度项目,旨在创建一个免费商业使用的作业调度器,同时具有“企业级”的特性。http://Quartz.NET目前的版本是支持跨平台的,即支持.NET和.NET Core的应用程序。 官方地址: http://www.quartz-scheduler.net/ 特性 API 操作简单,只要几行简单的代码你就可以在应用程序里面实现自己的作业调度,并实时监视作业执行情况 触发器功能强大,比 Windows 的任务计划提供更细的触发粒度 良好的可扩展性,它基于接口编程,你可以实现自己的 Schedule 调度器,Job 作业,以及 Trigger 触发器等 持久化,作业可以保存在内存中,也可以持久化到数据库,支持多种数据库类型:SqlServer、Oracle、MySql等 分布式和集群,这是一个高级应用,可以在多台计算机之间创建负载平衡、容错处理 支持Cron表达式 支持以配置文件的方式定制作业调度 具体使用可参考《基于ASP.NET MVC(C#)和Quartz.Net组件实现的定时执行任务调度》 Hangfire Hangfire是一个支持.NET和.NET Core应用程序的跨平台的后台作业处理框架,使用Hangfire时不再需要Windows服务或者单独的进程。Hangfire可以在http://ASP.NET/ASP.NET Core等应用程序中以简单的方式实现触发,延迟以及定时执行等任务。同时还支持CPU和I/O密集型、长时间运行和短时间运行的作业而不需要设置Windows服务或者其他的任务调度。Hangfire支持多种数据存储方式,如:Redis, SQL Server, […]

龙生   16 May 2024
View Details

PostgreSQL LIKE 子句

在 PostgreSQL 数据库中,我们如果要获取包含某些字符的数据,可以使用 LIKE 子句。 在 LIKE 子句中,通常与通配符结合使用,通配符表示任意字符,在 PostgreSQL 中,主要有以下两种通配符: 百分号 % 下划线 _ 如果没有使用以上两种通配符,LIKE 子句和等号 = 得到的结果是一样的。 语法 以下是使用 LIKE 子句搭配百分号 % 和下划线 _ 从数据库中获取数据的通用语法:

  你可以在 WHERE 子句中指定任何条件。 你可以使用 AND 或者 OR 指定一个或多个条件。 XXXX 可以是任何数字或者字符。 实例 下面是 LIKE 语句中演示了 % 和 _ 的一些差别: 实例 描述 WHERE SALARY::text LIKE '200%' 找出 SALARY 字段中以 200 开头的数据。 WHERE SALARY::text LIKE '%200%' 找出 SALARY 字段中含有 200 字符的数据。 WHERE SALARY::text LIKE '_00%' 找出 SALARY 字段中在第二和第三个位置上有 00 的数据。 WHERE SALARY::text LIKE '2_%_%' 找出 SALARY 字段中以 2 开头的字符长度大于 3 的数据。 WHERE SALARY::text LIKE '%2' 找出 SALARY 字段中以 2 结尾的数据 WHERE SALARY::text LIKE '_2%3' 找出 SALARY 字段中 2 […]

龙生   16 May 2024
View Details

Docker下部署PostgreSQL

docker run -d --name=postgres -p 5432:5432 -v postgres-volume:/var/lib/postgresql/data -e POSTGRES_PASSWORD=Aa615243 postgres docker run -d --name=pgadmin4 -e SERVER_MODE=true -e PGADMIN_DEFAULT_EMAIL=your_email -e PGADMIN_DEFAULT_PASSWORD=Aa615243 -d -p 15432:80 -v postgres-volume:/var/lib/postgresql/data dpage/pgadmin4:latest

龙生   15 May 2024
View Details

借助 docker 安装 pgAdmin

  安装 docker 和 nginx 这个看文档即可。 引入现成的 pgadmin 的 docker镜像

  运行该镜像: docker run -e SERVER_MODE=true -e PGADMIN_SETUP_EMAIL=berrydigital@gmail.com \ -e PGADMIN_SETUP_PASSWORD=password -d -p 5050:5050 \ -v /home/robert/data:/data chorss/docker-pgadmin4 -e 表示传入容器的环境变量,PGADMIN_SETUP_EMAIL 和 PGADMIN_SETUP_PASSWORD 分别为 pgAdmin 登陆的账号密码。 -V /home/robert/data:/data 表示宿主机目录和容器目录对应的映射关系,宿主机目录可以自己设置。运行时可能会因为目录权限报错,需要修改目录权限(本地开发直接改成 777 )。 nginx 配置

  主要是将请求反向代理到 docker 容器内。 postgresql 配置 默认是 5432 端口,只有本机可以访问,需要修改访问权限:把 postgresql.conf 中的 listen_addresses 的值 设置为 *,表示所有 ip 会被响应。 还需要修改 pg_hba.conf,用于设置连接的许可,添加: host all all 0.0.0.0/0 md5 表示所有用户及 ip 都可以建立连接,密码加密方式为 md5. 重启 postgresql:sudo service postgresql restart 此时可以通过 YOUR_SERVER_NAME 登陆 pgAdmin 了。 虚拟机ip 进入 pgAdmin 后需要设置 postgresql […]

龙生   15 May 2024
View Details

在 Docker 中运行 PostgreSQL

本教程将指导您完成如何在 Docker 容器内运行具有持久存储的 PostgreSQL 并连接到它的过程。 PostgreSQL是一个开源的对象关系数据库管理系统。它已经存在了 30 多年,并标榜自己是“世界上最先进的开源关系数据库”。 在轻松打包、部署和运行分布式应用程序方面,Docker已成为 IT 行业的标准。Docker 容器让您可以快速启动新应用程序,而不会因依赖项而使您的系统变得混乱。 您可以使用 Docker 在容器中运行 PostgreSQL 数据库,就像它是远程服务器一样。Docker 容器基于开放标准,使容器能够在所有主要Linux 发行版、MacOS 和 Microsoft Windows 上运行。   在 Docker 中运行 PostgreSQL 我们在这里要做的是下载PostgreSQL镜像,检查镜像是否准备好,使用特定参数运行镜像,最后连接到正在运行的PostgreSQL实例。 1. 拉取一个 PostgreSQL 服务器 Docker 镜像 首先,我们需要从Docker Hub获取现有的 PostgreSQL 官方镜像。镜像适用于 PostgreSQL 版本 9、10、11、12 和 13。如果您需要特定版本,latest 请将标签更改 为所需版本。 现在让我们拉取图像:

  使用上述命令将从 Docker Hub 存储库中提取最新可用版本的 PostgreSQL。 2. 从 PostgreSQL 服务器 Docker 镜像运行容器 在部署之前,您需要设置一个 Docker 卷或绑定安装来持久化您的数据库。否则,当容器重新启动时,您的数据将丢失。安装应该 /var/lib/postgresql/data 在容器内的目录中。 出于本指南的目的,我们将创建一个 docker 卷并将其附加到您的 PostgreSQL 容器。 以下命令将在您的本地计算机中创建卷,您可以稍后与 PostgreSQL 容器连接:

  现在你的机器上有 PostgreSQL 镜像和一个用于保存数据的卷,你可以部署一个容器:

  该 docker run 命令将在 Docker 容器中创建一个正在运行的 PostgreSQL 数据库。 让我们分解一下这个语法。以下是该命令中每个参数的含义: -d 将以分离模式运行此容器,以便它在后台运行。 --name 将名称“postgres13”分配给您的容器实例。 -p会将 PostgreSQL 容器端口 […]

龙生   15 May 2024
View Details

centos7系统v2rayN搭建

新的一键V2Ray脚本,经过笔者的测试,安装简单方便,自动关闭防火墙,自动安装BBR加速,因此推荐大家使用! 安装命令: 输入以下命令一键安装、 bash <(curl -s -L https://git.io/v2ray-setup.sh) 老鸟可以用这个自定义安装: bash <(curl -s -L https://git.io/v2rayinstall.sh) 显示一下信息代表安装成功(可直接用以下配置进行连接)(以下配置在链接时使用): centos7搭建V2Ray教程 – globalservers from:https://zhuanlan.zhihu.com/p/510941661

龙生   15 May 2024
View Details

PostgreSQL 数据类型

PostgreSQL提 供了丰富的数据类型。用户可以使用 CREATE TYPE 命令在数据库中创建新的数据类型。PostgreSQL 的数据类型有很多种,下面我们具体来说明。

龙生   15 May 2024
View Details

git 教程 --git cherry-pick 命令

在git管理的工程中,不可避免的存在多个分支,比如流行的gitflow就划分为很多的分支,那么就会有代码的合并。一般代码的合并分为两种:一种是整个分支的合并,一个是挑选部分的commit来合并。本文介绍的就是挑选部分的commit来提交的指令git cherry-pick。

龙生   14 May 2024
View Details

@Scheduled 定时任务

每5分钟执行一次

  每一小时执行一次

  每一天执行一次

  from:https://blog.csdn.net/imsjw/article/details/88381363

龙生   13 May 2024
View Details
1 2 434