0

リポジトリにオブジェクトがあります。クライアント要求オブジェクトの管理クラスは、さまざまなモジュールに代わって非同期にロードされます。モジュールはすべて、特定のオブジェクト (同じオブジェクト) を同時に要求する場合があります。管理クラスがモジュール要求ごとに要求を送信しないようにこれを設計する方法のパターンはありますか?

私が探しているのは、データへの最初のアクセス試行が行われたときに管理クラスが Web サービスへの 1 つの要求を開始し、データが到着したときに後続のすべての要求を満たすことです。

編集

モジュールは、お互いのことやお互いのリクエストを知りません。

4

1 に答える 1

0

私が過去にこれを行ったいくつかの方法があります。しかし、「自動化」されたものはありません。

初め:

各非同期コールバックは(必要に応じて)次のオブジェクトへの呼び出しを発行し、そのようにカスケードします。呼び出しが失敗すると、その時点でカスケードが停止し、エラーが1つだけ表示されます。これと次の欠点は、通話のおしゃべりです。

2番:

すべての非同期呼び出しが行われ、期待される戻りアイテムでカウンターが設定されます。各ハンドラーは、カウンターをロックして更新します。counter == expectedCountの場合、すべてのアイテムが返されます。リストボックスには、返されたアイテムのコレクションが表示されます。これの欠点は、a)必要かどうか、b)何らかの障害がプロセス(したがって呼び出し)を停止する必要があるかどうかを知らずに、すべての呼び出しを行うことです。それはまたおしゃべりであり、エラーは不必要な呼び出しが行われたことを意味します。

第3:

最も愚かなプロセスは、サーバーでルールが明確に定義されている場合にのみ機能します。非同期呼び出しを行うと、サービスがカスケードを実行します。これは、後続のすべてのクエリが最初のクエリの子を返す場合にのみ最適に機能します。その後、結果を単一のオブジェクトとして返すことができます。これは間違いなくおしゃべりではありません。これの欠点は、返されるオブジェクトのサイズです。

于 2012-07-24T19:44:51.033 に答える