在云和本地安装上调度作业

时间:2012-10-18 22:29:09

标签: .net architecture azure self-hosting

我正在开发一个有两个要求的绿地项目。

  • 在云中运行(Azure)。
  • 要在自托管Windows Server安装上运行。

该项目分为3个主要部分。

  1. 客户的集合。
  2. RESTful服务器。
  3. 持久存储。
  4. 对于这个问题,客户端是无关紧要的,RESTful服务器是使用ASP.NET WebApi(满足上述要求)构建的,持久存储是Azure表,如果是云或RavenDb,则自托管。对于这个问题。

    在此体系结构中调度作业的最佳机制是什么,它满足上面列出的两个要求。

    我有一个通过查询RESTful服务器并要求它对任何活动作业进行预定时间检查来运行的作业概念,因此该服务实际上只需要进行一个非常简单的休息查询来启动该过程。

    所有作业和运行它们的逻辑(它们都是模板)都在服务器上,因此服务不需要逻辑。

    最终,最好的回应是某种自动收报机服务,要求服务部门进行检查。如果我可以将它直接构建到ASP.NET WebApi服务器中,我会更高兴。这是一项新技术,所以请原谅我可能错过的任何可以解决这个问题的明显疏忽。

1 个答案:

答案 0 :(得分:1)

一种方法是编写一个非常简单的“调度程序服务”(原则上类似于OP注释中提到的石英调度程序),用[插入最喜欢的.Net语言]编写。

此服务可以像您希望的那样简单或复杂;在低端,它可以简单地操作一个定时器,该定时器以设定的间隔调用REST API来触发您的过程

服务本身可以编写为类库,然后可以在Windows服务器上安装时部署在Windows服务中;或者,在部署到云时托管在Azure辅助角色中。当部署在Azure辅助角色中时,调度程序可以轻松地在XS实例(1GHz CPU,768MB RAM,20GB存储)中以最低成本运行 - 按当前价格每月14.40美元。

这种方法允许在两个解决方案中使用相同的代码库(简单地引用类库项目),并且可以独立进行单元测试。

进一步采用这种方法,您可以在运行时自动加载类库程序集,使未来的部署和升级非常容易