我正处于工作流服务和 WPF 的调查阶段。
到目前为止,让状态机 WF 服务托管在 IIS 中并且一个或多个 WPF 客户端与 WF 服务通信听起来是合理的选择。
但是,尽管阅读和研究了几天,但我不清楚从 WPF 应用程序跟踪状态之间转移的最佳策略是什么。
跟踪参与者的样本很多,但大多数都基于一个流程场景。
所以我正在考虑如下结构。
- 任何客户端调用以注册其客户端终结点的服务器端 WCF 操作
- 一个自定义跟踪参与者,它遍历所有已注册的客户端端点并在其 Track() 方法中发送 TrackingRecord。
这种方法的优点是它允许实时更新状态而无需像 ETW 这样的额外层。另一个优点是它允许将逻辑(或者可能是模型层)与表示层分离。
任何人都可以就上述结构分享意见吗?我也欢迎任何关于实现目标的建议。
[编辑]为了使我上面的想法更加详细和清晰,下面的步骤将是一个典型的用法。
1)(WPF 客户端)包含并打开一个 WCF 端点以接收 TrackRecords。
2)(WF 服务)打开一个 WCF 操作(或带有接收消息的简单 WF 实例),将客户端地址注册到内部存储。
3) (WF 服务) 创建并添加一个自定义跟踪参与者,它将 TrackingRecord 发送到注册客户端的端点。
4)(客户端)连接到上述服务并分发步骤 1 中提到的客户端端点,从而接收 TrackingRecords。
[编辑 2]
简单地说我的目标,我想知道
1) 通过 TrackingParticipant 在 WF 服务 (IIS) + WPF 或任何类型的客户端应用程序上跟踪 StateMachine 状态的最有效方式。
2)如果我的建议可以改进
同时,我已经实现了这一点并且到目前为止效果很好。我还在客户端添加了 MvvM Light 框架的消息传递功能,以便将接收到的消息轻松传播到模型。