以前に WCF サービスを使用したことがありますが、現在は新しいプロジェクトが予定されています。私はまだ設計段階にあり、次のシナリオを処理する最善の方法を考えました。
複数のクライアントが同時に WCF サービスに接続し、サービスでさまざまなメソッド (操作コントラクト) を起動します。
A.実行されるメソッドの一部は、純粋な「読み取り」メソッドです (GetListOfCustomers など)。
B.実行されるメソッドには、複雑な「読み取り」メソッド (GetAllProductsByCustomerId など) があります。この種の方法では、DB から顧客を取得し、顧客について何かをチェックしてから、顧客が購入したすべての製品を取得する必要があります。(つまり、このメソッドではデータベースへの呼び出しが 2 回あります)。
C.一部は「書き込み」メソッドです (例:「RemoveCustomer」または「SetProductOutOfStock」)。
私の質問は、同時実行の問題が発生しないように、これらすべての呼び出しを同期するにはどうすればよいですか?
クライアント側のパフォーマンスが低下するため、サービス全体で呼び出しを連続して処理したくありません (一部の呼び出しでは、処理に 3 ~ 4 秒かかる場合があります) 。だから私の解決策は何ですか?
「複数」スレッドを持つすべてのクライアントに「単一」インスタンスを使用してから、ロック オブジェクトを使用しますか? これは単にシリアルになるだけではありませんか?
または、「読み取り」用に別のロック オブジェクトが必要で、「書き込み」用に別のロック オブジェクトが必要ですか?
または、「書き込み」機能にはロックが必要で、「読み取り」機能には他のものが必要ですか?
これは、StackOverflow に関する私の最初の質問です。助けてくれてありがとう!
更新: ORM として「Linq-To-SQL」を使用します。