#clickonce #amazon-cloudfront
#clickonce #amazon-cloudfront
Вопрос:
У меня есть настройка ClickOnce для публикации на моем сайте. Я использую Amazon CloudFront для кэширования файлов как можно ближе к клиентам. Проблема, с которой я теперь должен аннулировать манифест приложения при каждом развертывании.
Возможно ли, чтобы ClickOnce проверял наличие обновлений в одном месте, но загружал приложение из другого?
Спасибо, Идо
Ответ №1:
Почему вам нужно аннулировать манифест при каждом развертывании? Является ли CloudFront чем-то вроде CDN, где вам нужно указать пограничным серверам получать новую версию из источника при ее изменении?
Приложение ClickOnce всегда загружает файлы из того же расположения, что и манифест развертывания. И если я прав, и CF — это какой-то CDN, то проблема не в файлах, а в том, что происходит с развертыванием.
Кроме того, URL-адрес, который ClickOnce использует для установки и обновления, является частью идентификатора развертывания, и его нельзя изменить волей-неволей. В большинстве случаев пользователям потребуется удалить и переустановить, чтобы получить доступ к развертыванию с другого URL.
С другой стороны, вы могли бы избежать всей этой проблемы и разместить свое развертывание в хранилище больших двоичных объектов Azure за гроши в месяц (http://robindotnet.wordpress.com/2011/07/18/host-your-clickonce-deployment-in-azure-for-pennies-per-month/ ) вместо этого… Вы даже можете использовать Azure CDN для обеспечения максимальной производительности для своих клиентов. Я думаю, что в Azure вы можете установить время ожидания равным 0 в манифесте развертывания, чтобы он проверялся при каждом обращении к нему для обновления.
Комментарии:
1. Спасибо — я не думал об Azure для этого, я прочитаю это и попробую. Причина, по которой я должен аннулировать манифест развертывания, заключается в том, что CF — это CDN, который кэширует файлы на пограничных серверах, поэтому я должен сообщить CF, что исходный файл изменился.
2. Понятно. Мы используем CDN для наших развертываний и должны очистить манифест развертывания после публикации новой версии. В Azure, если вы используете хранилище больших двоичных объектов, вам не нужно этого делать. Также я думаю, что трюк с TTL сработает — я получил это непосредственно от одного из менеджеров программ Azure CDN.