基于Coravel定时任务之物联网设备数量统计

原文:基于Coravel定时任务之物联网设备数量统计

目录

  • 基于Coravel定时任务之物联网设备数量统计
  • 1 应用背景
  • 2 对比各家定时库
    • 2.1 TaskScheduler
    • 2.2 Fluent Scheduler
    • 2.3 Quartz.net
    • 2.4 Hangfire
    • 2.5 Coravel
  • 3 Coravel的一般使用
    • 3.1 Nuget安装
    • 3.2 依赖注入
    • 3.3 配置调度器
    • 3.4 运行程序,观察输出
    • 3.5 Cron 表达式
    • 3.6 错误支持
    • 3.7其他功能支持
    • 3.8 Coravel Pro
  • 4 Coravel的松耦合使用(含总页数统计)
    • 4.1 依赖注入自定义类
    • 4.2配置调度器
    • 4.3 编写松耦合任务的代码
  • 5. 结果验证
    • 5.1 前端显示总数数据库记录总数相等,并且数据可以实时更新。
  • 6 其他
  • 7 小结

基于Coravel定时任务之物联网设备数量统计


1 应用背景

在物联网系统中,需要计算底端所有设备的总数,显示在Dashboard中,进行一个总数的显示。包括离线,告警,停运等等数据都需要对应的总数的统计显示。


2 对比各家定时库

2.1 TaskScheduler

TaskScheduler库只支持.net,且需要结合windows任务计划程序来调用,pass。

2.2 Fluent Scheduler

Fluent Scheduler只支持.net,pass。

2.3 Quartz.net

本身框架太重,而且使用复杂,pass。

2.4 Hangfire

相对Quartz轻量很多,使用也简单,而且有网页可以访问来观察任务执行情况,但是有一个致命的缺点就是只能支持分钟及以上的定时任务处理原因在于Hangfire用的是开源的NCrontab组件,跟linux上的crontab指令相似。在本应用中,总页数在1分钟之后更新,无法忍受。pass

hangfire 7.0 以上版本已经支持 Cron 表达式和秒级时间粒度了

在此感谢网友 @ Name="Jaly"

2.5 Coravel

框架轻,使用简单,支持秒级定时任务。Coravel Pro可以连接数据库进行任务调度,Coravel Pro可以支持web可视化,将任务执行情况通过web显示出来。适合本应用背景。


3 Coravel的一般使用

3.1 Nuget安装

在调用类库层安装Coravel。

3.2 依赖注入

在startup.cs中的ConfigureServices方法中进行依赖注入

services.AddScheduler();

3.3 配置调度器

在startup.cs中的Configure方法中配置链两个定时任务

  var provider = app.ApplicationServices;
  provider.UseScheduler(scheduler =>
       {//配置任务1方法
           scheduler.Schedule(() => Console.WriteLine("Every second during the week."))
           //工作日每隔1秒输出
           .EverySecond()
           .Weekday();
       });
  provider.UseScheduler(scheduler =>
  {//配置任务2方法
      scheduler.Schedule(() => Console.WriteLine("Every 5 second during the week."))
      //工作日每隔5秒输出
      .EverySeconds(5)
      .Weekday();
  });

3.4 运行程序,观察输出

从上图结果中可以看到任务1每隔1秒打印输出;任务2每隔5秒打印输出,正确。

3.5 Cron 表达式

Coravel 支持Cron Expressions,有需要的可以根据应用场景设置Cron表达式

  • * * * * * run every minute
  • 00 13 * * * run at 1:00 pm daily
  • 00 1,2,3 * * * run at 1:00 pm, 2:00 pm and 3:00 pm daily
  • 00 1-3 * * * same as above
  • 00 /2 * * run every two hours on the hour

3.6 错误支持

Coravel 发布于2018年6月28日,才刚起步还不成熟,我在调试工作日秒级定时任务的时候会报错。

详见#91 https://github.com/jamesmh/coravel/issues/91

作者在几小时内利用工作时间,解决了问题,还发布到nuget2.5.1。很是感动。

3.7其他功能支持

