Лучшая практика для запросов и сервиса WCF - PullRequest
3 голосов
/ 12 марта 2009

Что было бы лучше для следующего сценария:

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

Моя дилемма состоит в том, что для некоторых пользователей таблица будет относительно небольшой, и отправка ее клиенту может не иметь большого значения, но у других пользователей есть значительное количество строк, которые будут возвращены (более 15 тыс. .

Спасибо за любую информацию, которую вы можете принести.

Ответы [ 4 ]

3 голосов
/ 12 марта 2009

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

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

1 голос
/ 28 марта 2009

Тема, на которую вы наткнулись, является горячо обсуждаемой темой детализация на сервис-ориентированная архитектура . SOA похожа на мистическое млекопитающее, которое обсуждают слепые , но это не совсем так.

«Лучшая практика» этой тенденции - это грубые услуги, отход от объектно-ориентированных. Считайте, что ваши услуги - это обмен документами, в которые вы вкладываете все необходимое для достижения цели.

Как предположил Энди Уайт, если данные станут слишком большими, вам понадобится какая-то фильтрация или подкачка.

0 голосов
/ 13 марта 2009

Я бы предложил создать своего рода ViewModel на сервере, чтобы адаптировать данные для клиента. Это похоже на ваш второй вариант; однако, это не сделано построчно. Это пакетная операция на стороне сервера, которая подготавливает столбцы, поэтому для представления не требуется никакой специальной логики.

Мне кажется, что манипулирование данными на стороне клиента может быть сложным, потому что существует так много переменных - браузер, операционная система, вычислительная мощность. Вы управляете сервером, поэтому максимально используйте то, что вы контролируете.

Удачи.

0 голосов
/ 12 марта 2009

Похоже, задержка сети является проблемой здесь. Если у вас есть 100 продуктов и (скажем) время в 0,2 с, то для загрузки всех данных потребуется 20 секунд. Сведите к минимуму количество обращений в службу поддержки и, при необходимости, перенесите данные в более подходящую структуру в вашем клиенте.

Изменить: Другая идея, если это возможно в вашей ситуации, заключается в сжатии данных между вашим клиентом и службой. Загляните на это сообщение на форуме . Вы увидите большие выгоды, если будете разбираться с кучей XML.

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