我们目前正在构建一个系统,该系统从其他一些系统中抽象出有关 Web 服务的各种技术细节。它有点像企业总线,但功能更多。
我们决定使用 Windows Workflow 来处理请求。一旦我们弄清楚请求了什么样的操作,我们将启动一个专门设计用于处理该操作的工作流。现在,我们将调用的一些 Web 服务是异步的,因此工作流应该等待响应。基本思想是,我们将在我们端实现回调 Web 服务,当回调“以某种方式”到达时,将其数据提供给正在等待答案的正在运行的工作流。
到目前为止,我已经看到了两种可能性:
- 外部数据交换服务
- 工作流队列服务
第一个服务相对容易使用,但是是基于事件的,所以如果你错过了事件,你就会错过数据。我们需要一个基于队列的解决方案,因为从技术上讲,甚至在我们获得告诉我们很快会收到回调的同步响应之前,就可以从 Web 服务接收回调。
第二项服务似乎很完美,但它的使用方式非常有限。将项目放入队列非常简单,但我们需要先确保队列存在,然后才能执行此操作。并且创建队列似乎只能在 Activity 的 Execute 覆盖中实现。由于我们有很多不同的工作流,我们有一个基础工作流类,它在它的 Initialize 覆盖中做了一些工作,并且非常希望在那里创建队列,所以我们不必创建一个特殊的“Initialize”活动每个工作流程都应该开始。我们还希望在收到新项目时通知基类。因此,特定的工作流只需要等待 WaitHandle 就可以知道队列中有数据。
有没有人有想法,不必使用我提到的两个服务,但我们真的希望让事情尽可能简单。