黃昌可
摘要:文章探討了Quartz.NET任務(wù)調(diào)度系統(tǒng)在醫(yī)院信息化中的應(yīng)用。通過對任務(wù)調(diào)度系統(tǒng)的介紹和Quartz.NET的特點(diǎn)分析,文章提出了基于Quartz.NET的任務(wù)調(diào)度系統(tǒng)在醫(yī)院信息化中的應(yīng)用方案,主要包括任務(wù)調(diào)度系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)、任務(wù)執(zhí)行監(jiān)控和報(bào)警機(jī)制的建立等方面。該方案在實(shí)際應(yīng)用中,有效提高了醫(yī)院信息化系統(tǒng)的運(yùn)行效率和管理水平,減輕人工負(fù)擔(dān),提高醫(yī)院服務(wù)水平,具有較高的實(shí)用價(jià)值和推廣意義。
關(guān)鍵詞:Quartz.NET;任務(wù)調(diào)度;醫(yī)院信息化
中圖分類號:TP311? ? ? 文獻(xiàn)標(biāo)識碼:A
文章編號:1009-3044(2023)13-0063-04
開放科學(xué)(資源服務(wù))標(biāo)識碼(OSID)
0 引言
隨著醫(yī)療技術(shù)的不斷更新和人口老齡化的加劇,醫(yī)院信息化已成為醫(yī)院管理和服務(wù)水平提升的必要手段。醫(yī)院信息化需要高效穩(wěn)定的系統(tǒng)支持,這就需要任務(wù)調(diào)度系統(tǒng)來定時(shí)執(zhí)行重復(fù)性任務(wù)、監(jiān)控任務(wù)執(zhí)行情況、自動報(bào)警等。
任務(wù)調(diào)度系統(tǒng)是實(shí)現(xiàn)醫(yī)院信息化系統(tǒng)高效穩(wěn)定運(yùn)行的關(guān)鍵技術(shù)之一。它可以通過減輕人工負(fù)擔(dān)和提高工作效率,幫助醫(yī)院信息化系統(tǒng)實(shí)現(xiàn)自動化運(yùn)維和提高管理水平。
1 Quartz.NET任務(wù)調(diào)度系統(tǒng)介紹
Quartz.NET任務(wù)調(diào)度系統(tǒng)是一款開源的任務(wù)調(diào)度框架,具有高可靠性、高精度、高擴(kuò)展性等特點(diǎn)。它支持復(fù)雜的任務(wù)調(diào)度邏輯和大規(guī)模分布式任務(wù)調(diào)度,基于C#編寫,具有良好的跨平臺性和可擴(kuò)展性。Quartz.NET采用簡單易用、高度靈活的API,可以輕松創(chuàng)建和管理大量的定時(shí)任務(wù)。Quartz.NET可以靈活地配置任務(wù)的執(zhí)行周期,支持多種任務(wù)觸發(fā)器,同時(shí)還提供了任務(wù)執(zhí)行狀態(tài)監(jiān)控、異常報(bào)警、任務(wù)重試等功能。在醫(yī)院信息化系統(tǒng)中,Quartz.NET的應(yīng)用方案可以包括任務(wù)調(diào)度器、任務(wù)觸發(fā)器和任務(wù)執(zhí)行器等組件的設(shè)計(jì)和實(shí)現(xiàn),以及任務(wù)執(zhí)行監(jiān)控和報(bào)警機(jī)制的建立。
通過基于Quartz.NET的任務(wù)調(diào)度系統(tǒng),醫(yī)院信息化系統(tǒng)可以實(shí)現(xiàn)自動化運(yùn)維,自動化執(zhí)行重復(fù)性任務(wù),提高工作效率,減輕人工負(fù)擔(dān)。例如,醫(yī)院可以通過任務(wù)調(diào)度系統(tǒng)來實(shí)現(xiàn)定時(shí)備份數(shù)據(jù)庫、定時(shí)清理日志等任務(wù)的自動化執(zhí)行。此外,任務(wù)調(diào)度系統(tǒng)還可以對醫(yī)院信息化系統(tǒng)的運(yùn)行情況進(jìn)行實(shí)時(shí)監(jiān)控和管理,及時(shí)發(fā)現(xiàn)問題并進(jìn)行處理,提高系統(tǒng)管理水平。在未來的發(fā)展中,可以進(jìn)一步優(yōu)化任務(wù)調(diào)度系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn),加強(qiáng)任務(wù)執(zhí)行監(jiān)控和報(bào)警機(jī)制的建立,提高醫(yī)院信息化系統(tǒng)的智能化程度。例如,可以通過引入機(jī)器學(xué)習(xí)和人工智能等技術(shù),來自動優(yōu)化任務(wù)調(diào)度策略,提高任務(wù)執(zhí)行效率和質(zhì)量。
2 基于Quartz.NET的任務(wù)調(diào)度系統(tǒng)在醫(yī)院信息化中的應(yīng)用方案
2.1 Quartz.NET框架基礎(chǔ)概念
Quartz框架是一個(gè)開源的作業(yè)調(diào)度框架,具有強(qiáng)大靈活的調(diào)度規(guī)則配置、作業(yè)狀態(tài)監(jiān)控和故障恢復(fù)等功能。使用Quartz框架可以為企業(yè)信息管理系統(tǒng)的定時(shí)調(diào)度任務(wù)進(jìn)行簡單快捷靈活的配置調(diào)度機(jī)制,實(shí)現(xiàn)企業(yè)常規(guī)和非常規(guī)的復(fù)雜調(diào)度功能。開發(fā)人員可以根據(jù)業(yè)務(wù)的具體需求設(shè)置調(diào)度的時(shí)間點(diǎn)或時(shí)間間隔來進(jìn)行具體的任務(wù)調(diào)度。Quartz框架能夠通過與Spring很好地集成來提供強(qiáng)大的、可靈活配置的調(diào)度功能并應(yīng)用到J2EE Web應(yīng)用的開發(fā)中,它在企業(yè)應(yīng)用調(diào)度開發(fā)中占據(jù)極其重要的地位,是目前比較受歡迎的且很易用的任務(wù)調(diào)度框架。
Quartz任務(wù)調(diào)度框架最重要的核心三件套為:任務(wù)調(diào)度器(Scheduler) 、觸發(fā)器(Trigger) 和任務(wù)(Job) [1]。其中調(diào)度任務(wù)的核心管理者是任務(wù)調(diào)度器(Scheduler) ,調(diào)度任務(wù)的操作者是觸發(fā)器(Trigger) ,調(diào)度任務(wù)(Job) 是系統(tǒng)中相應(yīng)的功能模塊。開發(fā)者可以設(shè)定作業(yè)觸發(fā)器監(jiān)聽規(guī)則,針對特定的業(yè)務(wù)計(jì)劃需求來進(jìn)行作業(yè)計(jì)劃,它們的關(guān)系如圖1所示。
調(diào)度器(Scheduler) 是Quartz框架最主要的核心模塊,它對Quartz的應(yīng)用運(yùn)行的環(huán)境起到管理的作用,Quartz框架主要的API也是調(diào)度器(Scheduler) 。對于利用Quartz開發(fā)的工程師來說,Scheduler是Quartz調(diào)度框架與工程師人員發(fā)生構(gòu)建的中間橋梁,大多數(shù)的交互行為都是以Scheduler為基礎(chǔ)進(jìn)行的。Scheduler調(diào)度器通過協(xié)調(diào)框架內(nèi)的JobDetail任務(wù)模塊和Trigger觸發(fā)器模塊來執(zhí)行具體的任務(wù)調(diào)度事件,而不是獨(dú)立地完成一個(gè)調(diào)度任務(wù)。JobDetial和Trigger只需要注冊登記到Scheduler,調(diào)度作業(yè)就會伴隨著應(yīng)用的啟動自動執(zhí)行。一個(gè)完整的Quartz調(diào)度任務(wù),必須包括三個(gè)核心組件要素:觸發(fā)器(Trigger) 、調(diào)度器(Scheduler) 和任務(wù)(Job) 。觸發(fā)器就是一個(gè)定時(shí)任務(wù)的驅(qū)動器,負(fù)責(zé)對配置的作業(yè)進(jìn)行定時(shí)執(zhí)行。一個(gè)調(diào)度任務(wù)可以配置多個(gè)觸發(fā)器,但一個(gè)觸發(fā)器只能驅(qū)動一個(gè)作業(yè)任務(wù)。Quartz作為一款優(yōu)秀的開源調(diào)度框架,它能夠與Spring集成整合實(shí)現(xiàn)強(qiáng)大的調(diào)度作業(yè),而且對運(yùn)行環(huán)境也沒有特別的依賴,此外Quartz還提供了強(qiáng)大的集群及分布式能力,其強(qiáng)大的調(diào)度機(jī)制支持更多個(gè)性化的調(diào)度方法[2]。
Quartz.NET是一個(gè)全功能開放的開源作業(yè)調(diào)度系統(tǒng)。完全由C#編寫的.NET類庫,是一個(gè)非常流行的開源Java工作調(diào)度框架QuartzAPI的移植,可用于winform和asp.net應(yīng)用中[3]。它擁有強(qiáng)大的靈活性,但同時(shí)也保持了簡潔性。能夠用它來創(chuàng)建一個(gè)簡單的或復(fù)雜的調(diào)度作業(yè)。它具有大量特性,比如:數(shù)據(jù)庫支持、集群、插件、支持Cron表達(dá)式等。
2.2 模塊接口介紹
在Quartz.NET中,有以下幾個(gè)重要的類:
1) Schdeuler類:這個(gè)類的方法是將調(diào)度任務(wù)數(shù)據(jù)寫入系統(tǒng)內(nèi)存,使Quartz.NET在設(shè)定的時(shí)間觸發(fā)作業(yè)執(zhí)行。
2) Job接口:用戶自定義的作業(yè)在該模塊實(shí)現(xiàn)。用戶只需將自定義的需求在Job接口的execute方法中實(shí)現(xiàn),任務(wù)被觸發(fā)時(shí),execute方法便會被調(diào)用執(zhí)行,即用戶自定義的邏輯被執(zhí)行。
3) JobDetail類:該類包含了任務(wù)的各種屬性,如任務(wù)名稱、任務(wù)分組名、任務(wù)類名等。而任務(wù)類名則是實(shí)現(xiàn)Job接口的任務(wù)類,它包含了具體執(zhí)行任務(wù)的邏輯。在JobDetail類中,還可以添加一些JobDataMap數(shù)據(jù),用于傳遞任務(wù)執(zhí)行所需的參數(shù)。
4) Trigger類:該類是Quartz.NET的核心類,用于觸發(fā)作業(yè)。它支持兩種觸發(fā)類型的設(shè)置:Cron表達(dá)式型和Interval型。通過設(shè)置開始時(shí)間、結(jié)束時(shí)間、執(zhí)行次數(shù)等,可以實(shí)現(xiàn)對任務(wù)的詳細(xì)控制。Cron表達(dá)式型可以設(shè)置更加豐富和復(fù)雜的時(shí)間觸發(fā)規(guī)則,而Interval型則可以設(shè)置固定的時(shí)間間隔來觸發(fā)任務(wù)。通過Trigger類,可以更加靈活地配置Quartz框架中的任務(wù),實(shí)現(xiàn)更加精細(xì)化的任務(wù)調(diào)度。
①Cron表達(dá)式方式
Cron表達(dá)式是Quartz.NET特有的字符串,當(dāng)Quartz.NET讀取到該表達(dá)式時(shí),會自動解析出該表達(dá)式的含義,從而實(shí)現(xiàn)用戶期望的調(diào)度計(jì)劃,表達(dá)式分為七段,分別表示秒、分、時(shí)、日、月、周、年。示例見表1。
②Inteval方式
Inteval方式與Cron表達(dá)式不同,它以精確的間隔來觸發(fā)任務(wù),即每次觸發(fā)的間隔是恒定不變的。Quartz.NET中間隔的單位一般是秒、分、時(shí),最大不會大于小時(shí)[4]。
在Quartz.NET的架構(gòu)中,自定義任務(wù)的實(shí)現(xiàn)需要實(shí)現(xiàn)Job接口,并將業(yè)務(wù)邏輯代碼寫入execute方法中。任務(wù)的具體參數(shù)由JobDetail類定義,包括任務(wù)名稱、任務(wù)分組名、任務(wù)類名等。任務(wù)的調(diào)度計(jì)劃由Trigger類定義,如指定任務(wù)的觸發(fā)時(shí)間點(diǎn)或時(shí)間間隔等。注冊任務(wù)到系統(tǒng)進(jìn)程需要調(diào)用Scheduler類的Schedule.scheduleJob(JobDetail, Trigger)方法。當(dāng)調(diào)度任務(wù)被觸發(fā)時(shí),任務(wù)引擎通過Scheduler類解析出JobDetail類中包含的作業(yè)參數(shù),并通過JobDataMap數(shù)據(jù)傳遞任務(wù)所需的參數(shù)給新的任務(wù)實(shí)例,用于執(zhí)行任務(wù)的execute方法。
Quartz框架提供了JobDetail類和Trigger類來幫助實(shí)現(xiàn)任務(wù)的配置和調(diào)度計(jì)劃,從而實(shí)現(xiàn)任務(wù)的自動化調(diào)度和執(zhí)行。這些特性可以提高系統(tǒng)的可靠性和效率。
2.3 基礎(chǔ)使用介紹
Quartz.NET框架的核心模塊是調(diào)度器scheduler、job類的實(shí)例JobDetail以及trigger類的實(shí)例SimpleTrigger和CronTrigger。在使用Quartz.NET框架時(shí),先用schedulerFactory實(shí)例化一個(gè)調(diào)度器scheduler。在程序代碼中可以直接實(shí)例化這個(gè)工廠類并且使用工廠的實(shí)例,其示例代碼如下:
ISchedulerFactory schedulerFactory=new ISchedulerFactory();
IScheduler scheduler = schedulerFactory.GetScheduler();
scheduler.Start();
JobDetail對象用于綁定Job實(shí)例。它包含了Job的各種屬性,其示例代碼如下:
public class HttpResultfulJob : IJob
{
public Task Execute(IJobExecutionContext context)
{
#TaskOptions taskOptions = context.GetTaskOptions();獲取job的參數(shù)
Console.Out.WriteLineAsync("Test HttpResultfulJob Job!");
}}
然后可以在Main方法中綁定該Job:
IJobDetail job = JobBuilder.Create
.WithIdentity(taskOptions.TaskName, taskOptions.GroupName).Build();
Trigger對象被用來觸發(fā)自定義的任務(wù)計(jì)劃。希望將任務(wù)加入進(jìn)程,要實(shí)例化一個(gè)Trigger并且“調(diào)整”它的屬性以滿足想要的進(jìn)度安排。Quartz.NET框架里面有許多不同類型的Trigger,但最常用的Trigge類是SimpleTrigger和CronTrigger SimpleTrigger。立即運(yùn)行,按設(shè)定的Cron表達(dá)式執(zhí)行代碼如下:
ITITrigger trigger = TriggerBuilder.Create()
.WithIdentity(taskOptions.TaskName, taskOptions.GroupName)
.StartNow()
.WithDescription(taskOptions.Describe)
.WithCronSchedule(taskOptions.Interval)
.Build();
最后將任務(wù)注冊到scheduler中即可:
scheduler.ScheduleJob(job, trigger);
2.4 任務(wù)調(diào)度實(shí)現(xiàn)
首先,需要將Quartz.net添加到項(xiàng)目中??梢酝ㄟ^NuGet包管理器或通過手動下載并添加引用的方式添加Quartz.net,接著創(chuàng)建一個(gè)Job類,在這個(gè)類中實(shí)現(xiàn)實(shí)際的任務(wù)。Job類必須實(shí)現(xiàn)IJob接口,并實(shí)現(xiàn)Execute方法。Execute方法是任務(wù)的實(shí)際代碼。需要注意的是,Job類必須是一個(gè)無狀態(tài)的類,因?yàn)镼uartz.net會在需要執(zhí)行Job時(shí)創(chuàng)建Job的實(shí)例,因此如果Job類包含任何狀態(tài),可能會導(dǎo)致意外的行為。完成Job部分后,再創(chuàng)建Trigger,指定任務(wù)的執(zhí)行時(shí)間。Trigger必須指定一個(gè)唯一的名稱和分組,以便在Scheduler中進(jìn)行管理。然后就可以創(chuàng)建Scheduler,也就是任務(wù)調(diào)度的核心組件,將Job和Trigger添加到Scheduler中。Scheduler將根據(jù)Trigger指定的時(shí)間表執(zhí)行Job??梢允褂肧tdSchedulerFactory來創(chuàng)建Scheduler實(shí)例。
最后可以通過調(diào)用Scheduler的Start方法來啟動Scheduler。此時(shí),Scheduler就會開始執(zhí)行Job,并按照Trigger指定的時(shí)間表觸發(fā)任務(wù)了。
2.5 可視化
Quartz.NET提供了一些調(diào)度器監(jiān)聽器和日志記錄器,方便對任務(wù)的執(zhí)行情況進(jìn)行監(jiān)控和調(diào)試。
為了方便任務(wù)的管理,可以使用可視化設(shè)計(jì)對所有任務(wù)進(jìn)行界面化的管理。將每個(gè)定時(shí)任務(wù)的各項(xiàng)屬性,如作業(yè)的名稱、作業(yè)所屬分組、Cron表達(dá)式、作業(yè)描述、執(zhí)行情況、執(zhí)行api地址等以一條完整記錄形式存入數(shù)據(jù)庫中。這樣,一個(gè)個(gè)任務(wù)就轉(zhuǎn)化成關(guān)系表中的一條條記錄,定時(shí)任務(wù)的可視化管理也就轉(zhuǎn)變?yōu)槌R姷年P(guān)系表的可視化管理[5]。
使用MVC架構(gòu),將頁面操作,與調(diào)度任務(wù)的控制,包裝到控制器(controller) 中,在視圖(View) 中調(diào)用相關(guān)方法,展示及持久化調(diào)度任務(wù)數(shù)據(jù),部分展示如圖2、圖3。
2.6 解決應(yīng)用程序池回收
當(dāng)應(yīng)用程序池長時(shí)間運(yùn)行,IIS 會將其自動回收,以保證服務(wù)器的穩(wěn)定性和性能。但是這種自動回收有時(shí)會影響應(yīng)用程序的正常運(yùn)行,因此需要進(jìn)行相應(yīng)的處理[6]。這里采用注冊系統(tǒng)服務(wù),定時(shí)調(diào)用處理。
在Quart.NET的Web項(xiàng)目中創(chuàng)建一個(gè)HealthController類,并增加一個(gè)KeepAlive方法,方法的實(shí)現(xiàn),直接返回當(dāng)前時(shí)間即可,然后在應(yīng)用程序的項(xiàng)目中調(diào)用這個(gè)地址,并將定時(shí)調(diào)用的程序注冊為系統(tǒng)服務(wù)。
應(yīng)用注冊為系統(tǒng)服務(wù).bat:
%SystemRoot%\Microsoft.NET\Framework\v4.0.30319\installutil.exe
D:\...\bin\Debug\Quartz.NET.WindowsService.exe
Net Start Quartz.Net? sc config Quartz.Net start= auto
3 實(shí)際應(yīng)用效果分析
除了提高醫(yī)院信息化系統(tǒng)的運(yùn)行效率和管理水平之外,Quartz.NET的任務(wù)調(diào)度系統(tǒng)還可以帶來以下實(shí)際應(yīng)用效果:
1) 降低系統(tǒng)維護(hù)成本:使用任務(wù)調(diào)度系統(tǒng)可以減少人工干預(yù),降低系統(tǒng)維護(hù)成本。自動化執(zhí)行的任務(wù)可以避免人為錯(cuò)誤和疏漏,提高系統(tǒng)穩(wěn)定性和可靠性。例如,定時(shí)備份數(shù)據(jù)庫、定時(shí)清理日志等任務(wù)都可以通過任務(wù)調(diào)度系統(tǒng)來實(shí)現(xiàn)自動化執(zhí)行,從而降低系統(tǒng)維護(hù)成本。
2) 提高數(shù)據(jù)安全性:任務(wù)調(diào)度系統(tǒng)可以實(shí)現(xiàn)數(shù)據(jù)備份、數(shù)據(jù)清理等任務(wù),保護(hù)醫(yī)院信息化系統(tǒng)中的重要數(shù)據(jù),提高數(shù)據(jù)安全性。例如,定時(shí)備份數(shù)據(jù)庫可以保護(hù)數(shù)據(jù)不會因?yàn)橄到y(tǒng)故障或人為錯(cuò)誤而丟失,提高數(shù)據(jù)安全性。任務(wù)調(diào)度系統(tǒng)還可以監(jiān)控任務(wù)的執(zhí)行情況,及時(shí)發(fā)現(xiàn)異常情況并進(jìn)行處理,進(jìn)一步提高數(shù)據(jù)安全性。
3) 支持多樣化的任務(wù)調(diào)度:Quartz.NET的任務(wù)調(diào)度系統(tǒng)支持多種任務(wù)調(diào)度方式,如簡單調(diào)度、Cron調(diào)度等,可以滿足不同的任務(wù)調(diào)度需求。例如,簡單調(diào)度可以設(shè)置指定時(shí)間間隔重復(fù)執(zhí)行任務(wù),Cron調(diào)度可以根據(jù)復(fù)雜的時(shí)間表達(dá)式來執(zhí)行任務(wù),滿足不同的任務(wù)調(diào)度需求。同時(shí),任務(wù)調(diào)度系統(tǒng)還支持任務(wù)依賴關(guān)系設(shè)置,可以確保任務(wù)按照正確的順序執(zhí)行,避免任務(wù)之間的沖突和錯(cuò)誤。
4) 增強(qiáng)系統(tǒng)可擴(kuò)展性:任務(wù)調(diào)度系統(tǒng)可以通過自定義Job和Trigger來實(shí)現(xiàn)自定義任務(wù)的調(diào)度,增強(qiáng)系統(tǒng)的可擴(kuò)展性和靈活性。例如,自定義Job和Trigger可以滿足醫(yī)院信息化系統(tǒng)中不同業(yè)務(wù)部門的需求,增強(qiáng)系統(tǒng)可擴(kuò)展性。此外,任務(wù)調(diào)度系統(tǒng)還支持集群部署,可以通過增加節(jié)點(diǎn)來擴(kuò)展系統(tǒng)的處理能力。這意味著,當(dāng)系統(tǒng)負(fù)載增加時(shí),可以通過增加節(jié)點(diǎn)來提高系統(tǒng)的處理能力,增強(qiáng)系統(tǒng)的可擴(kuò)展性。
5) 提高任務(wù)執(zhí)行效率:任務(wù)調(diào)度系統(tǒng)可以實(shí)現(xiàn)任務(wù)并發(fā)執(zhí)行,提高任務(wù)執(zhí)行效率。例如,在醫(yī)院信息化系統(tǒng)中,有些任務(wù)需要同時(shí)執(zhí)行多個(gè)實(shí)例,任務(wù)調(diào)度系統(tǒng)可以根據(jù)系統(tǒng)配置的并發(fā)數(shù)來實(shí)現(xiàn)多個(gè)實(shí)例的同時(shí)執(zhí)行,提高任務(wù)執(zhí)行效率。
因此,Quartz.NET的任務(wù)調(diào)度系統(tǒng)在醫(yī)院信息化系統(tǒng)中具有重要的應(yīng)用價(jià)值,可以為醫(yī)院信息化系統(tǒng)的運(yùn)行和管理帶來更多實(shí)際效果。任務(wù)調(diào)度系統(tǒng)的自動化執(zhí)行和監(jiān)控功能可以提高運(yùn)行效率和管理水平,同時(shí)降低系統(tǒng)維護(hù)成本,提高數(shù)據(jù)安全性,滿足不同的任務(wù)調(diào)度需求,增強(qiáng)系統(tǒng)可擴(kuò)展性,提高任務(wù)執(zhí)行效率。
4 結(jié)束語
Quartz.NET作業(yè)調(diào)度框架的API在多個(gè)方面都表現(xiàn)出了極佳的性能與易用性。在醫(yī)院信息化中,該框架具有較高的實(shí)用價(jià)值和推廣意義。可視化的作業(yè)調(diào)度管理不僅可以通過頁面直觀地展示各個(gè)任務(wù)的運(yùn)行狀態(tài),而且上次任務(wù)失敗原因也會被捕獲并在頁面上展示。這方便了開發(fā)者或運(yùn)維人員及時(shí)發(fā)現(xiàn)任務(wù)調(diào)度中存在的問題,以便快速解決問題。
參考文獻(xiàn):
[1] 王添男,李新慶,徐曉慶,等.基于氣象大數(shù)據(jù)云平臺的自動化告警應(yīng)用研究[J].寧夏工程技術(shù),2021,20(4):352-356.
[2] 劉光明,朱肖穎.Web應(yīng)用與Quartz的整合研究[J].企業(yè)科技與發(fā)展,2018(3):114-116.
[3] 李林,楊才,關(guān)曉軍,等.自動氣象站監(jiān)控平臺數(shù)據(jù)傳輸故障短信通知系統(tǒng)的開發(fā)與應(yīng)用[J].青??萍?,2017,24(4):58-65.
[4] 沈宇杰.基于Quartz的可自定義作業(yè)調(diào)度系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].通化師范學(xué)院學(xué)報(bào),2019,40(4):78-81.
[5] 葉剛.基于Quartz的可視化定時(shí)任務(wù)管理方案[J].電子技術(shù)與軟件工程,2018(17):139-140.
[6] 田雅.基于.NET應(yīng)用系統(tǒng)性能優(yōu)化的研究與實(shí)踐[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2013(5):173-174.
【通聯(lián)編輯:謝媛媛】