Хранение двоичных данных (изображений, файлов и т. Д.) С использованием WPF + Windows Azure

У меня есть приложение WPF, которое использует Windows Azure в качестве бэкэнда. Я использую SQL Azure для хранения данных, к которым обращается приложение WPF через службу WCF. Мне нужно иметь возможность хранить двоичные файлы (например, изображения) на стороне сервера и задаться вопросом, как лучше всего хранить эти файлы. Я могу поместить файлы в базу данных SQL, но не уверен, рекомендуется ли это. Предположим, что хранится около 2000 файлов (общий размер ~ 1 ГБ). К этим файлам часто обращаются (желательно кэшировать на клиенте).

Какие-либо предложения?

Ответы на вопрос(2)

Лазурные капли. SQL Azure стоит дороже по сравнению с BLOB-объектами.

 http://www.windowsazure.com/en-us/home/features/storage/
Решение Вопроса

хранилище BLOB-объектов - гораздо лучший способ хранения больших двоичных объектов. Каждый BLOB-объект имеет URI, который выглядит какhttps://mystorage.blob.core.windows.net/somecontainer/someblob.jpg. Каждый BLOB-объект может быть до 200 ГБ. Вы можете легко сохранить URI блоба в SQL Azure вместе со связанными метаданными.

У вас есть выбор: вернуть изображение через службу WCF или предоставить прямой доступ. В первом случае вы в основном вызываете хранилище больших двоичных объектов из реализации службы WCF, чтобы получить большой двоичный объект, а затем вернуть его в ответе WCF.

С последним становится немного сложнее. У вас есть выбор: сделать BLOB-объекты публичными или частными. Публичные капли отлично подходят для логотипов, CSS и другой информации, для просмотра которой не требуются разрешения пользователя. Частные BLOB-объекты требуют использования вашего ключа учетной записи хранения (который вы никогда не должны выдавать). Однако, используя функцию под названием Подпись Shared Access, вы можете предоставить URL со специальным хешем в строке запроса, предоставляя временный доступ (до 1 часа). Базовый компромисс: если вы пройдете через службу WCF для загрузки двоичных файлов, ваш код будет работать так же, как и с любой другой службой WCF, но вам может потребоваться масштабирование до нескольких экземпляров виртуальной машины Azure для поддержки повышенной нагрузки. Если вы используете подписи общего доступа, вам, вероятно, потребуется изменить приложение WPF, чтобы захватить двоичный файл на основе URL-адреса. Однако это приведет к загрузке службы WCF, так как вам потребуется прямой доступ к хранилищу BLOB-объектов для загрузки двоичного содержимого (это масштабная мультитенантная система хранения, управляемая Windows Azure).

ВидетьВо для цены хранилища Windows Azure. При цене менее 13 центов за ГБ это значительно дешевле, чем SQL Azure.

 David Makogon19 мая 2012 г., 05:44
Взгляни на Windows AzureStorage Analytics. У вас есть регистрация (индивидуальный доступ) и метрики (ежечасные сводки). Ведение журнала включает каждый доступ к хранилищу таблиц / блобов / очередей (вы выбираете, что включить). Ведение журнала блогов включает подписи общего доступа.
 paparazzo19 мая 2012 г., 02:18
Отличный совет по подписи общего доступа. Через сервис у меня могут быть счетчики клиентов для выставления счетов. С подписью общего доступа есть ли способ отслеживать доступ по контейнерам?
 paparazzo19 мая 2012 г., 15:10
Спасибо, похоже, я могу использовать <требуемый-объект-ключ> для отслеживания по контейнеру.
 Pking18 мая 2012 г., 15:02
Благодарность! Хранение URI для blob-данных похоже на путь.

Ваш ответ на вопрос