C# 中的 Nodejs 等效于流式 IO,无需缓冲来自 requestContext 的内容
Nodejs equivalent in C# for streaming IO without buffering the content from requestContext
我们是否有从一个源流式传输到另一个目的地的等效方法,而不像我们在 nodeJs 中那样对其进行缓冲。
在 nodejs 中,它在读取数据块时会发出不同的事件,并且不会存储在内存缓冲区中。
我们在 C# 中有什么? .net 4.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 在评论中所写,缓冲总是需要的。
我通过将文件从 Amazon S3 流式传输到 ASP.NET Core
中的 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;
}
}
我的主控制器上有这个:
[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));
}
函数 BakaMime.GetMimeType(ext)
是一个从扩展中获取 MIME 类型的函数,仅供参考。
希望这有助于展示如何将数据从一个位置流式传输到另一个位置。
我们是否有从一个源流式传输到另一个目的地的等效方法,而不像我们在 nodeJs 中那样对其进行缓冲。
在 nodejs 中,它在读取数据块时会发出不同的事件,并且不会存储在内存缓冲区中。
我们在 C# 中有什么? .net 4.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 在评论中所写,缓冲总是需要的。 我通过将文件从 Amazon S3 流式传输到 ASP.NET Core
中的 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;
}
}
我的主控制器上有这个:
[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));
}
函数 BakaMime.GetMimeType(ext)
是一个从扩展中获取 MIME 类型的函数,仅供参考。
希望这有助于展示如何将数据从一个位置流式传输到另一个位置。