1) Какой шаблон проектирования мне лучше всего подходит?
Исходя из ваших комментариев, вы хотите преобразовать текущий механизм опроса воснованный на событиях механизм.То есть вместо того, чтобы клиент постоянно проверял сервер на наличие результатов, пусть сервер уведомит клиента о появлении нового результата вычисления.
Я бы порекомендовал использовать для этого платформу Juval Lowy's Publish-Subscribe Framework.
Платформа публикации-подписки http://i.msdn.microsoft.com/cc163537.fig07(en-us).gif.
Эта структура подробно описана в этой статье MSDN .И вы можете бесплатно загрузить исходный код фреймворка на веб-сайте Лоуи, IDesign.net .
По сути, логика сервера, выполняющая вычисления внутри службы Windows,Клиент публикации в графике и различные приложения WinForm являются Клиентами подписки.Служба Pub / Sub Service находится в вашей службе Windows.Он управляет списком подписавшихся клиентов и предоставляет единую конечную точку для вашего сервера для публикации результатов расчетов.Таким образом, ваш сервер выполняет вычисления и публикует результат один раз в конечной точке Pub / Sub Service.Служба Pub / Sub отвечает за публикацию результатов подписанным клиентам.
2) Какой тип привязки WCF следует использовать для обеспечения максимальной скорости передачи данных?
Если бы все ваши сообщения WCF были на одном компьютере, вы бы хотели использовать NetNamedPipeBinding .Однако, поскольку вы будете распределены, вы хотите использовать NetTcpBinding .
Для решений по связыванию WCF я нашел эту диаграмму полезной.
3) Должен ли я использовать библиотеку классов для совместного использования общих объектов между клиентскими и серверными приложениями?
Поскольку вы контролируете обана стороне клиента и сервера я бы настоятельно рекомендовал использовать библиотеку классов вместо использования функции «Добавить ссылку на службу» в Visual Studio.Подробное обсуждение этого вопроса см. В этом SO-вопросе-ответе .
4) Как лучше всего связать мои объекты с данными нана стороне клиента, чтобы постоянно видеть живые обновления при изменении данных?
Я подозреваю, что это будет зависеть от того, какие элементы управления вы используете для отображения данных.Один из способов, который сразу приходит на ум, - это заполнить таблицу данных в памяти вашего клиента при получении каждого результата вычислений.Затем эту таблицу данных можно привязать к элементу управления ListBox, который отображает результаты в порядке расчета.