簡體   English   中英

如何分塊讀取大量數據?

[英]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次。

我知道我應該閱讀數據,直到它們可用為止。 我有兩個問題:

  1. 我怎么知道我應該繼續閱讀? 例如,如果我已經閱讀了100條記錄的第一部分,那么我如何知道閱讀器的當前位置在哪里?

  2. 我怎么知道什么時候結束?

一種方法是讓客戶端負責記住狀態(即客戶端當前所在的頁碼)。

因此,您可以更改方法調用以包括頁碼和每頁項參數:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM