[英]How to read big amount of data in chunks?
我有一個項目,在這里我應該使用具有以下方法的外部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次。
我知道我應該閱讀數據,直到它們可用為止。 我有兩個問題:
我怎么知道我應該繼續閱讀? 例如,如果我已經閱讀了100條記錄的第一部分,那么我如何知道閱讀器的當前位置在哪里?
我怎么知道什么時候結束?
一種方法是讓客戶端負責記住狀態(即客戶端當前所在的頁碼)。
因此,您可以更改方法調用以包括頁碼和每頁項參數:
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;
}
這也為客戶端提供了靈活性,使其可以確定每次呼叫中要接收的項目塊,並為最終用戶選擇頁面大小提供了靈活性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.