1

我正处于工作流服务和 WPF 的调查阶段。

到目前为止,让状态机 WF 服务托管在 IIS 中并且一个或多个 WPF 客户端与 WF 服务通信听起来是合理的选择。

但是,尽管阅读和研究了几天,但我不清楚从 WPF 应用程序跟踪状态之间转移的最佳策略是什么。

跟踪参与者的样本很多,但大多数都基于一个流程场景。

所以我正在考虑如下结构。

  1. 任何客户端调用以注册其客户端终结点的服务器端 WCF 操作
  2. 一个自定义跟踪参与者,它遍历所有已注册的客户端端点并在其 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 框架的消息传递功能,以便将接收到的消息轻松传播到模型。

4

2 回答 2

0

有一个现有的机制可以包含您建议的许多功能(如果我正确理解您的需求)。如果您需要利用 WCF 服务以双向方式进行通信(即,将数据推送到连接的客户端),我建议您利用PollingDuplexBinding。

PollingDuplex过去曾使用各种 Silverlight 客户端来交换数据,并且我读过类似这样的文章,描述了在 WPF 空间中产生相同行为的步骤。

这种方法将自动化您显然正在考虑手动执行的大部分端点注册和跟踪逻辑。

我希望这有帮助。

于 2012-11-07T14:27:22.250 回答
0

您可以看看 SignalR,而不是试图强迫 WCF 成为一个发布/订阅平台,这不是它的强项。我的博客上有一个示例,其中包含视觉跟踪示例,其中跟踪参与者从跟踪应用程序中分离出来,因此并非全部在一个过程中。该博客还具有指向其他两个博客的链接,其中完成了类似的事情,但都使用了更适合此类事件的消息传递架构。

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

于 2012-11-18T13:04:09.487 回答