Я видел все три подхода: разбитый на страницы , сохраняет и извлекает и массовый пуш .
Я думаю, что решение вашей проблемы в некоторой степени зависит от того, почему ваш набор результатов настолько велик и как он генерируется. Ваши результаты со временем растут, все они рассчитываются за один раз, а затем отправляются, хотите ли вы отправить их обратно, как только они у вас появятся?
Пейджинговый подход
По моему опыту, использование подхода разбиения на страницы целесообразно, когда клиенту требуется быстрый доступ к блокам результирующего набора разумного размера, аналогичным страницам в результатах поиска. Здесь учитывается общая болтливость вашего протокола, кэширование всего набора результатов между запросами страницы клиента и / или время обработки, необходимое для генерации страницы результатов.
Сохранение и получение
Хранение и извлечение полезно, когда результаты не имеют произвольного доступа, а размер результирующего набора увеличивается по мере обработки запроса. Вопросы, которые здесь необходимо рассмотреть, являются сложными для клиентов, и если вы можете предоставить пользователю частичные результаты или если вам необходимо рассчитать все результаты, прежде чем что-либо возвращать клиенту (подумайте о сортировке результатов из распределенных поисковых систем).
Массивный толчок
Массивный толчок почти наверняка ошибочен. Даже если клиенту нужна вся информация и его нужно поместить в монолитный набор результатов, я бы порекомендовал воспользоваться подходом WS-ReliableMessaging
(напрямую или через собственную упрощенную версию) и распределить результаты по частям. Делая это, вы
- гарантировать, что кусочки дойдут до клиента
- может отказаться от чанка, как только вы получите чек от клиента
- может уменьшить возможные проблемы с потреблением памяти из-за необходимости сохранять 5 МБ XML, DOM или чего-либо еще в памяти (при условии, что вы не обрабатываете результаты потоковым способом) на стороне сервера и клиента.
Как и другие говорили, ничего не делайте, пока не узнаете размер набора результатов, то, как он генерируется, и общую производительность, чтобы быть фактическими проблемами.