什么相当于天蓝色的Windows服务?

Arj*_*ang 29 azure

在azure上有一个始终运行的过程的方法是什么?在Windows上它是Windows服务,但我必须得到一个虚拟机只是为了有一个正在运行的进程?我已经查看了各种计算选项,但它们似乎都没有匹配Windows服务的功能.是否有不同的方法来实现Windows服务在azure上的功能?

Dav*_*gon 20

没有特定的方法在Azure中运行您的代码.你有很多选择,你选择的是真正取决于你(和意见的问题).但是,客观地说:

  • 在Windows Server VM中一如既往地安装您的服务
  • 在没有Windows服务包装器的情况下在VM中运行代码(Windows或Linux,具体取决于语言)
  • 将核心代码从服务中提取出来,并在Web /辅助角色(云服务)中运行.
  • 在WebJob中运行您的代码.
  • 在Web应用程序中运行您的代码(您需要添加一些方法来实现它,就像坐在它前面的REST API)

我看到@Neil在他的回答中建议使用Service Fabric.这也有效,除了你需要了解一般的Service Fabric,因为它的工作方式有点不同.

  • 这应该是公认的答案,有很多方法可以给这只猫剥皮 (2认同)

Nei*_*zie 15

您应该查看持续运行的Web作业.请参阅在Microsoft Azure上使用WebJobs运行后台任务.

其他选择是PaaS云服务工作者角色和Azure Service Fabric可靠服务 - 但如果您只是想要基本服务,这些可能是过度杀伤.

  • 如果您要采用云服务路线,则工作角色是您希望为 Windows 服务运行的角色。Web 角色将用于 IIS 实例来运行 Web API 或网站 (2认同)

Dip*_*aul 5

Azure 函数是将 Windows 服务迁移到基于云的服务的一个很好的选择。Azure 功能可以由计时器触发,因此就像 Windows 服务一样可以安排在一天中的某个时间。
请阅读我在进行此类迁移时写的笔记: https://dumanhilltechnologies.com/blog/windows-service-migration-to-azure-function/

更新 以上链接不再可用,因此请参阅 Microsoft 关于计时器触发的 Azure 函数的文档https://learn.microsoft.com/en-us/azure/azure-functions/functions-bindings-timer?tabs =进程中&枢轴=编程语言-csharp

.net core 中的其他选项是编写一个BackgroundService并使用 Azure 应用服务托管它,或者使用 Azure 容器服务托管在容器实例中。

  • 我想我不同意这一点。Windows 服务持续运行,因此通过 Azure 函数替换它(正如您所说,在某些时间触发)并不是最好的答案。除非你每秒触发你的函数。但这可能会导致其他问题。在这种情况下,我认为 Azure Functions 更多的是作为 Windows 计划任务的替代品 (8认同)