我有一个使用 Windows Azure 作为后端的 WPF 应用程序。我使用 SQL Azure 存储 WPF 应用程序通过 WCF 服务访问的数据。我需要能够在服务器端存储二进制文件(例如图像),并想知道存储这些文件的最佳方法是什么。我可以将文件放入 SQL 数据库,但我不确定是否建议这样做。假设要存储大约 2000 个文件(总大小约为 1GB)。这些文件被频繁访问(最好缓存在客户端)。
有什么建议么?
正如 @Blam 指出的,Blob 存储是存储大型二进制对象的更好方法。每个 blob 都有一个 URI,如下所示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 管理的大规模多租户存储系统)。
See hereWindows Azure 存储定价。每 GB 价格低于 13 美分,比 SQL Azure 便宜得多。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)