替代 Azure 云中的 运行 window 服务

Alternate to run window service in Azure cloud

我们目前有一个 window 服务,它在对数据库(SQL 数据库)进行一些处理后向用户发送一些通知电子邮件。一天运行一次。

我们想把它移到 azure cloud 上。一种替代方法是按原样将其放在 Azure VM 上。但我正在为此寻找其他最佳解决方案。

我研究了定期和按需 Web 作业,但我不确定这是不是最佳解决方案。 也有可能更新 App.config 中的服务代码配置,而无需在云上重新部署服务代码。我的意思是我们可以从 Azure 门户管理配置。

提前致谢。

2016 年 11 月 4 日更新

自撰写本文以来,Azure 中提供了 2 个附加功能,根据您需要的功能,它们都是很好的选择:

Azure Functions(基于下面描述的 WebJobs):无服务器代码可以 trigger/invoked 以多种方式实现,并具有扩展支持。

Azure Service Fabric:微服务平台,支持actor模型,支持有状态和无状态服务。


您有 3 个基本选项:

  • Windows 虚拟机上的服务 运行
  • 网络作业
  • 云服务

有很多关于这些选择之间权衡的信息,但这里有一个简短的总结。

VM - 优点:您可以基本上按原样移动您的服务,而无需更改太多或任何代码。它们还具有与 Azure 中其他资源(blob 存储、虚拟网络等)最简单的连接。缺点是您放弃了所有 PaaS 优势,并且仍然无法管理自己的 VM 基础架构

WebJob - 优点:多个调用选项(队列、blob、手动、队列接收循环、连续 while 循环样式等)、计划(将涵盖您的情况)。易于部署(可以与网站一起使用,作为控制台应用程序,自动通过 Kudu),在 Azure 门户中有一些内置的日志记录——是的,为了回答你的问题,你可以在门户本身中更改连接字符串和应用程序的配置设置。

缺点 - 您需要更新代码,您无权访问底层资源(如果需要的话),还有更多需要记住的事情而不是缺点 - 它使用与部署它的 webapp。

Web 作业是最新的选项,但同时似乎正在积极开发以增加功能和实用性。

云服务 - 就像一个托管虚拟机,有一些部署选项,如果需要可以访问底层虚拟机。需要对现有服务进行一些代码更改。

您在用例中提到的任何内容都没有让我认为 Web 作业不应该是您尝试的第一件事。

(编辑:Troy Hunt 有一篇很棒且相对较新的博客 post 说明了我在上面提到的关于网络工作的大部分观点:http://www.troyhunt.com/2015/01/azure-webjobs-are-awesome-and-you.html