在API之间传递MemoryStream / Streams

时间:2018-05-19 16:25:47

标签: c# asp.net-mvc rest memory-management stream

我有一个调用另一个API的Web API项目,第二个API将返回Stream或MemoryStream,而接收API获取Stream并使用它来处理/刷新文件给用户。

问题是,如果在第二个API上填充了MemoryStream或Stream,问题是如果它被处理掉,那么Stream就不能在接收端使用(因为它会被丢弃?),如果它在接收端处理?。

我想更多地了解这一点,并希望对它有任何意见。

或者我应该发送一个字节数组,该流的内容将生成一个文件,该文件具有超过60万条特定文件格式的记录。

1 个答案:

答案 0 :(得分:1)

您不应该处理提供给您的流,而您自己也没有创建。由呼叫者决定何时完成使用它。他们可能会在using语句中将构造函数包装起来,所以你不想过早地处理它。

一个字节数组可能是一个糟糕的主意,因为你最终将整个事物保存在RAM中,而Stream(可以顾名思义)流式传输而不会立即读取整个事物。