我需要每隔50秒左右将一些数据写入数据库。它类似于在后台运行并静默执行其工作的Windows服务。在我的情况下,启动和停止不是一个选项,因为我需要将少量先前插入的数据存储在内存中。使用Windows Azure或AWS时,最佳解决方案是什么?
谢谢。
答案 0 :(得分:7)
使用Windows Azure,您可以选择Web角色或辅助角色(基本上都是Windows 2008 Server R2或SP2),并且可以选择某种类型的定时事件,如@Lucifure建议的那样。您还可以运行Quartz.net之类的调度程序,或利用Windows Azure队列或服务总线队列在特定时间显示消息。但是:您不能在给定的角色实例中执行“永久”任务,因为定期重新启动VM实例(例如,每月进行主机操作系统维护)。通过角色关闭,您会收到通知,您可以在Stopping()
或OnStop()
处理这些关闭通知。如果您有多个实例,则可以使用调度程序或队列来确保事件仍然每50秒左右触发一次,并在多个实例中处理(但在任何给定时间只能由一个实例处理)。
要保留内存中的信息,一个想法是将该信息存储在缓存中。你有两个选择:
有关缓存的更多信息是here。
有关Quartz.net和Windows Azure的一些StackOverflow答案,例如this one。
答案 1 :(得分:2)
在Windows Azure上,您可以使用可以执行此操作的辅助角色。它可以简单地作为while循环。
试试这篇文章作介绍。 http://www.c-sharpcorner.com/uploadfile/40e97e/windows-azu-creating-and-deploying-worker-role/
答案 2 :(得分:1)
您可以设置System.Threading.Timer每50秒左右触发一次,并在事件发生时继续工作。