我在整个网络上进行了搜索,但找不到答案。
我们的应用程序中有两种方法:
a) 第一个返回HttpResponseMessage
里面有 1 个文件。它用StreamContent
.
response.Content = new StreamContent(memStream);
response.Content.Headers.ContentLength = memStream.Length;
b) 第二次返回HttpResponseMessage
包括压缩文件(压缩的多个文件)。它使用 ByteArrayContent。
response.Content = new ByteArrayContent(memStream.ToArray());
response.Content.Headers.ContentLength = memStream.ToArray().Length;
我只是想了解为什么在我们的应用程序中,当仅返回一个文件时使用 StreamContent,而在返回 zip 文件时使用 ByteArrayContent。是否存在某种逻辑,我可以在这两种情况下更改为使用相同的方式?
除了道听途说之外,没有任何东西可以支持我的假设,流应该比字节数组更有效(它们基本上一次使用较小的字节缓冲区)。
就网络应用程序而言,我相信流式传输变得更加高效,因为它允许消费者在页面可用时实际分段下载页面,而不是等待所有内容在内存中准备好。
但看起来你的应用程序正在使用MemoryStream
在这两种情况下,实际上来说,它可能没有太大区别(因为内存流是内存中字节数组的包装器......)。然而它正在呼唤memStream.ToArray()
两次,效率较低,因为它第二次将其内部缓冲区复制到新数组只是为了获取其长度(您可以直接使用memStream.Length
.
当然,在不知道应用程序的其余部分在做什么的情况下,也许它有理由在提供之前整理所有压缩数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)