DDD-Liteは依存性注入のパターン言語ですか?


17

グレッグヤングの講演7:20でDDD-Liteと呼ばれるものに言及したDDDプロジェクトが失敗する7つの理由に出会った。

要約すると、彼は基本的に、DDDに関連することを何もせずにパターン言語(エンティティ、リポジトリ、値オブジェクト、サービスなど)としてDDDを使用する人もいると言います。彼は、.Netのドメインモデルの60%以上がDDD-Liteであると仮定しています。彼は、DDD-Liteが基本的に依存性注入に関する言語を構築していると考えています。彼は、DDDを完全に実行するか、もっと簡単なことを行うと言います。そうでなければ、彼は、人が良い抽象化を構築するためにこの仕事のすべてを出しているが、本当の利益なしであると主張します。

私はDDDについてあまり知りたいとは思わないので、まだ使用しようとしていません。また、エリック・エヴァンの本も読んでいません。私はずっとエリック・エヴァンスDDD帳から、この主題の使用条件と参照概念に依存性の注入と、多くの、多くの書籍やブログに興味を持って。ここで、DDDの概念に触れました。私がこれを読んでいる本には以下が含まれます:

  • .NETでの依存性注入
  • Microsoft .Net:企業向けアプリケーションの設計
  • .NETでのブラウンフィールドアプリケーション開発

依存性注入を実行したい場合、「DDD-Lite」を実行するより簡単な代替手段は何ですか?良い抽象化を構築することは、DDDの概念を「DDD-Lite」の方法で使用しているかどうかに関係なく、非常に役立つように思えます。(Mark Seemannのブログ投稿を参照してください。インターフェースは抽象化はありませんより良い抽象化に向けて)。依存性注入を行っているすべての人が、本格的なDDDを実行している(または実行する必要がある)ことを信じるのは困難です。グレッグヤングのDDD-Liteについての議論を何らかの形で誤解しましたか?

回答:


15

依存性注入とDDDは2つの互いに素な概念です。依存性注入を行うには、DDDを行う必要はなく、DDDは依存性注入を必要としません。

多くのDDDプロジェクトは、パターンを選択しますが、DDDの背後にあるプロセスを無視するために失敗します。ビジネスルールを抽出するのに時間がかかりません。ドメインモデルや注意深い抽象化に集中していません。彼らはユビキタス言語を確立しません。

要するに、それは誤解だと思います


4
+1エバンスの本で説明されているパターンは、それらを単独で適用してもDDDにならないことを理解している限り、はるかに広い文脈で価値があります。
マークゼーマン

1
はい、DI!= DDDを実現しています。@MarkSeemann、それでグレッグの議論は、人々がDDDをしているのにDDDをしていないと言っているということのようです。わかりました。しかし、DDDに見られるような抽象化(集約、リポジトリ、ドメインエンティティ、値オブジェクト、サービスなど)を使用するのは、それらが依存性注入アーキテクチャをサポートするためだけに使用される場合は不要であるとも主張します。それは私が得られない部分です(何が悪いのですか)。おそらくそれは、「依存関係の注入を中心に言語を構築する」ためだけのものではないので、ストローマンの議論です。
マット

3
グレッグは部分的に正しい:DDDの特別なパターンは、特にDIとは関係ありません。しかし、私の本では、どこに何を注入するかを理解することが重要であるため、いくつかの用語、特にエンティティ対値オブジェクト対サービスの定義を取り上げました。ただし、この用語は、RepositoryやFactoryなどの他のパタ​​ーンと同様にDDDの本よりもはるかに古いため、DDDの外部ではそのようなことは不要であると言うのは間違っているように思えます。実際にDDDを定義する方法に依存する場合があります。
マークゼーマン

2

Gregは、DDDアプローチ全体ではなく、ドメイン駆動設計パターンのサブセットである場合、単純なアプリケーションを指しているに違いありません。DDD-Liteという用語は、DDD初心者の間で一般的に使用されていた本http://www.infoq.com/minibooks/domain-driven-design-quicklyを暗黙的に参照しますが、ローカルモデリングデザインパターン。

依存性注入は良いことと考えられていますが、DDDとDIの間には強い相関関係はありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.