gpt4 book ai didi

asp.net-web-api - StreamContent 和 ByteArrayContent webApi 的差异

转载 作者:行者123 更新时间:2023-12-03 05:51:39 34 4
gpt4 key购买 nike

我查遍了整个网络,但找不到答案。我们的应用程序中有两种方法:

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,而在返回压缩文件时使用 ByteArrayContent。是否存在某种逻辑,我可以在这两种情况下更改为使用相同的方式?

最佳答案

除了道听途说之外,没有任何东西可以支持我的假设,流应该比字节数组更有效(它们基本上一次处理较小的字节缓冲区)。

就网络应用程序而言,我相信流式传输变得更加高效,因为它允许消费者在页面可用时实际分段下载页面,而不是等待所有内容在内存中准备好。

但是看起来您的应用程序在这两种情况下都使用了 MemoryStream ,因此实际上来说它可能没有太大区别(因为内存流是字节数组的包装器...... 。在内存中)。然而,它调用了 memStream.ToArray() 两次,效率较低,因为它第二次将其内部缓冲区复制到新数组只是为了获取其长度(您可以直接使用 调用) memStream.Length.

当然,在不知道应用程序的其余部分在做什么的情况下,也许它有理由在提供数据之前整理所有压缩数据。

关于asp.net-web-api - StreamContent 和 ByteArrayContent webApi 的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40044468/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com