1

スレッドセーフではない Web サイト経由でアクセスする必要があるドライバーがあります。特定の時間に多くの人がサイトにアクセスできるため、すべての呼び出しを処理する WCF サービスを作成することにしました。ほとんどの呼び出しは、作業キューにアイテムを追加するための非同期呼び出しです。一部は、まだ処理されていないアイテムまたは処理されたアイテムのリストを取得するための同期呼び出しです。

ドライバーはスレッド セーフではないため、サービスは潜在的に多くの要求を一度に受け取り、項目を作業キューに追加するか、作業キューを返すか、または作業完了キューを返す必要があります。サービスのシングルスレッド操作は、作業キューから読み取り、この非スレッドセーフ ドライバーを使用してジョブを処理し、完了したら作業完了キューを更新する必要があります。

何をすべきかは概念的には明確ですが、実装の詳細は少し混乱します。IIS は Web 要求に応答する必要があるため、IIS でサービスをホストする必要があると思いますが、Web をブロックせずにドライバーのアクセスがシングルスレッドのままであることを保証する方法がわかりません。リクエスト。ドライバーへのすべてのアクセスを処理し、IIS がホストする WCF サービスを使用して次のキュー項目を取得し、処理が完了したときにキューを更新する 2 つ目のサービス (おそらく Windows サービス) が必要ですか?

4

1 に答える 1