Как «получить» большой список товаров с сервера? - PullRequest
0 голосов
/ 19 июня 2011

У меня есть WCF-сервер и клиент Silverlight.Клиент вызывает сервер, чтобы получить список элементов.

В некоторых случаях список предметов очень большой, и я хочу иметь возможность получать предметы более чем за один звонок -

  • Call1 => получить предметы 0-100
  • Call2 (если пользователь нажимает на кнопку «еще») => получить элемент 101-200
  • .
  • .
  • Call N=> получить 100 * n - 100 * (n + 1) предметов.

Как я могу это сделать?

Есть ли какой-нибудь «легкий» шаблон для этого?

Спасибо.

Ответы [ 3 ]

2 голосов
/ 19 июня 2011

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

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

, позволяющий клиенту явно сказать, что он хочет, является более надежным и масштабируемым решением и имеет простую реализацию LINQ с помощью Skip and Take

1 голос
/ 19 июня 2011

Как упоминает Ричард, подкачка является распространенным вариантом.Кроме того, возвращение результатов в виде потока (и не буферизованного массива byte [], а фактического потока - WCF имеет некоторые предостережения относительно использования потока) в целом будет наиболее эффективным.Также, как отметил marc_s, локальное хранилище Silverlight невелико, поэтому помните об этом недостатке.

0 голосов
/ 20 июня 2011

Вероятность того, что пользователь "потребит" более 100 элементов за один раз, очень мала, даже если элементы имеют очень мало деталей, возможно, добавьте навигацию (категории и т. Д.) В качестве фильтров к данным, чтобы пользователь получал только20 или около того элементов, которые им действительно интересны. Представления в виде дерева могут быть очень удобны для разбиения списков на более мелкие списки, которые более актуальны для пользователей, но есть много способов сделать это ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...