此外,Coravel还支持任务队列,缓存,事件组播,邮件等。任务队列可依据读者使用情况,视情况另起一篇,缓存不建议用此组件,可用Easycache。事件组播亦不建议用此库,可参考 https://www.cnblogs.com/JerryMouseLi/p/11012839.html。 邮件亦不建议用此组件。

3.8 Coravel Pro

Coravel Pro可以连接数据库进行任务调度,Coravel Pro可以支持web可视化,将任务执行情况通过web显示出来。在这里不做详细介绍,有需要的读者可自行研究。


4 Coravel的松耦合使用(含总页数统计)

4.1 依赖注入自定义类

ConfigureServices中对松耦合的类Statistic进行依赖注入

 services.AddTransient<Statistic>();

4.2配置调度器

在startup.cs中的Configure方法中配置自定义松耦合任务

    var provider = app.ApplicationServices;
    provider.UseScheduler(scheduler =>
         {
             scheduler.Schedule<Statistic>()
             .EverySecond()
             .Weekday();
         });   

4.3 编写松耦合任务的代码

详细说明,见代码注释。

using Coravel.Invocable;//需要引用此类库来进行自定义任务
using IBMS.Infrastruct.UoW;
using System;
using System.Threading.Tasks;

 public class StatisticTask: IInvocable
    {
        private readonly IStatisticsServices _statisticsServices;
        private readonly IIPBoxServices _iPBoxServices;

        public StatisticTask(IStatisticsServices statisticsServices, IIPBoxServices iPBoxServices,)
        {
            _statisticsServices = statisticsServices;
            _iPBoxServices = iPBoxServices;
        }
        public  async Task Invoke()
        {
            var _ipboxCount = await _iPBoxServices.CountAsync();//查询设备总数

            var response    = await _statisticsServices.GetAsync(1);//统计表取出
            response.IpboxTotal = (int)_ipboxCount;//存入统计表缓存

            await _statisticsServices.UpdateAsync(response);//更新统计表

        }

    }

注意:1.编写的任务一定要在 Invoke中,这属于固定格式;public async Task Invoke() {};2. 需要引入以下库:using Coravel.Invocable;


5. 结果验证

5.1 前端显示总数数据库记录总数相等,并且数据可以实时更新。


6 其他

计算总设备总页数的计算可以在每次查询时生成,如下

var IPBoxCount =  _unitOfWork.IPBoxRepository.Count();
return Json(new { pageModel, IPBoxCount });

7 小结

这里需要VUE前端以Axios形式来定时获取统计表,后续会改成后端Coravel定时计算好之后,以SignalR形式主动推送到前端进行总览显示。

本文主要推荐Coravel这个定时工具的使用,让Coravel这个优雅的工具被更多人知晓使用。


原文地址:https://www.cnblogs.com/lonelyxmas/p/11964830.html

时间: 2024-10-07 04:51:36

基于Coravel定时任务之物联网设备数量统计的相关文章

一张图读懂基于微信硬件平台的物联网架构

