Пейджинг на стороне сервера через веб-сервис или WCF - PullRequest
0 голосов
/ 29 марта 2012

Я реализовал разбиение на страницы для большого набора данных в приложении, позволяя пользователю вводить число «размер страницы» из числа записей, которые они хотят вернуть. Это передается в хранимую процедуру вместе с номером строки последней записи и извлекается с помощью SELECT ROW_NUMBER () .. и т. Д.

Моя проблема в том, что этот подход не позволяет пользователю фильтровать или осуществлять поиск по всему набору данных. Когда они фильтруют на стороне клиента, они могут фильтровать или сортировать только 100 или около того строк, которые они получили.

Есть ли способ разрешить такой пейджинг на стороне сервера? Итак, может быть, сохранить сторону сервера данных и выполнить там фильтрацию или сортировку и вернуть порции данных, через которые они могут пролистать страницы? Причина этого заключается в том, что если они выбирают для извлечения всего набора данных, существует значительное ожидание, так как это большое количество записей.

Приложение winforms использует стандартный мыльный веб-сервис, но я могу при необходимости реализовать сервис WCF.

Спасибо за любые советы или ссылки! Я видел несколько способов сделать это, но не уверен, что это лучший способ для мыльного веб-сервиса.

Ответы [ 2 ]

0 голосов
/ 29 марта 2012

Вы можете управлять этим путем получения полного набора данных из sql в таблицу данных на сервере (в службе). Затем путем объединения номера страницы, размера страницы, направления сортировки и фильтра строки, которые можно установить в качестве параметроввеб-метод, вы отправите обратно только необходимые строки.

Это будет работать нормально, если скорость подключения к SQL не является проблемой.

0 голосов
/ 29 марта 2012

Мы столкнулись с подобной проблемой, используя asp.net/wcf.Наилучшим подходом, который мы получили, было использование сетки на стороне клиента, например, jqgrid и jquery (ajax), для вызова веб-службы, возвращающей данные (в формате json).Однако, будучи разработчиком веб-формы asp.net, нам изначально было не по себе.

Альтернатива, о которой вы говорите, - хранить данные на сервере (или время от времени в сеансе), но это действительно зависит от размера данных.

Кроме того, в одном месте у нас есть данные, которые не будут меняться очень часто, вы можете кэшировать их до определенного уровня или сохранять XML-файл на сервере и т. Д. После каждого дня мы обновляем кеш через обратную сторону.обработка конца.

Надеюсь, это поможет.

...