1

私の同僚は私に言った-私たちにはビジネスロジックがなく、GetById、GetBySearchTerm、GetByParentIDなどのCRUDしかないので、これらの言葉について疑問に思い始めました。

DDD について読んだ後、これらのメソッドは CRUD であり、特定のコード (通常は SQL) に基づいてデータをフェッチ (保存、更新、削除など) するメカニズムを備えています。

ビジネス アナリストが「特定の顧客に関するデータを表示する必要がある」と言った場合。私の意見では、これは (GetById) ビジネス プロセスです。GetById はアプリケーションのビジネス ロジック部分に配置する必要があり、リポジトリに接続してデータを取得します。CRUD メソッドを含むリポジトリは、いくつかの基準に基づいてデータを永続化する責任があります。

この質問は、アトミック メソッド (GetById、GetBySearchTerm、GetByParentiId...) を含むリポジトリを持つことについての議論につながる可能性があることを知っていますが、私の質問は単純です。これらのメソッドは CRUD またはビジネス ロジック メソッドです。

4

3 に答える 3

0

これらのメソッドは、ビジネス メソッドになることはできません。CQRSの実践者として、コマンド側とクエリ側に異なるモデルを用意することをお勧めします。読み取り (クエリ) プロセス全体を処理する別の境界付けられたコンテキストを作成し (貧血の /DTO をここで作成できます)、純粋なビジネス ロジックの目的を果たす別のドメイン モデルを作成することもできます。

コマンドとクエリの分離については、私のブログをご覧ください。

https://aspxsusil.wordpress.com/2015/10/18/command-and-query-object-pattern/

于 2016-11-21T17:11:11.523 に答える
0

すべてのアプリケーションが DDD アプリケーションであるとは限りません。一部のアプリケーションは単なる CRUD です

ビジネス ロジックは、入力を検証するアプリケーションの一部になります (get by id や id は 1 から 99999 までの数値です)。これは、実際のクエリのためにリポジトリに渡されます。

しかし、あなたのアプリケーションが本当に粗悪なアプリケーションである場合、DDD を適用しようとしても役に立ちません。

于 2016-11-21T13:44:44.813 に答える