我正在开发一个ASP。NET网络应用程序。有一些功能我需要每10分钟触发一次。因此,目前我正在考虑一个“计划任务”或创建一个Windows服务来调用URL。
但我记得有一次,我在PHP网络托管空间中使用cron作业做了同样的事情。
那么IIS中有没有类似cron的工作?
注意:我不希望使用第三方在线计划服务。
你可能想看看Revalee开源项目。
您可以使用它来安排特定时间的Web回调。在您的情况下,您可以安排一个Web回调(未来10分钟)。当您的应用程序收到回调时,它可以安排下一个10分钟的回调。当您的ASP. NET应用程序第一次启动时,您将安排第一次Web回调。由于您的Web应用程序正在被回调,您不需要担心IIS卸载您的Web应用程序(当然,它会卸载)。
例如,使用Revalee,可以执行以下操作:
>
当应用程序通过schduleTenMinuteCallback()
方法启动时,注册一个未来(10分钟后)回调(见下文)。
private DateTimeOffet? previousCallbackTime = null;
private void ScheduleTenMinuteCallback()
{
// Schedule your callback 10 minutes from now
DateTimeOffset callbackTime = DateTimeOffset.Now.AddMinutes(10.0);
// Your web service's Uri
Uri callbackUrl = new Uri("http://yourwebapp.com/ScheduledCallback.aspx");
// Register the callback request with the Revalee service
RevaleeRegistrar.ScheduleCallback(callbackTime, callbackUrl);
previousCallbackTime = callbackTime;
}
当web计划任务激活并回调应用程序时,您每10分钟执行一次所需的操作,,并计划下一次回调。为此,您可以将以下方法调用(CallbackMonitor()
)添加到ScheduledCallback中。aspx
页面处理程序。
private void CallbackMonitor()
{
if (!previousCallbackTime.HasValue
|| previousCallbackTime.Value <= DateTimeOffset.Now.AddMinutes(-10.0))
{
// Perform your "10 minutes have elapsed" action
// ...do your work here...
// Schedule subsequent 10 minute callback
ScheduleTenMinuteCallback();
}
}
你不使用“第三方在线调度服务”的观点已经被理解了。重载服务不是外部第三方在线调度服务,而是一种服务(更具体地说,是视窗服务),你可以在自己的网络上安装和完全控制它。它驻留在你自己选择的服务器上运行,很可能在你的防火墙后面,在那里它可以接收来自你在IIS上的网络应用程序的回调注册请求。(当然,如果需要,它可以安装在IIS网络服务器上。)
我希望这能有所帮助。
免责声明:我是参与Rvalee项目的开发人员之一。然而,要明确的是,Rvalee是免费的开源软件。源代码可以在GitHub上获得。
我同意@Amadan-苹果和橙子。
然而,我倾向于为此编写一个定制的Windows服务,而不是使用Windows任务调度器。另一个问题是专业人士
虽然Windows服务很简单(足够)来开发,但您可能会考虑开源的顶层框架,以减轻一些通常伴随开发和部署的怪癖。
公平地说,请记住,cron
当然不是PHP的一部分,它只是一个在*nix PHP托管环境中可用的工具:ASP。网络真的没什么不同;问题是ASP中有什么类似于cron的工具。NET环境,以满足您的需求和您的喜好。
苹果和橙子cron
是一种Unix服务。IIS是一个web服务器。正如Apache或nginx中不包含cron
,IIS也没有包含调度器的意义。但是,您可以使用schtasks。exe
以类似的方式,您可以在Unix上使用cron
。
你可能会在这个问题中找到更多的想法。
问题内容: 我喜欢整个WMI概念,并且可以在Linux(在某些脚本中)中真正使用它。Linux系统有类似的东西吗? 问题答案: 并不是的。您是否正在使用WMI获取系统参数,查询过程,更改配置或监视系统事件,等等? 内核通过和文件系统公开了许多信息和可调旋钮。没有查询语言,只有目录和文件的组织层次结构。其中一些文件是只读,读写或只写的。其中一些人有能力。 有些服务可能具有动态自定义客户查询和更新配置
问题内容: Java中是否有内置方法来查找任何数据类型的大小?有什么方法可以找到尺寸? 问题答案: 否。标准Java SE类库中没有这种方法。 设计者的观点是Java不需要它,因为该语言使应用程序1无需知道需要为原始值,对象或具有给定数量的元素的数组保留多少空间。 您可能会认为sizeof运算符对需要了解其数据结构占用多少空间的人很有用。但是,您还可以使用Java内存分析器简单,可靠地获得此信息以
问题内容: 我需要用同一行的一组列(从左到右)中的第一个非空条目填充一个单元格-类似于SQL中的coalesce()。 在以下示例表中 我想在A行的每个单元格中放置一个单元格函数,这样我将得到: 我知道我可以使用一系列IF函数来做到这一点,但是在我的实际工作表中,我有30列可供选择,因此,如果有一种更简单的方法,我将很高兴。 问题答案: 这是一个数组公式。输入公式后,按+ +使Excel将其评估为
问题内容: 我从来没有见过这样的声明,它是否存在于Java世界中? 问题答案: Java的版本是-它创建指定类型的新对象。 在Java中,内存是为您管理的,因此您不能显式或对象。
我想像这样在中使用一个不可序列化的对象 它非常低效,因为我创建了许多实例。实际上,它只能在每个工作器中创建一次。 在Spark中,我可以使用mapPartition来执行此操作。但在flink stream api中,我不知道。
问题内容: Java中是否有类似.NET的东西? 问题答案: 下议院郎有它。或者你可以扔一个。