Я нахожусь на стадии расследования для Workflow Service и WPF.
Наличие службы WF конечного автомата, размещенной в IIS, и одного или нескольких клиентов WPF, взаимодействующих со службой WF, пока что кажется разумным выбором.
Однако, несмотря на дни чтения и исследований, мне не ясно, какая стратегия будет лучшей для отслеживания передачи между состояниями из приложения WPF.
Существует множество примеров участников отслеживания, но большинство из них основаны на сценарии одного процесса.
Итак, я думаю о структуре, как показано ниже.
- Операция WCF на стороне сервера, которую любой клиент вызывает для регистрации своей конечной точки на стороне клиента.
- Пользовательский участник отслеживания, который просматривает все зарегистрированные конечные точки на стороне клиента и отправляет 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 на стороне клиента, чтобы она легко передавала полученное сообщение моделям.