0
  • ビューはコントローラーを呼び出すことができます
  • コントローラーは、ビューとサービスレイヤー(トランザクションがある場所)とのみ通信します
  • サービスレイヤーには、トランザクションにラップされたドメインオブジェクトへの一連の呼び出しがあります
  • ドメインオブジェクトには、daoレイヤーへの呼び出しが含まれています。
  • daoレイヤーは、ドメインオブジェクトにデータを入力し、データを永続化します。

ただし、ゲッターを介してデータにアクセスするために、ドメインオブジェクトをさまざまなレイヤーに渡すことはできますか、またはdtoを使用する必要がありますか?ビュー/ユースケースに固有のデータを含む縮小されたドメインオブジェクトです。レイヤーの周りにドメインオブジェクトを渡すと、レイヤーは指定された他のレイヤーとのみ通信できるというルールを破ることが促進されるようです。しかし一方で、それがDDDのポイントですか?ドメインオブジェクトからデータを取得してdtoに入れることが望ましい場合、これはどこで行う必要がありますか、コントローラー?

ドメイン駆動設計、それは正しく行われていますか

4

3 に答える 3

2

個人的には、常にビューモデル(ビューのDTO)を使用します。これにより、ビューに渡されるデータの量を削減し、安全なデータを誤って公開することを回避できます。

理論的には、UI(またはいくつかのUIまたはWebサービス)をシステムの上に接続する必要があります。たとえば、Webサービスを介してシステムを公開している場合は、ドメインエンティティへの依存関係を作成しないように(外部システムを壊さずに変更できるように)、何らかの方法でデータをフラット化および削減することもできます。ドメインエンティティのIDや機密データを公開しないでください。

これは、DDDだけでなく、あらゆる開発手法に当てはまると思います。

于 2012-11-05T11:49:10.120 に答える
1

ドメインは他のすべてのレイヤーから100%独立している必要があるため、他のすべてのレイヤーの隣に配置する必要があります。したがって、どこでも使用できるはずです。

DDDのサービスは、2つ以上の異なるルートアグリゲートが相互作用する必要がある場合にのみ使用する必要があります。

TransactionScopeトランザクションに関しては、UIレイヤーだけで使ってみませんか?それはまだ永続性を知らない。

私は個人的にリポジトリをUIで直接使用しています(DDDのリポジトリはDB抽象化であるため)

于 2012-11-05T12:47:24.037 に答える
1

正規の階層化アーキテクチャでは、物事を可能な限り区分化する必要があることは事実ですが、特にプレゼンテーション層とドメイン層が同じ層にある単純なアプリケーションでは、ドメインエンティティをUIに渡すことは許容できるようです。UIにドメインへの参照が必要なだけで、それほど衝撃的ではありません(逆の場合は実際には問題があります)。

Mark Seemannは、その問題について興味深い考えを持ったブログ投稿を持っていますが、私は彼の見解のすべてを共有しているわけではありません。

于 2012-11-05T13:17:59.247 に答える