2

我有一个使用 Windows Azure 作为后端的 WPF 应用程序。我使用 SQL Azure 存储 WPF 应用程序通过 WCF 服务访问的数据。我需要能够在服务器端存储二进制文件(例如图像),并想知道存储这些文件的最佳方式是什么。我可以将文件放在 SQL 数据库中,但我不确定是否建议这样做。假设要存储大约 2000 个文件(总大小约为 1GB)。这些文件被频繁访问(最好缓存在客户端)。

有什么建议么?

4

2 回答 2

5

正如@Blam 指出的那样,Blob 存储是存储大型二进制对象的更好方法。每个 blob 都有一个看起来像https://mystorage.blob.core.windows.net/somecontainer/someblob.jpg. 每个 blob 最多可达 200GB。您可以轻松地将 blob 的 URI 以及相关元数据存储在 SQL Azure 中。

然后,您可以选择通过 WCF 服务返回图像或提供直接访问。对于前者,您基本上可以从 WCF 服务实现调用 Blob 存储以检索 Blob,然后在 WCF 响应中返回它。

使用后者,它变得有点棘手。您可以选择将 blob 设为公开还是私有。公共 blob 非常适合用于不需要用户权限即可查看的徽标、CSS 和其他信息。私有 blob 需要使用您的存储帐户密钥(您永远不应该提供)。但是,使用称为共享访问签名的功能,您可以在查询字符串上提供带有特殊哈希的 URL,提供临时访问(最多 1 小时)。基本权衡:如果您通过 WCF 服务下载二进制文件,您的代码将与任何其他 WCF 服务一样工作,但您可能会发现自己扩展到 Azure VM 的多个实例以支持增加的负载。如果您使用共享访问签名,您可能需要修改您的 WPF 应用程序以获取基于 URL 的二进制文件。但是,这会减轻 WCF 服务的负载,因为您随后将直接访问 Blob 存储以下载二进制内容(这是由 Windows Azure 管理的大规模多租户存储系统)。

请参阅此处了解 Windows Azure 存储定价。它每 GB 不到 13 美分,比 SQL Azure 便宜得多。

于 2012-05-18T12:27:41.550 回答
1

天蓝色斑点。与 blob 相比,SQL Azure 是昂贵的。

 http://www.windowsazure.com/en-us/home/features/storage/
于 2012-05-18T11:41:55.073 回答