3

プロジェクトで DDD\CQRS\ES を使用したいと考えています。使い始めたばかりなので経験が少ないです。既存のコア ドメイン、サポート ドメイン、および CRUD ドメインを認識しています。私のコア ドメインには、CRUD データへの参照があります。例えば ​​Order にはたくさんのビジネスルールがありますが、配送業者や受け取り場所などの基本的な情報が含まれています。

これらの情報は管理者が管理しています。私の意見では、crud アプローチを使用する必要がありますが、イベントをロールバックする必要がある場合はどうなりますか?

システムは、イベント ソースから復元されたデータとアプリの crud 部分から実際に復元されたデータの混合を保存します。一貫性のないデータになってしまいます。たとえば、注文は存在しない会社によって維持されている可能性があります (その会社は、パッケージが配信されたときに管理者によって削除されましたが、ロールバック注文がまだアクティブになっている場合) すべてのプロジェクトで CRUD データの一部であるため、この問題にどのように対処しますか? 会社のイベントを保存する必要がありますか?

さらに、新しい注文を追加するときは、会社名と ID をイベント経由で送信する必要があります。これは、 ReadStore を再構築するときに、データベースに会社がない可能性があるため、リポジトリから companyName を取得できないためです。

PS。単純な CRUD 操作で処理する CRUD フレームワークを知っていますか?

PS.2 ES\CQRS アプローチでアプリの CRUD 部分を含むオープンソース プロジェクトの例を知っていますか?


Ok。多分私はそれを複雑に説明しすぎました。ただ知りたいだけです:

  • コア ドメインをイベント ストアに保存し、コア ドメインの以前の状態を元に戻したい場合に、アプリケーションの最も単純な部分 (貧弱なビジネス ロジック - 主に CRUD 操作) を実装する方法

  • イベントストアにもcrud操作を保存する必要がありますか?

  • ロールバック イベント ストア後に一貫性のあるデータを提供するにはどうすればよいですか?

  • Java アプリケーションに推奨する CRUD フレームワークはどれですか?

4

3 に答える 3

3

これは、DDDを扱う場合、特にESを扱う場合によくある問題だと思います。これは単純に聞こえるかもしれませんが、探す必要があるのは、ドメイン内の制限されたコンテキストです。この制限されたコンテキストは、SOAのサービスに非常によく対応していることがわかります。ここで、SOAに到達すると、すべてのサービス(Web / WindowsサービスではなくSOAのSとしてのサービス)を同じように実装する必要があるわけではないことに気付きます。

私の経験では、ほとんどの場合CRUD操作を処理するサービスがいくつかあり、ビジネスロジックはほとんどありません。通常、管理者や特別なユーザーが使用するアプリで使用されます。このサービスは、CQRSとESを使用せずに、またそれらを過度に複雑にすることなく、可能な限り最小限の労力で実装でき、実装する必要があります。何かが起こったときに、関連するメッセージを公開していることを確認してください。

私はEricEvansを強くお勧めします-本のビデオ以来DDDについて学んだことです。

また、Udi Dahanには、SOAとSOAの意味に関する非常に優れたビデオがいくつかあります。失敗したSOAとSOA上のUdiを回避する

これは実際にあなたの質問のすべての詳細に答えているわけではないことを私は理解していますが、それがあなたを正しい方向に向けることを願っています。

于 2013-02-22T13:39:00.103 に答える
-1

私はあなたが何を尋ねようとしているのか正確にはわかりませんが、DDD と CRUD 操作に関係する場合は、自分で試したことはありませんが、Cocktail フレームワークが役立つかもしれません。

于 2013-02-20T18:44:34.800 に答える