ジェフリー・パレルモはタマネギのアーキテクチャを開拓しました。これは私が良いアプローチを見つけたものです。
http://www.headspring.com/jeffrey/onion-architecture-part-4-after-four-years/
ただし、私の理解が正しければ、「内側のレイヤーはインターフェイスを定義します。外側のレイヤーはインターフェイスを実装します」という彼のステートメントは、コンシューマーがインターフェイスを定義し、プロバイダーがそれを実装する、つまり、コントロールはプロバイダーではなくコンシューマーにあると述べている場合、IoCと矛盾するようです。
この原則は私には理にかなっています。UIを作成していると想像してください。この原則は、すべてを公開するインターフェイスの定義を担当しているため、呼び出すサービスについて何も知らなくてもUIの作成に取り掛かることができることを意味します。必要な機能。
したがって、そのために、Jeffreysのステートメントは矛盾しているように見え、コントラクト(インターフェイス定義)を配置する場所について私を混乱させます。これは、次のことを意味しているように思われるためです。
ドメインの下にレイヤーがないので、IMyEntityをどこに配置しますか。また、ドメインが存在し、IMyServiceを定義するまで、プレゼンテーションプロジェクトを作成できないことを意味します。
ちなみに、IMyEntityRepositoryとMyEntityRepositoryはどこに配置しますか?サービスはIMyEntityRepositoryに依存し、MyEntityRepositoryはIMyEntityに依存するため