Хорошо, так как все опускают ответ, который я написал еще в 2008 году * ...
Я расскажу вам, как мы это делаем сейчас, в 2014 году. Мы больше не используем веб-сайты, потому что сейчас мы используем ASP.NET MVC.
Нам, конечно, не нужен балансировщик нагрузки и два сервера для этого, это нормально, если у вас есть 3 сервера на каждый поддерживаемый вами веб-сайт, но для большинства веб-сайтов это полный перебор.
Кроме того, мы не полагаемся на последний мастер от Microsoft - он слишком медленный, слишком много скрытого волшебства и слишком склонен к смене имени.
Вот как мы это делаем:
У нас есть этап пост-сборки, который копирует сгенерированные библиотеки DLL в папку bin-pub.
Мы используем Beyond Compare (что отлично **) для проверки и синхронизации измененных файлов (через FTP, потому что это широко поддерживается) до рабочего сервера.
У нас есть защищенный URL-адрес на веб-сайте, содержащий кнопку, которая копирует все, что находится в bin-pub, в bin (сначала делается резервная копия, чтобы обеспечить быстрый откат). На этом этапе приложение перезапускается. Затем наша ORM проверяет, есть ли какие-либо таблицы или столбцы, которые нужно добавить, и создает их.
Это всего лишь миллисекунды простоя. Перезапуск приложения может занять секунду или две, но во время перезапуска запросы буферизируются, поэтому время простоя практически отсутствует.
Весь процесс развертывания занимает от 5 секунд до 30 минут, в зависимости от того, сколько файлов было изменено и сколько изменений нужно просмотреть.
Таким образом, вам не нужно копировать весь веб-сайт в другой каталог, а только в папку bin. Вы также полностью контролируете процесс и точно знаете, что меняется.
** Мы всегда внимательно следим за изменениями, которые мы развертываем - в качестве двойной проверки в последнюю минуту, чтобы мы знали, что тестировать, и если что-то ломается, мы готовы. Мы используем Beyond Compare, потому что он позволяет легко сравнивать файлы по FTP. Я бы никогда этого не сделал без BC, вы понятия не имеете, что перезаписываете.
* Прокрутите вниз, чтобы увидеть это :( Кстати, я бы больше не рекомендовал веб-сайты, потому что они медленнее строятся и могут сильно вылетать из-за наполовину скомпилированных временных файлов. Мы использовали их в прошлом, потому что они позволяли более гибкие файлы для файлов Развертывание. Очень быстро исправить мелкую проблему, и вы сможете точно увидеть, что развертываете (если, конечно, используете Beyond Compare - иначе забудьте об этом).