在Azure中运行.NET服务代码的位置?

时间:2017-03-06 10:06:26

标签: .net azure windows-services azure-worker-roles

当我需要一个不断在后台运行的程序并处理队列/数据库数据/计划任务/等时,我创建一个Windows服务应用程序并在Azure VM上运行它。这仍然是目前最佳的方法吗?在我看来,Azure Worker角色(作为替代方案)有点被遗忘/忽略/折旧。我应该尝试制作更多面向服务架构的服务吗?

部分我正在寻找的是一种相对简单的部署,运行和维护代码的方法,旧代将放在Windows服务中(尽可能少的维护)。

1 个答案:

答案 0 :(得分:1)

Service Fabric似乎有点过于复杂(而且价格昂贵:请参阅所需的最小VM数量)来提供您所描述的内容,除非这是关键任务的企业级代码。

您对Windows服务的引用使我认为这些是长时间运行的进程。根据您需要的处理时间,您有以下几种选择:

  • Azure Functions:适用于小型,面向任务的功能,可与其他天蓝色服务完美集成:存储,事件中心等(但有5分钟超时)
  • Azure Batch Service:对于长时间运行的批处理进程,管理VM群集上的作业分配,您可以定义群集大小和生命周期。可以运行任何类型的工作负载,包括预先存在的可执行文件等,并且可以安排 - 所以这可能是您最有可能的候选人。

对于批处理服务选项,您只需支付正常的计算使用费(即,您为部署的批处理作业而部署的虚拟机)

对于Azure Functions,相对于您的函数在运行时消耗的内存量,每100ms计费。这个平台是“无服务器”[Lol,很棒的名字],因为你不必担心向外扩展,它会检测到你有大量流量并为你扩展。

正如您所指出的,旧的选项有:Azure Cloud Service和WebJobs ...... Azure Functions实际上是WebJobs的扩展。

所以,有很多选择 - 但如果不进一步了解代码的要求,很难做出真正的建议。我希望这有助于指明你有所帮助的方向。