2012-05-28 1 views
2

Я построил одну задачу запуска для приложения Azure содержит исполняемый файл (работает периодически с некоторым временным интервалом), и теперь я хотел бы сделать это автообновление на каждую неделю, как я просил, прежде чем hereБудет ли задание автозапуска запуска работать в лазурном приложении?

Однако я буду делать некоторые логику замены этого файла через этот exe (задача запуска), то он также не будет влиять на новый файл. Я пришел к выводу, что новая задача запуска вступит в силу только в том случае, если мы обновим/создадим проект azure с новым файлом. (Исправьте меня, если я понял что-то не так)

Итак, есть ли способ выполнить мою логику, перезагружая экземпляр (exe/startuptask)? Я думаю, что это будет также оригинальный файл (добавленный в startuptask во время обновления/создания приложения) вместо нового файла!

Возможно ли это в любом случае?

ответ

1

После того как я изучил вашу проблему я могу предложить очень простое решение, как показано ниже, которые я делал для образца Tomcat/Java:

Подготовка EXE Перезагрузка виртуальной машины вместе с исходным кодом:

  1. в вашем EXE, создать метод для поиска конкретного файла XML при хранении Azure в определенном интервале, а также добавить повторы логики для доступа к XML
  2. Синтаксической XML для конкретного значения, и если определенное значение устанавливаются перезагружать машину
  3. Пакет ваш EXE в формате ZIP и место на вашем Azure Storage
  4. Обязательно поместите XML на облаке и установить перезагрузиться = ложное значение

Что делать в Startup Задача:

  1. Создать задачу запуска и загрузки ZIP с Azure Storage, который содержит ваш EXE
  2. После загрузки распакуйте файл и поместить EXE в определенной папке
  3. запуск ЕХЕ

Что делать, если вы хотите обновить EXE:

  1. Update ваш EXE, пакет в ZIP и место на том же месте в Azure Storage с таким же названием
  2. обновление XML, чтобы включить Перегрузить

Как обновление будет происходить:

  1. Исполняемый файл будет искать XML после некоей внутренней как задуманы
  2. После того, как он видит Reboot установлено, он будет перезагрузить VM
  3. После перезагрузки, задача запуска будет запущена, и ваш новый EXE будет загружаться на Azure VM и обновляться. Убедитесь, что загрузка и обновление выполняются в одной папке.

Посмотри на Startup Tak в образце ниже, которые используют подобный метод: http://tomcatazure.codeplex.com/

+0

Спасибо за ваш описательный ответ. Я думаю, что тот же сценарий, однако у меня есть сомнения в первом шаге по перезагрузке виртуальной машины, потому что я уже протестировал ее с другим exe, который периодически запускается в задаче запуска (вместо оригинальной) и загружает основной EXE из blob с некоторым условием версии и запускает Main EXE поэтому он отлично работает без необходимости перезагрузки виртуальной машины. –

+0

Очень приятно. Просто имейте в виду, что перезагрузка запускает задачу запуска, поэтому вы можете написать любое решение на основе этого. – AvkashChauhan

3

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

Гораздо более надежный способ состоял бы в том, чтобы исполняемый файл volatile хранился где-то, как хранилище Azure Blob. Вы загружаете новую версию в хранилище blob, и роль каким-то образом видит, что (либо путем опроса хранилища, либо какой-либо операции, вызванной пользователем) не имеет значения), загружает новую версию и заменяет существующую версию новой.

Таким образом, если ваша роль выйдет из строя, она будет надежно извлекать новейшую версию из постоянного хранилища при запуске.

+0

Во всяком случае, если я заменю этот ех (в задаче запуска) из хранилища в блоге с новым, он будет считать, в действии? Как я уже пробовал с RDP, и кажется, что не потребовалось просто заменить этот файл. –

+0

@Arun Rana: вам нужно предпринять некоторые действия в своем коде, чтобы остановить исходную программу, заменить ее и запустить новую. – sharptooth

Смежные вопросы