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