C # WCF - Шаблон издателя / подписчика: отображение данных на нескольких формах - PullRequest
0 голосов
/ 04 августа 2010

Сценарий

  • Итак, я взял пример распределенное приложение в WCF, которое реализует шаблон Observer.
  • Я поместил серверную сторону в Служба Windows и добавил некоторые классы, чтобы сделать некоторые вычисления, который я намерен передать результаты назад к клиенту.

Решение состоит из 3 проектов.

  • Служба Windows на стороне сервера - обрабатывает все данные / выполняет вычисления.
  • Библиотека классов общих объектов.
  • Клиентское приложение Windows Forms.

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

На стороне сервера:

У меня есть 3 класса:

  1. Первый класс вычисляет X.
  2. Второй класс вычисляет Y.
  3. Класс три вычисляет Z.

Данные этих трех расчетов затем публикуются через службу WCF на стороне клиента.

На стороне клиента:

Вот часть TRICKY ……… ..

Я хочу, чтобы каждый набор данных из каждого из этих 3 классов отображался в GridControl в РАЗНОЙ форме.

Так будет следующим:

  1. Данные класса X будут опубликованы на MainForm.
  2. Данные класса Y будут опубликовано в YForm.
  3. Данные класса Z будет опубликовано в Zform.

При первом запуске клиентское приложение будет отображать только MainForm, но оно будет содержать строку меню для открытия Yform и Zform.

Мысль:

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

Ценю помощь.

1 Ответ

1 голос
/ 04 августа 2010

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

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

Это можно реализовать, разместив службы ответов WCF в клиентской форме. Таким образом, когда одна из ваших служб вычислений публикует результат, служба, размещенная в WinForm, может подписаться и получить это событие.

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

Я рекомендую книгу Ювала Лоуи Программирование служб WCF , чтобы помочь объяснить концепции ипредоставить справочную реализацию публикации / подписки, услуг размещения на формах и в контексте синхронизации.

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