Am văzut toate cele trei abordări, paged , stocați și recuperați și împingeți masiv .
Cred că soluția la problema dvs. depinde într-o oarecare măsură de motivul pentru care setul de rezultate este atât de mare și de modul în care este generat. Rezultatele dvs. cresc de-a lungul timpului, sunt calculate la o dată și apoi împinse, doriți să le redați înapoi de îndată ce le aveți?
Abordarea de vizionare
Din experiența mea, folosirea unei abordări de paginare este potrivită atunci când clientul are nevoie de acces rapid la bucăți rezonabile ale setului de rezultate similar cu paginile din rezultatele căutării. Considerațiile aici sunt discuția generală a protocolului dvs., cache-ul întregului set de rezultate dintre solicitările de pagini client și/sau timpul de procesare necesar pentru a genera o pagină de rezultate.
Stocare și recuperare
Stocarea și preluarea este utilă atunci când rezultatele nu sunt accesate aleatoriu, iar setul de rezultate crește în mărime în timp ce interogarea este procesată. Problemele care trebuie luate în considerare aici sunt complexitatea pentru clienți și dacă puteți oferi utilizatorilor rezultate parțiale sau dacă trebuie să calculați toate rezultatele înainte de a returna ceva clientului (gândiți sortarea rezultatelor din motoarele de căutare distribuite).
Push masiv
Abordarea masivă a împingerii este aproape sigur o eroare. Chiar dacă clientul are nevoie de toate informațiile și trebuie să fie împins într-un set de rezultate monolitic, aș recomanda abordarea WS-ReliableMessaging
(fie direct, fie prin versiunea simplificată) rezultatele tale. Făcând asta, tu
- asigurați-vă că piesele ajung la client
- poate elimina bucata imediat ce primiți o chitanță de la client
- poate reduce problemele posibile cu consum de memorie din necesitatea de a păstra 5MB de XML, DOM sau orice altceva în memorie (presupunând că nu procesați rezultatele într-un mod de streaming) pe server și pe cele ale clientului. >
După cum au spus și alții, nu faceți nimic până nu cunoașteți dimensiunea setată a rezultatelor, modul în care acestea sunt generate și performanța generală a problemelor actuale.