我在 Azure VM 或 Azure Worker Role 中选择 运行 服务中的哪一个?

Which one i choose running service in azure VM or Azure Worker Role?

我的客户端有两个应用程序,一个是 Web 应用程序,用户可以在其中安排一些操作,另一个是 windows 服务,每 3 分钟运行一次并执行计划任务并通过电子邮件发送给客户端,两者都独立于每个人。

以前这两个应用程序都托管在 Azure VM 中

最近我将我的应用程序转换为 Azure Web 角色以实现可伸缩性。

现在我正在为 Windows 服务实现工作者角色。但我对客户端 Web 项目需要可伸缩性感到困惑,所以我将 Web 项目转换为 Azure Web 角色

  1. 但是在什么情况下使用 Windows Service 作为 Azure Worker 角色比 运行 VM 内的服务更好?

  2. 我是否继续在 Azure VM 中使用 运行 服务?

  1. But in what case using Windows Service as Azure Worker role is better that running service inside VM?

将 Windows 服务移动到 Azure 工作者角色有几个好处 - 恕我直言,前三个是:

  1. Azure 工作者角色是 PaaS(平台即服务) - 您会获得一个 'platform',您的代码 运行s(一个 Windows 服务器虚拟机,但它是从你那里抽象出来的)——不需要管理底层基础设施 OS、网络、磁盘等。这意味着你可以专注于你的代码以及它如何工作/缩放/执行等,而不必担心 VM 是否已启动并且 运行ning。此外,底层 Azure Fabric 将为您管理故障,如果底层硬件出现故障,则启动一个新的工作实例。

  2. Azure Worker Roles 为您带来规模优势 - 因为它们 运行 在 Azure PaaS 平台上,您的代码 'package'只需单击几下鼠标,即可通过 Azure 门户扩展到多个实例。缩放可以根据队列长度自动(由底层 Azure Fabric 触发)(如果您从队列接收消息)或基于平均 CPU 使用率;或者,您可以手动或按设定的时间表(例如 'we do lots of processing overnight so increase the number of workers to 4 from 1am - 6am and then back to 2 for the rest of the day')进行缩放。有关扩展辅助角色(又名 'Cloud Services')

  3. 的更多信息,请参阅 https://azure.microsoft.com/en-gb/documentation/articles/cloud-services-how-to-scale/
  4. 类似于 API 到 Windows 服务 - Azure 辅助角色的 API 几乎完全相同正如在 Windows 服务中公开的那样 - 你有一个 OnStart()OnStop()运行() 方法^ 允许您轻松地将现有 Windows 服务移植到工作者角色,而无需大惊小怪。

^ 好吧,这些可能不太正确,因为自从我上次使用 WR 以来已经有几个月左右的时间了,我记不清具体的界面了,但是你明白了;- )

Do i continue with running service in Azure VM?

让我根据你的问题(我强调的)来回答这个问题:

我的客户有两个应用程序,一个是 Web 应用程序,用户 安排一些操作 另一个是 windows 服务 运行s 每 3 分钟 并执行计划任务并发送电子邮件给客户端.

我认为(恕我直言)您需要考虑为云开发,而不是传统的开发模式。我从中读到的是,您有一个网络应用程序可以将某些内容写入持久存储(可能是数据库 table);然后您有第二个服务(您希望迁移到 Azure 工作者角色)以特定时间间隔轮询持久存储,检测是否有任何新客户端要发送电子邮件并发送电子邮件。

如果我们要为云重新构建它,我会保留辅助角色,但执行以下操作:

  1. Web 应用程序向队列发布消息以指示需要向客户发送电子邮件 - 此消息可能包含他们的名字和姓氏、电子邮件地址以及可能的一些数据将进入电子邮件正文(如果需要)。

  2. 工作者角色将轮询此队列以获取消息。对于收到的每条消息,工作者角色将根据消息的内容通过您首选的电子邮件提供商发送一封电子邮件(希望他们有一个不错的 .Net API - 请不要使用原始 SMTP!)。成功发送电子邮件后,工作者角色会将邮件从队列中删除。

这种方法既可扩展又可重复table - 真正的云架构!

仅供参考,如果您对使用队列方法感兴趣,Azure 存储队列或 Azure 服务总线队列都可以在这里使用。听起来您的排队要求很简单,因此,存储队列将是一个完美的选择。在这里查看它们的比较:https://azure.microsoft.com/en-gb/documentation/articles/service-bus-azure-and-service-bus-queues-compared-contrasted/.

希望对您有所帮助!