ClickOnce при обновлении CloudFront с исходного сайта

#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.