0

最近我开始了解 Rx 框架,看起来很有前途。我对此表示怀疑。假设从我的 UI [可能是 winforms 或网页],我调用 webservice 并发送一个列表。所以我的调用就像 --> myWCFServiceMethod(List empLists)。在这个服务方法中,对于每个员工对象,我需要再次进行另一个服务调用并获取它的结果并执行某种数据库操作[保存和更新],最后将每个员工的状态发送回客户端。对于列表中的每个员工,我必须并行执行相同的操作。没有顺序。

Rx 框架有可能吗?为此,我是否需要为每个员工状态更新实施回调合同回到客户端 UI ?

我用数据网格制作了 UI,数据网格有 2 列。第一个是员工姓名,第二个是状态列。

当 UI 加载时,我在网格中加载了 100 名员工。然后点击开始按钮。因此,我将所有员工对象打包到一个列表中,并将该列表发送到 webservice 方法。

现在,我正在寻找要做的事情,即当员工经历不同流程时每个流程的状态更新。类似并行过程的东西。没有顺序过程。如果一些员工对象可以提前完成工作,而另一些则需要一些时间。所以没有过程的顺序。任何员工都可以调用自己关联的外部 Web 服务调用并从中获取结果。一个它得到这样的结果,然后它会尝试保存或更新数据库。对于所有这些过程,我想得到通知员工的每个过程的状态正在经历并最终完成它的工作。

如果没有回调合同,我不明白 Rx 怎么能做到这一点?

我没有看到任何类似类型的教程或指导我们如何做到这一点。

请引导我通过正确的方式。

非常感谢。

4

1 回答 1

4

这是您的问题的快速答案。

要并行进行多个服务调用,然后在它们返回时获取结果,您需要这样的查询:

var query =
    from index in indexes.ToObservable()
    from result in webServiceCall(index)
    select new { index, result };

签名webServiceCall看起来像.IObservable<R> webServiceCall(I index)

然后,您使用以下命令执行查询:

query.Subscribe(ir =>
{
    // Do stuff with ir.index and ir.result
});

专注于实施webServiceCall以适应此代码。我希望这能给你一个起点。

于 2013-01-21T12:09:42.307 回答