私の最初に考えたのは、クライアントはすべてのサービスを設定できるようにしたが、 その後、クライアントは、私がクライアントに公開したくない リポジトリサービス、に注意する必要があります。
私がする傾向があるのは、私のWebプロジェクトがIoCの配線が始まる最初の場所になるComposition Rootパターンです(つまり、一般的な種類のサードパーティ製ライブラリがコントローラ工場)。しかし、私はIoCモジュールを参照してIoCバインディングの残りの部分を設定します(私の場合、通常はNinjectを使用していますので、WebプロジェクトからNinjectModule
を参照しています)。しかし、私はこれを別のインフラストラクチャプロジェクトに入れます。NinjectModule
このIoCインフラストラクチャプロジェクトをWebプロジェクトから参照できます.IoCプロジェクトは、ソリューション内の他のすべてのプロジェクトを参照できます。
このようにして、自分のWebプロジェクトにアクセスするために、私のリポジトリのレイヤーのように、私のWebプロジェクトにプロジェクト参照を作成する必要はありません。
私は常にアプリケーションレイヤーの上にすべてのDI構成を持つ特定のレイヤーを作成します。 私はすべてのUI(rest、cli、soapなど)がDI設定を階層化するために自分自身を繰り返す必要はありません。 六角形アーキテクチャを使用している場合は、インフラストラクチャレイヤ内に存在する必要があります。 – Dariss
"ドメインリポジトリ*サービス*"? ... – guillaume31
通常、アプリケーションのエントリポイントにすべてのDIを設定する必要があります。http://blog.ploeh.dk/2011/07/28/CompositionRoot/ – guillaume31