首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用服务处理大型文件

调用服务处理大型文件
EN

Stack Overflow用户
提问于 2013-01-14 21:03:58
回答 2查看 76关注 0票数 1

因此,我有这个WCF服务,为我提供PDF处理功能。现在,它正在接受并返回普通字节数组(byte[]),但这意味着它总是将所有内容读取到内存,即使它处理流,也必须将它们读入字节数组。问题是,这导致内存不足和堆碎片。

我有两个选择来优化它,这样它就不用占用那么多内存了:

  • 使用流。虽然很诱人,但我可能不得不将其保存到磁盘上,以便由PDF工具包进行处理。这也是一个非常复杂的策略,因为绑定的数量有限,对双工流和参数的数量也有限制。
  • 来回传递UNC文件路径。看起来很有希望,但事情复杂,因为有人需要清理文件后,使用。

哪一种选择在优化资源使用(内存、网络、文件系统)方面取得最佳效果?

EN

回答 2

Stack Overflow用户

发布于 2013-01-14 21:25:00

这是个老派,但我会用“来回传递UNC文件路径”来表示。幸运的是,我们开发人员在这种方法方面已经有了几年的经验(参见: Unix 7中的打印假脱机程序,大约在1980年左右)。

票数 3
EN

Stack Overflow用户

发布于 2013-01-14 22:40:46

我也会选择UNC文件路径选项。我在通过应用服务器将用户上传的文件从Web传输到SharePoint时使用了这种方法。Web服务器将文件路径传递给,然后应用服务器将该文件拿起并加载到SP中。通过web服务调用将文件作为字节数组传递到App是一个更好的选择。

如果您担心您的服务可能不总是进行清理,例如,如果有异常,您可以始终有一个备份计划,并使用一些简单的东西,比如powershell脚本和预定的任务来删除本应早些时候删除的旧文件。

不过,要考虑的一件事是文件名冲突的可能性。在我们的示例中,两个用户上传同名的单独文件是可行的,因此我们必须确保将正确的文件放入正确的SP文件夹中。我们通过让web服务器本地存储文件,用GUID名称重命名文件,然后将新名称传递给App来解决这个问题。原始文件名作为元数据发送到App,以便在加载到SP之前将文件重命名为原始名称。

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

https://stackoverflow.com/questions/14326609

复制
相关文章

相似问题

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