как обрабатывать большие списки для возврата операции в SOA - PullRequest
0 голосов
/ 27 марта 2011

Я пытаюсь следовать подходу SOA для реализации некоторых сервисов.Я использую WCF, и я хотел знать, каков наилучший подход / практика для обработки длинных списков в операциях.Например, у меня есть список пользователей, чтобы вернуться в пользовательский интерфейс (настольный клиент, а не веб).Если я верну каждую отдельную запись, список может стать слишком большим для передачи от службы клиенту, и может произойти много ошибок (например, превышение размера сообщения или разрыв соединения).справиться с подобным сценарием?

Большое спасибо, Алекс,

Ответы [ 3 ]

0 голосов
/ 28 марта 2011

Нужны ли клиенту все данные (но вы считаете, что одно сообщение слишком велико) или ему нужна только часть данных?

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

Если пользователю нужны все данные, тогда «классическим» решением было бы вернуть все данные. Однако это может быть проблематично, если клиент является тонким клиентом, таким как веб-приложение.

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

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

0 голосов
/ 30 марта 2011

Спасибо всем за отзыв.

Я думаю, мне нужно публиковать результаты. Сервис для общего пользования. Он предназначен для использования любым приложением (в виде API).

Таким образом, наиболее подходящим подходом должно быть получение данных по частям / страницам. Я могу прочитать до определенного количества строк в моем клиентском приложении (WPF).

Alex.

0 голосов
/ 27 марта 2011

Если у вас есть представление о том, сколько вы собираетесь отправить, вы можете просто увеличить пределы размера сообщения в клиентском app.config, а затем сходить с ума. Но вам не следует отправлять 50 МБ записей о клиентах каждому клиенту без причины.

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

...