我有一个使用的Windows Azure作为后端WPF应用程序。 我使用SQL Azure的存储由WPF应用程序通过WCF服务访问的数据。 我需要能够存储二进制文件(例如图像)的服务器端,不知什么是最好的方式来存储这些文件。 我可以把文件中的SQL数据库,但我不知道这是推荐。 让我们假设约2000文件存储(〜1GB的总大小)。 这些文件被频繁访问(最好是缓存在客户端上)。
有什么建议?
我有一个使用的Windows Azure作为后端WPF应用程序。 我使用SQL Azure的存储由WPF应用程序通过WCF服务访问的数据。 我需要能够存储二进制文件(例如图像)的服务器端,不知什么是最好的方式来存储这些文件。 我可以把文件中的SQL数据库,但我不知道这是推荐。 让我们假设约2000文件存储(〜1GB的总大小)。 这些文件被频繁访问(最好是缓存在客户端上)。
有什么建议?
作为@Blam指出,Blob存储是存储大型二进制对象一个更好的方法。 每个斑点具有URI看起来像https://mystorage.blob.core.windows.net/somecontainer/someblob.jpg
。 每个斑可高达200GB。 您可以轻松地存储一个blob的URI在SQL Azure中,与相关的元数据。
这样,您就既可以通过WCF服务返回的图像或提供直接访问的选择。 对于前者,你基本上做出Blob存储一个电话,从您的WCF服务实现,检索BLOB,然后在WCF响应返回。
对于后者,它变得有点棘手。 你必须使斑点公共或私人的选择。 公共斑点是伟大的标志,CSS等信息,不需要用户权限查看。 私人斑点需要使用您的存储账户密钥(你不应该放弃了)的。 然而,使用一种叫做共享访问签名功能,可以为用户提供的查询字符串特殊哈希的URL,提供临时访问(最多1小时)。 基本的权衡:如果你通过二进制文件下载WCF服务,您的代码将工作,因为它会与任何其他WCF服务,但你会发现自己向外扩展到您的Azure的虚拟机的多个实例,以支持增加的负载。 如果您使用共享访问签名去,你可能需要修改你的WPF应用程序抢基于URL的二进制文件。 然而,这将需要加载了你的WCF服务,如你随后访问Blob存储直接下载二进制内容(这是由Windows Azure的管理大规模的大规模多租户存储系统)。
见这里的Windows Azure存储定价。 在每GB下13美分,这比SQL Azure的显著便宜。
Azure的斑点。 相比斑点SQL Azure是昂贵的。
http://www.windowsazure.com/en-us/home/features/storage/