通过流

时间:2017-05-19 12:41:22

标签: c# web-services rest wcf

我使用WCF编写了小型REST Web服务。这些Web服务将作为其他更专业的Web服务的外观。

所以它看起来像: Java App(客户端)< - >我的休息WCF Web服务< - > External_Web_Services

    [OperationContract]
    [WebInvoke(Method = "GET",
        ResponseFormat = WebMessageFormat.Json,
        BodyStyle = WebMessageBodyStyle.Bare,
        UriTemplate = "/GetListOfRecordByRootId/{userid}/{rootId}")]
    List<RecordDTO> GetListOfRecordByRootId(string userid, string rootId);

但它以这种方式起作用:

public List<TimeSeriesDto> GetListOfTimeseriesByDataSetId(string guid, string dataSetId, string numberOfSeries)
{
    Var client = this.OpenToExternalWebservice();
    return client.GetDataByRootId.ToList();
}

OpenToExternalWebservice打开与Web服务的连接。但我遇到了一个严重的问题 - &gt;数据量。 事实证明,外部Web服务非常缓慢且有限。唯一的结果是巨大的。 - 我收到了超过200MB的结果。

问题:是否可以通过流以chuncked方式返回数据? 让我们举一个小例子:

DataAtRoot有100 000条记录;

步骤1)我从外部Web服务下载前1000条记录

步骤2)收到后我将它们转换为:List。然后我将它打包到json usign DataContactJsonSerializer。

步骤3)将它们转换为Json之后我会通过流发送它,但我不想关闭连接。

步骤4)删除我发出的旧1000记录。

步骤5)返回步骤1(获取下一个1000条记录)

所以我的梦想是通过流发送许多记录列表:

ONE STREAM我将在收到下一部分数据后放置:

List<Record> Row Number 0-999
List<Record> Row Number 1000-1999
List<Record> Row Number 2000-2999
List<Record> Row Number 3000-3999

...

有可能吗?或许你有另一种解决方案吗?

请帮帮我。感谢您的任何答案

0 个答案:

没有答案