我想你已經是相當普遍實現幾個選項。如果您需要將10000條記錄返回給客戶端,則可以在MVC應用程序中對其進行管理。如果您使用Entity Framework和Linq,則可以編寫業務邏輯,每當用戶單擊下一個按鈕時就發回100行。這將保持傳輸到客戶端很小,甚至可以保持從Web服務器到SQL服務器的呼叫很小。
如果您不想讓用戶單擊下一個按鈕(即分頁),但希望做到無限滾動樣式,那麼只需執行相同的操作,就像用戶不斷滾動一樣,只需一直調用Ajax方法一次發回100行。
Web服務器和數據庫服務器是不會嗆到10000條記錄;它會窒息到客戶端。即使你在Signal R中打開一個套接字,我想你應該問自己我是否真的需要一次向客戶端推送10,000行?
想想在手機上的Twitter的應用程序,他們爲您滾動數據發送給你,他們沒有一次發送這一切。這有幫助嗎?
更新的基礎上就其直接的SQL
這裏您的評論是在SQL做分頁的簡單版本的例子:
DECLARE @intStartRow int;
DECLARE @intEndRow int;
SET @intStartRow = (@intPage -1) * @intPageSize + 1;
SET @intEndRow = @intPage * @intPageSize;
WITH blogs AS
(SELECT strBlogName,
ROW_NUMBER() OVER(ORDER BY intID DESC) as intRow,
COUNT(intID) OVER() AS intTotalHits
FROM tblBlog)
SELECT strBlogName, intTotalHits FROM blogs
WHERE intRow BETWEEN @intStartRow AND @intEndRow
來源:http://joelabrahamsson.com/my-favorite-way-to-do-paging-with-t-sql/
有什麼要求用於顯示數據?是否有原因導致您無法使用具有分頁功能的表格(網格),以便用戶可以調整返回到10,25,50或100行的數據量,然後單擊箭頭來回翻頁? – Flea
我可以使用一個網格,但問題是,我正在尋找一種方法來發送數據包,而不是一次填充數據結構,然後將它傳遞給客戶端。之前並沒有真正做到過,所以我期待看看web應用程序的正常過程是什麼,但我可能只是依靠SignalR併爲此付出一些代價。 – eaglei22