本文从物联网的核心要素.物联网的关键场景.微信硬件平台的通信协议分析三个维度去分析基于微信硬件平台的物联网架构.相关的背景知识请阅读微信公众号:嵌入式企鹅圈发布的有关物联网和微信硬件专题文章. 一. 基于微信硬件平台的物联网架构图示 上图涵盖以下信息: 1.   基于微信硬件平台的物联网的架构组成,有微信公众平台/硬件平台.第三方厂商云后端.手机微信/公众号.微信硬件设备终端(Wifi和蓝牙BLE). 2.   绿色代表腾讯向开发者和公众提供的基础平台和服务,并通过红色(airsync/airk

要实现一万亿物联网设备的目标,孙正义打算这么干

去年秋季的ARM TechCon上,软银集团总裁孙正义谈到全球将会有一万亿互联设备的概念.为了实现这样一个宏大愿景,需要相应支撑的技术基础特别是定制化的SoC系统,而且技术本身必须是高效.被业界证实的支撑架构,同时还要有广泛的生态系统. 2017年6月20日,ARM对外宣布对旗下的DesignStart项目进行升级,加入了ARM Cortex-M3处理器和相关的IP子系统,帮助开发者更简单.更快速.更低风险地实现定制化SoC. ARM计算产品事业部高级产品营销经理Phil Burr表示:"孙正义

基于GeoEvent Processor的物联网应用案例赏析

1 技术路线 以下所有应用,都采用ArcGIS for Server,结合GeoEvent产品(为一款物联网实时数据集成处理产品)开发完成. 2 应用场景 1.1   物联网实时态势感知 1.1.1  噪音监控 地址:http://tm.arcgisonline.cn/2013/1028/575.html GeoEvent可以连接物联网中各种传感器设备,该场景中监控的则是噪音传感器产生的噪音值,当前显示的是噪音传感器的分布.可以看到,随着飞机的往来,噪音值在不断的发生变化. 除了实时监控之外,还

超过1亿个物联网设备容易受到黑客降级攻击

中国知名黑客安全组织东方联盟研究人员发现,即使拥有先进的加密方案,成千上万的供应商提供的超过1亿个物联网设备也容易受到降级攻击,从而可能导致攻击者未经授权访问您的设备. 问题在于Z-Wave协议的实现-基于无线,射频(RF)的通信技术,其主要被家庭自动化设备用于相互通信. Z-Wave协议的设计提供了一个简单的过程,可以在远达100米的距离内设置配对和远程控制设备,如照明控制,安全系统,恒温器,窗户,锁,游泳池和车库门开启装置(330英尺). Z-Wave的最新安全标准称为S2安全框架,采用先进

PaaS的发展将释放物联网开发效率 ——基于云架构的物联网云平台解决方案

2018年7月6日.7日,为期两天的 ArchSummit 全球架构师峰会在深圳·华侨城洲际酒店拉开帷幕.在7月6日解决方案专场活动上,BoCloud博云CTO李亚琼博士带来了<物联网多路数据处理基础上的云平台架构设计实践>,本次分享以物联网+云的技术挑战为切入点,通过实际案例讲解多路数据聚合架构的设计要点,以及云.互联网架构在物联网系统中的应用. IOT时代,云计算是物联网的核心 物联网,Internet of things(即 IoT ),是新一代信息技术的重要组成部分,也是"信

Mysql 5.7 JSON 与 物联网设备上数完美结合

MySQL 5.7.15 新特性一 (json) 更多更浓参考官网 https://dev.mysql.com/doc/refman/5.7/en/json.html 一.测试过程 1.创建库表 create database veh_history; use veh_history; CREATE TABLE `t_equipment_traffic` (   `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增主键',   `cn` char

窃听空调?火灾插座?瞎眼电灯?-物联网设备真成当今网络大问题

我们昨天转发了来自国家信息安全漏洞库(CNNVD)的安全通报,安全通报中提到了关于DYN网络攻击事件的源头,那就是物联网设备.关于物联网设备安全漏洞引发大规模网络攻击事件的通报 而关于物联网设备,我们在刚刚结束不久的极棒上也看到了关于攻破智能硬件的过程.身处geekpwn看信息安全新世界-昨日极棒总结 以物联网设备作为信息安全攻击的入口 在关于DYN的网络攻击事件中,美国两家网络供应商遭遇网络攻击,诸多知名网站一时间无法登陆,号称半个美国互联网被弄瘫.后经调查显示,该企业其他安全防护系统并没有明

基于arduino+web的物联网demo,web和微信控制

视频效果: 基于arduino+web的物联网demo,web和微信控制 基于arduino + web的物联网demo,实现了web和微信的多方式控制,折腾了好几周,终于完美解决了. 配件清单: Arduino uno3(主板) HLK-RM04(Uart串口转Wifi) 主板程序源码: String strs = ""; int led = 6; void setup() {    pinMode(led, OUTPUT);   Serial.begin(115200);//设置串

短短三分钟内就可能被入侵的七种物联网设备

ForeScout公司近日发布了物联网企业风险报告,这份报告概述了常见设备如何给企业带来固有风险的严峻现状. 该公司研究了七种常见的企业物联网设备,结果表明,它们的核心技术.基本的开发方法和快速生产使得在软件.固件和硬件里面实施适当的安全机制成了一项"经常被忽视的任务". ForeScout科技公司的总裁兼首席执行官迈克尔·德萨塞尔(Michael DeCesare)在报告中说:"物联网已得到公众的接受,但是这种设备在企业界的普及带来了大得多的攻击面――这为黑客提供了易于访问