0

我正在开发一个有两个要求的新建项目。

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

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

  1. 客户的集合。
  2. 一个 RESTful 服务器。
  3. 持久存储。

对于这个问题,客户端无关紧要,RESTful 服务器是使用 ASP.NET WebApi 构建的(满足上述要求),如果是云,持久存储是 Azure Tables,或者自托管时是 RavenDb。所以问题。

在此架构中,满足上述两个要求的调度作业的最佳机制是什么。

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

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

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

4

1 回答 1

1

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

这项服务可以随心所欲地简单或复杂;在低端,它可以简单地操作一个计时器,该计时器以设定的时间间隔调用 REST API 来触发您的流程

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

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

更进一步,您可以在运行时自动加载类库程序集,使未来的部署和升级变得非常容易。

于 2012-10-19T09:04:24.937 回答