2

我有一个项目,我应该使用外部 WCF 服务,其方法如下所示:

Items catalogItems = externalClient.getCatalogItems(auth, idCatalog, 1, 100);

在调用 getCatalogItems 服务方法后,我应该以这种方式将返回的项目数组转换为原始 SOAP 消息:

Message response = Message.CreateMessage(MessageVersion.Default, ReplyAction_GetCatalogItems, catalogItems);

getCatalogItems 服务方法中的最后 2 个参数指定应在每次调用中获取的数据块的大小。例如,如果我们有 1050 条记录,所有这些记录都应该以 100 的块获取 10 次,而以 50 的块获取 1 次。

我知道我应该阅读数据,直到它们可用。我有两个问题:

  1. 我怎么知道我应该在哪里继续阅读?例如,如果我已经阅读了 100 条记录的第一部分,我如何知道 reader 的当前位置在哪里?

  2. 我怎么知道我什么时候到达终点?

4

1 回答 1

1

一种方法是让客户端负责记住状态(即客户端当前所在的页码)。

因此,您可以更改方法调用以包括页码和每页参数的项目:

Items catalogItems = externalClient.getCatalogItems(auth, idCatalog, pageNumber, itemsPerPage);

然后,该服务基本上可以根据 pageNumber 和 itemsPerPage 值选择一组项目,并且它不需要保存状态。(注意:如果您使用数据库作为项目的存储库,这可以很容易地转换为选择查询)

您也可以更改返回值以包括项目总数:示例:

CatalogResponse respone = externalClient.getCatalogItems(auth, idCatalog, pageNumber, itemsPerPage);

public class CatalogResponse 
{
   private _totalItems;
   private _items;
}

这也为客户端提供了灵活性来确定每次调用中要接收的项目块,并为最终用户选择页面大小提供了灵活性。

于 2012-10-24T10:55:00.030 回答