Nodejs在C#中相当于流式IO,无需缓冲来自requestContext的内容

Nodejs在C#中相当于流式IO,无需缓冲来自requestContext的内容,c#,asp.net-mvc,asp.net-core,.net-4.5,asp.net-core-2.0,C#,Asp.net Mvc,Asp.net Core,.net 4.5,Asp.net Core 2.0,我们是否有从一个源到另一个目的地的流传输的等效方法,而无需像在nodeJs中那样对其进行缓冲 在nodejs中,它在读取数据块时发出不同的事件,并且不存储在内存缓冲区中 我们在C#有什么。NET4.5还是在.netcore2中 带有管道选项的Nodejs示例: var connector = http.request(options, function(res) { res.pipe(response, {end:true});//tell 'response' end=true });

我们是否有从一个源到另一个目的地的流传输的等效方法,而无需像在nodeJs中那样对其进行缓冲

在nodejs中,它在读取数据块时发出不同的事件,并且不存储在内存缓冲区中

我们在C#有什么。NET4.5还是在.netcore2中

带有管道选项的Nodejs示例:

 var connector = http.request(options, function(res) {
  res.pipe(response, {end:true});//tell 'response' end=true
});
request.pipe(connector, {end:true});

正如@Tseng在评论中所写的,总是需要缓冲。 我通过将文件从AmazonS3流式传输到ASP.NETCore中的HTTP请求来做类似的事情

    public static async Task<Stream> GetFile(string FileId)
    {
        try
        {
            TransferUtilityOpenStreamRequest request = new TransferUtilityOpenStreamRequest();
            request.BucketName = Config.S3BucketName;
            request.Key = FileId;

            return await S3Utility.OpenStreamAsync(request);
        }
        catch (Exception e)
        {
            if (Globals.Config.IsDebug)
                Console.WriteLine("[S3] " + e.ToString());

            return null;
        }
    }
公共静态异步任务GetFile(字符串FileId)
{
尝试
{
TransferUtilityOpenStreamRequest=新的TransferUtilityOpenStreamRequest();
request.BucketName=Config.S3BucketName;
request.Key=FileId;
返回wait S3Utility.OpenStreamAsync(请求);
}
捕获(例外e)
{
if(Globals.Config.IsDebug)
Console.WriteLine(“[S3]”+e.ToString());
返回null;
}
}
我的主控制器上有这个:

[Route("/files/{file_id}.{ext?}")]
public async Task<IActionResult> GetFile(string file_id, string ext)
{
  return File(await Globals.GetFile(file_id), BakaMime.GetMimeType(ext));
}
[路由(“/files/{file_id}.{ext?}”)]
公共异步任务GetFile(字符串文件\u id,字符串ext)
{
返回文件(wait Globals.GetFile(File_id),BakaMime.GetMimeType(ext));
}
函数
BakaMime.GetMimeType(ext)
是一个从扩展中获取mime类型的函数,仅供参考


希望这有助于展示如何将数据从一个位置流到另一个位置。

同样的事情:
var readableStream=File.OpenRead(“file1.txt”);var writeablestream=File.OpenWrite(“file2.txt”);readableStream.CopyTo(writeablestream)
总是以某种方式需要缓冲,在nodejs示例中,它仅通过管道方法隐式完成。读取流中的数据必须始终在内存中读取,然后才能写入其他地方,即使读取缓冲区只有4或8 kb