たとえば、指定されたIDで注文をキャンセルするメソッドを備えたWCFサービスがあります。このメソッドは、サイトのすべてのユーザーが Web から呼び出すことができます。
このメソッド内のどこかで、指定された ID を持つ注文が現在ログインしているユーザーに属していることを確認する必要があります (認証 Cookie を読み取ります)。
このチェックをどこで実行するのが良いですか?
WCF メソッドでは、ビジネス プロセスを開始し、その内部のどこかで、ID で注文を読み込むようにリポジトリに要求します。
このような Web へのオープン操作を多数行うことができます。そして、私はそのような所有権チェックを忘れる可能性をできるだけ低くしたいと思っています - 私はそのようなチェックを、すべてのコードブランチが行く狭い場所に実装したいと思っています.
私はそのようなチェックをリポジトリで行うことができますが、この種の検証はリポジトリの責任であると確信しています. また、動作属性をサービスまたはその操作に適用することで、ある種の宣言型検証を実装することもできますが、所有権を実行するときに最初に少なくとも 2 回オーダーをロードする必要があるため、これが適切な場所かどうかはわかりません。テストし、ビジネスプロセスで。