Участник настраиваемого отслеживания службы рабочего процесса, который разговаривает с конечными точками на стороне клиента?

Я нахожусь на стадии расследования для Workflow Service и WPF.

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

Однако, несмотря на дни чтения и исследований, мне не ясно, какая стратегия будет лучшей для отслеживания передачи между состояниями из приложения WPF.

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

Итак, я думаю о структуре, как показано ниже.

  1. Операция WCF на стороне сервера, которую любой клиент вызывает для регистрации своей конечной точки на стороне клиента.
  2. Пользовательский участник отслеживания, который просматривает все зарегистрированные конечные точки на стороне клиента и отправляет TrackingRecord в своем методе Track ().

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

Может ли кто-нибудь разделить мнение о вышеуказанной структуре? Я также был бы рад любым предложениям по достижению цели.


[РЕДАКТИРОВАТЬ] Чтобы сделать мою идею выше более подробной и ясной, приведенные ниже шаги будут типичным использованием.

1) (клиент WPF) содержит и открывает конечную точку WCF для получения TrackRecords.

2) (Служба WF) открывает операцию WCF (или простой экземпляр WF с сообщением приема), которая регистрирует адрес на стороне клиента во внутреннем хранилище.

3) (Служба WF) создается и добавляется пользовательский участник отслеживания, который отправляет TrackingRecord на конечные точки зарегистрированных клиентов.

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


[РЕДАКТИРОВАТЬ 2]

Проще говоря, я хотел бы знать

1) наиболее эффективный способ отслеживания состояния StateMachine в WF Service (IIS) + WPF или любых типах клиентских приложений через TrackingParticipant.

2) если мое предложение можно улучшить

Между тем, я реализовал это и пока работает хорошо. Я также добавил функцию обмена сообщениями платформы MvvM Light на стороне клиента, чтобы она легко передавала полученное сообщение моделям.


person somatic rev    schedule 02.11.2012    source источник


Ответы (2)


Вы можете взглянуть на SignalR вместо того, чтобы пытаться заставить WCF стать платформой для публикации / подписки, что не является его сильной стороной. В моем блоге есть пример с примером визуального отслеживания, в котором участник отслеживания отделен от приложения отслеживания, поэтому не все в одном процессе. В этом блоге также есть ссылки на два других блога, где делались похожие вещи, но все с использованием архитектуры обмена сообщениями, более подходящей для подобных событий.

http://panmanphil.wordpress.com/2012/11/05/slides-and-sample-from-the-chippewa-valley-code-camp/

person Philip Nelson    schedule 18.11.2012
comment
Спасибо за ответ, и хотя я не выбрал SignalR в конце, это хороший указатель. - person somatic rev; 28.11.2012

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

В прошлом я использовал PollingDuplex с различными клиентами Silverlight для обмена данными, и я читал такие статьи, как эта, описывающий шаги для создания такого же поведения в пространстве WPF.

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

Надеюсь, это поможет.

person XamlZealot    schedule 07.11.2012
comment
Спасибо за ответ. Но установка двунаправленной связи сама по себе не была проблемой, и PollingDuplex полагается на опрос временного интервала, в котором здесь нет необходимости. Суть вопроса - отслеживание конечного автомата в многоуровневой среде. - person somatic rev; 08.11.2012