Возможно ли выполнить RoleEntryPoint.OnStart () дважды, прежде чем очистить хост-компьютер? - PullRequest
1 голос
/ 14 июня 2011

Я планирую вставить некоторый код инициализации в метод OnStart() моего класса, полученный из RoleEntryPoint. Этот код внесет некоторые постоянные изменения в хост-машину, поэтому, если он будет запущен во второй раз на той же машине, ему придется обнаружить, что эти изменения уже есть, и отреагировать соответствующим образом, и это потребует некоторого дополнительного кода с моей стороны.

Возможно ли, что OnStart() будет запущен во второй раз перед очисткой хост-машины? Нужен ли этот код для повторного запуска на той же машине?

Ответы [ 2 ]

3 голосов
/ 14 июня 2011

Возможно ли, что OnStart () запущен для второй раз перед хозяином машина очищена?

Не уверен, как это интерпретировать.

Что касается постоянных изменений: любое установленное программное обеспечение, изменения реестра и другие модификации должны повторяться при каждой загрузке. Если вы записываете файлы в локальное хранилище (недолговечное хранилище), у вас есть хорошие шансы увидеть эти файлы при следующей загрузке, но нет никакой гарантии. Если вы храните что-то в хранилище Windows Azure (BLOB-объекты, таблицы, очереди) или SQL Azure, изменения в вашем хранилище сохранятся после перезагрузки.

Даже если вам гарантировали, что локальные изменения сохранятся после перезагрузки, эти изменения не будут видны в дополнительных экземплярах, если вы масштабируете на большее количество виртуальных машин.

3 голосов
/ 14 июня 2011

Я думаю, что официальный ответ заключается в том, что экземпляр роли не будет запускать свое задание более одного раза в каждом цикле загрузки.

Однако я видел несколько статей MSDN, которые рекомендуют сделать задачи запуска идемпотентными -например, http://msdn.microsoft.com/en-us/library/hh127476.aspx - так что, вероятно, лучше добавить несколько простых проверок в ваш код, которые ожидают многократное выполнение.

...