Как отметил @Blam, хранилище BLOB-объектов — гораздо лучший способ хранения больших двоичных объектов. У каждого большого двоичного объекта есть URI, который выглядит как https://mystorage.blob.core.windows.net/somecontainer/someblob.jpg
. Каждый большой двоичный объект может иметь размер до 200 ГБ. Вы можете легко сохранить URI большого двоичного объекта в SQL Azure вместе со связанными метаданными.
Затем у вас есть выбор: либо вернуть изображение через службу WCF, либо предоставить прямой доступ. В первом случае вы в основном делаете вызов к хранилищу больших двоичных объектов из реализации службы WCF, чтобы получить большой двоичный объект, а затем возвращаете его в ответе WCF.
С последним немного сложнее. Вы можете сделать большие двоичные объекты общедоступными или частными. Общедоступные большие двоичные объекты отлично подходят для логотипов, CSS и другой информации, для просмотра которой не требуются разрешения пользователя. Частные большие двоичные объекты требуют использования ключа вашей учетной записи хранения (который вы никогда не должны выдавать). Однако, используя функцию под названием Подпись общего доступа, вы можете предоставить URL со специальным хэшем в строке запроса, предоставляя временный доступ (до 1 часа). Основной компромисс: если вы используете службу WCF для загрузки двоичных файлов, ваш код будет работать так же, как и с любой другой службой WCF, но вы можете масштабироваться до нескольких экземпляров виртуальной машины Azure для поддержки повышенной нагрузки. Если вы используете подписи общего доступа, вам, вероятно, потребуется изменить приложение WPF, чтобы получить двоичный файл на основе URL-адреса. Однако это разгрузит вашу службу WCF, так как вы будете напрямую обращаться к хранилищу BLOB-объектов для загрузки двоичного содержимого (которое представляет собой крупномасштабную многопользовательскую систему хранения, управляемую Windows Azure).
См. здесь цены на хранилище Windows Azure. При цене менее 13 центов за ГБ это значительно дешевле, чем SQL Azure.
person
David Makogon
schedule
18.05.2012