0

最近、Rx フレームワークについて知り、非常に有望に思えます。私はそれに疑問を持っています。私のUIから[winformsまたはWebページである可能性があります]、webserviceを呼び出してリストを送信するとします。したがって、私の呼び出しは --> myWCFServiceMethod(List empLists) のようになります。このサービス メソッド内で、従業員オブジェクトごとに、別のサービス呼び出しを再度実行してその結果を取得し、何らかの DB 操作 [保存と更新] を実行して、最終的に各従業員のステータスをクライアント側に送り返す必要があります。リスト内の各従業員について、同じ操作を並行して行う必要があります。順番はありません。

それは Rx フレームワークで可能ですか? これを行うには、各従業員のステータス更新をクライアント UI に戻すためのコールバック コントラクトを実装する必要がありますか?

データグリッドを使用して UI を作成しました。データグリッドには 2 つの列があります。1 番目は従業員の名前、2 番目はステータス列です。

UI が読み込まれると、グリッドに 100 人の従業員が読み込まれました。次に、スタートボタンをクリックします。そこで、すべての従業員オブジェクトをリストにまとめて、そのリストを webservice メソッドに送信しました。

今、私は従業員が別のプロセスを通過したときに各プロセスのステータスを更新することを探しています。並列処理のようなもの。一連のプロセスはありません。一部の従業員オブジェクトがその作業を早期に終了でき、他のいくつかの従業員オブジェクトには時間がかかる場合。SOプロセスの順序はありません。どの従業員も、関連付けられた独自の外部 Web サービス呼び出しを呼び出して、その結果を取得できます。このような結果が得られると、DB の保存または更新を試みます。これらすべてのプロセスについて、従業員の各プロセスのステータスを通知し、最終的に作業を終了したいと考えています。

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 に答える