首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用WCF服务作为Azure存储的端点来优化大型文件事务?

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

Stack Overflow用户
提问于 2012-03-11 16:25:47
回答 3查看 790关注 0票数 1

我有一个WCF服务作为Azure存储的端点。WCF REST服务处理文件的上传和下载,通常大小为5-10 MB。在处理流(都用于下载上载)时,字节位于Azure内存中,对吗?,即使将数据分成4MB块,这4MB仍保留在RAM内存中,直到上传完成为止。下载时,字节将保留到下载完成为止。所以,如果我有1000个用户同时下载一个文件,这就意味着Azure应该有4GB的内存来传输.。

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

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-13 22:04:04

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

  1. 设置WCF服务以使用流TransferMode
  2. 在代码中适当地处理流。例如,打开流到BLOB存储,然后以块的形式将WCF流复制到BLOB流,或者使用Stream.CopyTo()

大约6个月前,我试图实现这一点,但我无法使WCF流模式在我的情况下正常工作。它似乎是挑剔的工作,可能是不可能的HTTP端点。再说一次,也许我的WCF-fu太弱了。如果你有什么工作,请张贴在这里,因为我很想看到它。

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

票数 0
EN

Stack Overflow用户

发布于 2012-03-12 02:48:51

您可以使用为您处理所有的下载/上载优化。它具有REST、大小文件的不同“设置”、用于保持数据私有的共享访问密钥、http/https等。

对于下载文件,您可以通过resource (传入优化头)直接访问资源,或者使用StorageClient library...and,而不是通过您自己的服务处理它。

票数 0
EN

Stack Overflow用户

发布于 2012-03-13 15:57:40

Blob存储应该用于您描述的那么大的对象。Blob存储在一个独立的服务中运行,而不是Azure VM,并且具有很大的可伸缩性。描述如何构建blob存储以及如何在应用程序中实现blob存储的这是一篇文章。您没有提到您想要提供的文件类型,但是在某些情况下,使用这里描述的队列服务来减少数据负载可能是有用的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9656695

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档