Rest 如何使用WCF服务作为Azure存储的端点来优化大型文件事务?

Rest 如何使用WCF服务作为Azure存储的端点来优化大型文件事务?,rest,azure,azure-storage,azure-storage-blobs,azure-web-roles,Rest,Azure,Azure Storage,Azure Storage Blobs,Azure Web Roles,我有一个WCF REST服务作为Azure存储的端点。WCF REST服务处理通常大小为5-10 MB的文件的上载和下载处理流时(无论是下载还是上载),字节都在Azure VM RAM内存中,对吗?即使上载时数据被拆分为4 MB块,这些4 MB也会保留在RAM内存中,直到上载完成。对于下载,保留字节直到下载完成因此,如果我有1000个用户同时下载一个文件,这意味着Azure VM应该有4 GB RAM用于传输。 是否有办法对此进行优化?如果我假设数据保存在VM机器RAM中直到操作完成,请纠正我的

我有一个WCF REST服务作为Azure存储的端点。WCF REST服务处理通常大小为5-10 MB的文件的上载和下载处理流时(无论是下载还是上载),字节都在Azure VM RAM内存中,对吗?即使上载时数据被拆分为4 MB块,这些4 MB也会保留在RAM内存中,直到上载完成。对于下载,保留字节直到下载完成因此,如果我有1000个用户同时下载一个文件,这意味着Azure VM应该有4 GB RAM用于传输。


是否有办法对此进行优化?如果我假设数据保存在VM机器RAM中直到操作完成,请纠正我的错误。我应该使用Microsoft的Azure REST服务吗?在传输完成之前,该服务在哪里保存数据?

您可以使用Windows Azure Blob存储来处理所有下载/上载优化。它有一个RESTAPI、大小文件的不同“设置”、保持数据私有的共享访问密钥、http/https等


要下载文件,您可以通过REST URL(传入优化标题)直接访问资源,或使用StorageClient库…而不是通过您自己的服务进行处理。

Blob存储应用于您描述的大小的对象。Blob存储运行在与Azure VM不同的单独服务中,并且可大规模扩展。这描述了blob存储是如何架构的,以及如何在应用程序中实现它。您没有提到要提供的文件类型,但在某些情况下,使用a来减少数据负载可能会很有用。

我认为您可以通过做一些事情来避免将所有数据同时存储在内存中

  • 将WCF服务设置为使用流媒体
  • 在代码中适当地处理流。即,将流打开到BLOB存储,然后将WCF流分块复制到BLOB流,或使用
  • 大约6个月前,我试图实现这个功能,但在我的情况下,我无法使WCF流模式正常工作。这似乎很难开始工作,而且可能无法使用HTTP端点。再说一次,也许我的WCF fu太弱了。如果你确实得到了一些工作,请张贴回这里,因为我非常想看到它

    请注意,如果您有多个客户端同时下载相同的数据,则可以在内存中保留一个副本,并将其独立地流式传输到每个客户端。但我不相信这种方法与我刚才描述的方法是兼容的——你必须这样做或那样做