在清理主机之前,RoleEntryPoint.OnStart()是否可以运行两次?

时间:2011-06-14 08:08:55

标签: windows azure initialization cloud

我计划将一些初始化代码插入到从RoleEntryPoint派生的类的OnStart()方法中。此代码将对主机进行一些永久性更改,因此如果它在同一台机器上第二次运行,则必须检测那些已经存在的更改并做出适当的反应,这将需要我的一些额外代码。

是否可以在清除主机之前第二次运行OnStart()?我是否需要此代码才能在同一台机器上第二次运行?

2 个答案:

答案 0 :(得分:3)

我认为官方的答案是角色实例不会在每个启动周期中多次运行它的作业。

但是,我看过一些MSDN文章,建议你使启动任务具有幂等性 - 例如http://msdn.microsoft.com/en-us/library/hh127476.aspx - 最好在代码中添加一些简单的检查,以预测多次执行。

答案 1 :(得分:3)

  

是否可以运行OnStart()   在主持人之前的第二次   机器被清除了?

不确定如何解释。

就永久性更改而言:每次启动时都应重复安装任何软件,注册表更改和其他修改。如果您正在将文件写入本地(非持久存储),则下次启动时很有可能看到这些文件,但不能保证。如果要在Windows Azure存储(blob,表,队列)或SQL Azure中存储某些内容,则存储更改将在重新启动后保留。

即使您确保本地更改将通过重新启动而保留,但如果您扩展到更多虚拟机,则不会在其他实例上看到这些更改。