我有一个用C#ASP.Net MVC4编写并在Windows Azure网站上运行的应用程序。我想写一份服务/工作来执行以下工作:
1.从网站数据库中读取用户信息
2.构建用户明智的站点活动摘要
3.生成HTML电子邮件,其中包含每个用户帐户的摘要
4.定期向每个用户发送此类电子邮件
我是Windows Azure云服务的新手,希望了解实现上述目标的最佳方法/解决方案。
答案 0 :(得分:1)
您走在正确的轨道上,但是......请记住,工作者角色(或Web角色)基本上是Windows Server VM的蓝图,您可以运行该角色定义的一个或多个实例。而VM就像在本地运行的Windows Server一样,可以同时执行一系列任务。所以......不需要为每小时的电子邮件创建一个单独的工作者角色。想一想:将近一个小时,它将处于空闲状态,你将为此付出代价(无论你发起的角色有多少例,你都不能把它降到零 - 你总是需要最少的一个实例)。
但是,如果您在现有的工作人员或Web角色上创建一个线程,它只是睡了一个小时然后再进行电子邮件更新,那么您基本上可以免费获得此功能(并且您希望对此产生最小的影响)在该Web /辅助角色的实例上运行的其他任务。)
您需要做的一件事,独立于单独的角色或重用角色:为多个实例做好准备。也就是说:如果你有两个角色实例,他们都会运行代码来检查每小时。因此,您需要一个方案来防止两个实例执行相同的任务。这可以通过几种方式解决。例如:使用一小时保持不可见的队列消息然后出现,并且您的代码可能会每隔一分钟检查一次队列消息(并且第一个获取它的人会执行每小时的事情)。或者也许运行quartz.net。
答案 1 :(得分:-1)
我不知道邮政,但它似乎是正确的组合使用。