惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Darknet – Hacking Tools, Hacker News & Cyber Security
Jina AI
Jina AI
博客园_首页
J
Java Code Geeks
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
S
SegmentFault 最新的问题
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
L
Lohrmann on Cybersecurity
Forbes - Security
Forbes - Security
大猫的无限游戏
大猫的无限游戏
Vercel News
Vercel News
Y
Y Combinator Blog
Google DeepMind News
Google DeepMind News
The Register - Security
The Register - Security
N
News | PayPal Newsroom
S
Security Archives - TechRepublic
量子位
Cisco Talos Blog
Cisco Talos Blog
V
V2EX
C
Cisco Blogs
The Cloudflare Blog
Stack Overflow Blog
Stack Overflow Blog
L
LangChain Blog
Scott Helme
Scott Helme
S
Securelist
Security Latest
Security Latest
爱范儿
爱范儿
TaoSecurity Blog
TaoSecurity Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
I
Intezer
L
LINUX DO - 最新话题
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Check Point Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
美团技术团队
Know Your Adversary
Know Your Adversary
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
PCI Perspectives
PCI Perspectives
月光博客
月光博客
T
Tailwind CSS Blog
Cloudbric
Cloudbric
小众软件
小众软件
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
K
Kaspersky official blog
D
DataBreaches.Net
博客园 - 【当耐特】
有赞技术团队
有赞技术团队

博客园 - 二十四画生

Orchard 1.3新功能之——规则(Rules) Orchard 1.3新功能之——Markdown编辑器 Orchard 1.3 发布了! Orchard网站App_Data目录里的文件介绍 在Orchard中使用样式及脚本 Orchard中的多站点功能(Multi-Tenant) Orchard中的多语言功能 Orchard中的列表功能 Orchard中的用户、角色及权限 自定义Orchard站点辅助工具——Shape Tracing Orchard中的形状候补(Alternates) Orchard是如何呈现内容的 理解Orchard中的placement.info文件 - 二十四画生 详解Orchard主题(Theme) 在Orchard中创建一个自定义字段类型 Orchard动态编译机制 在Orchard中为命令行工具(Command-Line)添加一个新命令 在Orchard中处理一对多关系 在Orchard中创建一个主题(Theme)
Orchard中的计划任务功能(Schedule)
二十四画生 · 2011-09-17 · via 博客园 - 二十四画生

    在很多时候CMS网站也需要用到计划任务的功能(Schedule),比如:定时发布内容、定期发送网站日志给管理员、定期生成网站静态页面等等。如果要自己去实现这种计划任务的功能需要写不少代码才能实现,但在Orchard中利用其框架所提供的接口就能很容易的实现计划任务的功能。

IBackgroundTask 接口

在Orchard中如果需要实现计划任务的功能我们只需实现IBackgroundTask接口即可,Orchard框架会自动创建一个进程,每分钟去调用所有实现此接口的类(没启用的模块不会调用),并执行此接口的Sweep()方法。由于框架的支持,我们就不用再去关心系统是如何每分钟去执行一下Sweep()方法,而是把关注的重点转移到Sweep()方法需要做哪些事情上。

下面我就通过一个简单的示例来介绍在Orchard中实现计划任务的功能是如此的简单。在以前的文章中我创建过一个HelloWorld模块。其功能就是实现在后台输入一段文字,然后在前台显示出来,详情可查看《在Orchard中创建一个HelloWorld模块》。现在为了演示计划任务的功能,我们假定一个需求:系统会自动每分钟去更新HelloWorld的文字,并显示更新时的系统时间。

首先,我们在Services目录中创建一个HelloWorldTask.cs文件,并输入以下代码:

HelloWorldTask.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Orchard.Tasks;namespace MyCompany.HelloWorld.Services
{
    
/// <summary>
    
/// 只用实现IBackgroundTask接口就可以轻松实现计划任务功能了
    
/// </summary>
    public class HelloWorldTask : IBackgroundTask
    {
        
private readonly ITextService _textService;public HelloWorldTask(ITextService textService)
        {
            _textService 
= textService;
        }
public void Sweep()
        {
            
//系统会每分钟执行一次此方法
            
//我们可以在这里实现需要执行的内容
            
//我们也在这里实现执行间隔的功能
            _textService.UpdateText("Hello World, The current time is:" + DateTime.Now.ToString());
        }
    }

然后编译一下就可以了,简单吧。回到前台,输入:http://localhost/HelloWorld


隔几分钟在刷新一下,就可以发现时间自己更新了。

总结

通过以上示例我可以看出在Orchard中实现计划任务的功能十分简单。但是同样也能看出它所提供的功能还非常弱。所谓的计划任务功能目前只是提供了后台一分钟执行一次的功能。如果需要间隔N分钟或是几点到几点执行都还需要在模块中编写相应的代码来实现。不过毕竟Orchard才刚刚起步,我相信在后续的版本中会不断的去完善,希望Orchard能实现像DotNetNuke中Schedule那样有一个管理配置计划任务的地方,并可以查看执行日志等。

本示例代码下载:点击这里