Не могли бы вы порекомендовать лучшие практики для разработки распределенных приложений с использованием WPF на большом объеме данных? - PullRequest
1 голос
/ 23 февраля 2011

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

  1. Может быть несколько источников данных, которые могут быть объединены на стороне клиента.
  2. Данные на стороне сервера могут быть украшены новыми бизнес-данными.
  3. Приложение должно быть в состоянии обрабатывать очень большой объем данных (сотни тысяч записей в сетке).
  4. Несколько клиентов должны быть синхронизированы. То есть, если клиент меняет объект, который в данный момент отображается на другом клиенте - другой клиент должен быть уведомлен об этом.

Буду признателен за любую ссылку на книги / статьи / блоги / примеры, в которых обсуждаются все или часть вопросов.

Я больше изучаю модель домена MVVM +.

Спасибо за вашу помощь и время
Рон

1 Ответ

1 голос
/ 23 февраля 2011

Я могу попросить вас подтвердить необходимость вашего (3) балла.Действительно ли логике приложения нужен весь этот большой объем данных на стороне клиента?Если вы можете уменьшить это до минимума и в DataGrid хранятся состояния положения прокрутки / фильтрации / поиска, то вы всегда можете довольно быстро получить следующий набор результатов с сервера на нумерацию страниц или триггер прокрутки.Конечно, это намного больше работы как на стороне клиента, так и на стороне сервера, чем выполнение Select * from Table в качестве результата WCF и привязка его к DataGrid :).Я хочу сказать, что вам может потребоваться подумать о виртуализации данных на стороне сервера, а не о клиенте, чтобы вы не доставляли нежелательные данные, на которые пользователь никогда не будет смотреть.

Подумайте о результатах поиска Google, браузер получаетлишь небольшая часть этих миллионов результатов, но сервер знает контекст.Поэтому я бы порекомендовал вам изучить эту идею и уменьшить сложности и работу на стороне клиента.Сделайте данные по сети как можно меньше и выполняйте вызовы к серверу как асинхронные фрагменты небольшого объема данных.Я уверен, что вы получите гораздо лучшие результаты.

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

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