运行 Azure 中的 .NET 服务代码在哪里?

Where to run .NET service code within Azure?

当我需要一个程序不断地 运行 在后台运行并处理 queues/database data/schedule tasks/etc,我创建了一个 Windows 服务应用程序和 运行 它在 Azure VM 上。这仍然是目前的最佳方法吗?在我看来,Azure Worker 角色(作为替代)有点 forgotten/overlooked/depreciated。我应该尝试制作更多面向 Service-Fabric 的服务吗?

部分我正在寻找的是一种相对简单的部署方式,运行宁和维护代码,老前辈会把它放在 windows 服务中(维护很少尽可能)。

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

您对 windows 服务的引用使我推测这些是长期 运行 进程。根据您需要多少处理时间,您有以下几种选择:

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

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

对于 Azure Functions,您将根据函数在 运行 时间消耗的内存量按 100 毫秒计费。这个平台是 "Serverless" [大声笑,伟大的名字],因为你不必担心横向扩展,它会检测你何时有大量流量并为你横向扩展。

正如您所指出的,还有较旧的选项:Azure 云服务和 WebJobs...Azure Functions 实际上是 WebJobs 的扩展。

所以,有很多选择 - 但如果不进一步了解您的代码要求,很难做出真正的推荐。我希望这可以帮助您指明一个有用的方向。