因此,我有这个WCF服务,为我提供PDF处理功能。现在,它正在接受并返回普通字节数组(byte[]),但这意味着它总是将所有内容读取到内存,即使它处理流,也必须将它们读入字节数组。问题是,这导致内存不足和堆碎片。
我有两个选择来优化它,这样它就不用占用那么多内存了:
哪一种选择在优化资源使用(内存、网络、文件系统)方面取得最佳效果?
发布于 2013-01-14 21:25:00
这是个老派,但我会用“来回传递UNC文件路径”来表示。幸运的是,我们开发人员在这种方法方面已经有了几年的经验(参见: Unix 7中的打印假脱机程序,大约在1980年左右)。
发布于 2013-01-14 22:40:46
我也会选择UNC文件路径选项。我在通过应用服务器将用户上传的文件从Web传输到SharePoint时使用了这种方法。Web服务器将文件路径传递给,然后应用服务器将该文件拿起并加载到SP中。通过web服务调用将文件作为字节数组传递到App是一个更好的选择。
如果您担心您的服务可能不总是进行清理,例如,如果有异常,您可以始终有一个备份计划,并使用一些简单的东西,比如powershell脚本和预定的任务来删除本应早些时候删除的旧文件。
不过,要考虑的一件事是文件名冲突的可能性。在我们的示例中,两个用户上传同名的单独文件是可行的,因此我们必须确保将正确的文件放入正确的SP文件夹中。我们通过让web服务器本地存储文件,用GUID名称重命名文件,然后将新名称传递给App来解决这个问题。原始文件名作为元数据发送到App,以便在加载到SP之前将文件重命名为原始名称。
https://stackoverflow.com/questions/14326609
复制相似问题