我有一个使用Windows Azure作为后端的WPF应用程序。我使用SQL Azure来存储WPF应用程序通过WCF服务访问的数据。我需要能够存储服务器端的二进制文件(例如图像),并想知道存储这些文件的最佳方法是什么。我可以将文件放在SQL数据库中,但我不确定是否建议这样做。让我们假设存储大约2000个文件(总大小约为1GB)。这些文件经常被访问(最好在客户端上缓存)。
有什么建议吗?
答案 0 :(得分:5)
正如@Blam所指出的,Blob Storage是存储大型二进制对象的更好方法。每个blob都有一个看起来像https://mystorage.blob.core.windows.net/somecontainer/someblob.jpg
的URI。每个blob可能高达200GB。您可以在SQL Azure中轻松存储blob的URI以及相关的元数据。
然后您可以选择通过WCF服务返回图像或提供直接访问。对于前者,您基本上会从WCF服务实现调用blob存储,以检索blob,然后在WCF响应中返回它。
对于后者,它有点棘手。您可以选择公开或私有blob。公共blob非常适用于徽标,CSS和其他不需要用户权限查看的信息。私有blob需要使用您的存储帐户密钥(您永远不应该给出)。但是,使用名为共享访问签名的功能,您可以在查询字符串上提供带有特殊哈希的URL,从而提供临时访问(最多1小时)。基本权衡:如果您通过WCF服务进行二进制文件下载,您的代码将像使用任何其他WCF服务一样工作,但您可能会发现自己扩展到Azure VM的多个实例以支持增加的负载。如果您使用共享访问签名,则可能需要修改WPF应用程序以根据URL获取二进制文件。但是,这会降低您的WCF服务负担,因为您将直接访问Blob Storage以下载二进制内容(这是一个由Windows Azure管理的大规模多租户存储系统)。
有关Windows Azure存储定价的信息,请参阅here。每GB不到13美分,它比SQL Azure便宜得多。
答案 1 :(得分:1)
Azure blob。与blob相比,SQL Azure价格昂贵。
http://www.windowsazure.com/en-us/home/features/storage/