0

场景:我被赋予了一项任务,该任务涉及创建一个 Web API,该 API 将在 url 中采用日期参数,如下所示:

https://server/controllerrouting/payments?requestdate=08/13/2016 

此 api 将调用一个存储过程,该过程使用 select 语句中 url 中的日期。然后,api 会将结果集作为 json 响应返回给调用应用程序,该应用程序不是面向前端的应用程序。

问题:返回从存储过程执行返回的结果集通常是没有问题的。但是,预计结果集可能会返回多达 350,000 条记录,每条记录大约 350 字节。

可能的设计方案?

我正在研究利用PushStreamContent该类并将数据推送到流中供客户端使用。

问题

在执行存储过程并使用 读取结果集DataReader后,我可以在逻辑中将每条记录推送到流吗?

就像是 :

if (reader.HasRows)
{
     while (reader.Read())
     {
         1.format record 
         2.serialize to json
         3.push record to stream
    }
}
else
{
   return msg("No rows found");
}

reader.Close();

这样做的正确方法是什么?是否可以只返回客户端的大型 json 对象而不必担心必须流式传输数据?我是否需要考虑使用存储过程进行分页,或者只一次检索所有记录,然后一次只将一个块流式传输到客户端?我很难理解解决这种情况的最佳方法是什么。

4

0 回答 0