データベースで読み取りおよび書き込み操作を実行し、通知を受け取るために、WCF サービスに接続するクライアントのシステムを設計する必要があります。
CQRSパターンを使用するように言われました。
例として、クライアントはサービスに接続してGet List Of ProductsやUpdate Productなどの操作を実行します。彼らはまた、出荷の受け入れや出荷の拒否などを行うこともできます(これにより、最初にそれを行うクライアントの間で競合が発生する可能性があります)。出荷を「受け入れる」または出荷を「拒否」できるクライアントは 1 人だけです。
だから私はCQRSについて少し読んで、それが(コマンドを使用して)書き込みから読み取りを分離することを理解しました。ただし、 CQRS を使用する場合、いくつかの主要な問題についてはわかりません。
WCF サービスで CQRS パターンを使用する場合、データベースで同期的に行われることを期待できますか? (将来のスケーラビリティをサポートするために) サービスをシングル スレッドにしたくないので、少し混乱していますが、その一方で、サービスに対する書き込み操作が正しい順序で実行されるようにするにはどうすればよいでしょうか? または読み取り操作ですか?CQRS パターンは順序付き処理を保証しますか? (CQRSパターンは「更新」キューを使用してオフライン処理のリクエストを更新すると誰かが私に言いました)。
CQRS を使用すると同時実行の問題が解消されますか?
データベースと対話するすべてのコマンド ハンドラーで「TransactionScope」を引き続き使用する必要がありますか?
クライアントに通知サービスを実装する方法を理解するのに 1 週間以上費やしましたが、うまくいきませんでした。私はこのデザインを持っています:
「製品サービス」は CQRS サービスになりますが、通知サービスに問題があります。クライアントは、製品サービスにコマンドを送信して、カテゴリ X の製品について通知を受けることができます。このコマンドは、データベース内の要求を更新します。ここでは、通知サービスが 15 分ごとにデータベースをポーリングし、どのユーザーがどのカテゴリでポーリングを希望しているかを確認し、それらの製品のカテゴリに関する通知を要求したユーザーに新製品を送信するとします。ユーザーが製品のカテゴリを変更し、他の 20 人のユーザーの通知ウィンドウにこの製品が既に表示されている場合はどうなりますか? 製品がそのカテゴリではなくなったことを検出し、次のような通知を送信する方法が必要です「あなたのビューからその製品を削除してください」。これは通知のようには聞こえません。「データベース テーブルの CONSTANT RELEVANT ビューを要求すると、すべての変更がクライアントの画面に反映されます」のように聞こえます。この種の通知サービスを行うにはどうすればよいですか??