Как сократить время публикации приложения Windows Azure до 5 секунд?

Полноценный процесс публикации приложения в Windows Azure может занимать 5-10 минут. Большая часть времени занимает инициализация экземпляров роли, т.е. фактически виртуальной машины. Иногда в процессе разработки возникает необходимость тестировать приложение непосредственно в Windows Azure, а не локальном эмуляторе. И каждый раз после внесения небольших изменений ждать по 5-10 минут не очень хочется (такое количество чашек чая\кофе не возможно выпить). Какие в этом случае у нас есть варианты? Наиболее удобный способ – это использовать Web Deploy, который просто копирует измененные файлы веб- или воркер-роли. Еще у Web Deploy есть одно преимущество: при полноценной публикации приложения запускается новая виртуальная машина, что означает дополнительные расходы, т.к. каждое удаление и повторное развертывание приложения оплачивается как целый час использования вычислительных ресурсов, а при обновлении через Web Deploy этого не происходит, т.к. продолжает работать тот же экземпляр роли. Замечу, что, конечно, новый промышленный релиз приложения или сервиса рекомендуется выполнять через полноценную публикацию.

Как настроить Web Deploy

1.  В настройках проекта выбрать опции Enable Web Deploy for all roles и Enable Remote Desktop for all roles (укажите логин и пароль для Remote Desktop), т.к. именно с этими логином и паролем Web Deploy пойдет к нам на роль перезаписывать файлы.

image

image

2. Выполнить полную публикацию решения.

image

3. Внести изменения в файл и выбрать опцию публикации непосредственно в проекте роли. Профиль публикации должен быть заполнен автоматически.

image

image

4. Опубликовать. Меньше, чем через минуту файлы обновятся и изменения будут видны на портале.

Обратите внимание, что у меня указан порт 443, это стандартный порт SSL, но не тот, который Web Deploy использует по умолчанию (это порт 8172). Наша корпоративная сеть блокирует SSL соединение на “подозрительны” порты, поэтому пришлось внести изменения в файл конфигурации проекта и использовать 443 порт.

Как это делается (смена порта публикации Web Deploy)

1. Делаем Unload для проекта и открываем на редактирование файл конфигурации проекта.

image

image

2.  Добавляем строчку <WebDeployPorts>WebRole1:443</WebDeployPorts>.

image

3. Сохраняем, делаем Reload для проекта.

4.  Делаем полную (не через Web Deploy) публикацию проекта в Windows Azure.

В итоге, внесенные изменения практически мгновенно оказываются уже в Windows Azure.