3

VS 2012 でプロジェクトを開始しました。私のソリューションは次の構造を持っています。

1) WCF レイヤーを呼び出す Web インターフェイス (MVC 4)

2) WCF レイヤーがビジネス ロジック レイヤーを呼び出している

3) ビジネス ロジック層がリポジトリ層 (汎用リポジトリ) を呼び出している

4) リポジトリは Data Access Layer と呼ばれます (DAL = EF 5.0)

質問:

DIにNinject(ver3)を使いたい

1) DI を解決するために、各レイヤー/プロジェクト レベルに Ninject を追加する必要がありますか?

バインディングを作成するには、次のコードをどのレイヤーに追加する必要がありますか。次のコードは、バインドのために NinjectWebCommon.cs クラスに入ります。

// 'real' implementations or (Bindings)

kernel.Bind<IRepository>().To<Repository>();
kernel.Bind<IAuthorBLL>().To<AuthorBLL>();

2) ソリューションの各プロジェクト/レイヤーに Ninject を追加し、各 NinjectWebCommon.cs クラスでバインディングを定義する必要がありますか?

または、ビンギングは WCF レイヤーでのみ定義する必要がありますが、WCF プロジェクトの各プロジェクトの参照を追加する必要があります。

または、ビンギングは MVC レイヤーの先頭でのみ定義する必要がありますが、MVC プロジェクトに各プロジェクトの参照を追加する必要があります。

ご意見をお聞かせください。どうもありがとう。

上記のすべてのレイヤーと Ninject を使用したサンプルの作業コードを教えていただければ、それは素晴らしいことです。私は試しましたが、このようなものは見つかりません。

4

1 に答える 1

3

依存性注入の考え方は、構築されるすべてのクラスがコンストラクターで依存関係を宣言することです (通常)。
最終層はオーケストラ リーダーとして機能し、使用する依存関係を選択します。これを行うには、そのレイヤーはすべての基礎となるレイヤーに依存する必要があります (パート x を演奏するためにトランペットを指す方法、またはデータ処理のためのエンティティ フレームワーク リポジトリを指す方法)。

ただし、あなたの場合、2つのアプリケーションがあります(私は決して大ファンではありませんが、ますます多くの人がそれをやっているのを見ています)
mvc Webサイトとwcfサービス。
これらのアプリケーションはどちらも、オーケストラのオーケストラ リーダーを演じる必要があります。
mvc Web サイト アプリケーションは、wcf サービス コンポーネントを作成するために ninject をセットアップします。
wcf サービス アプリケーションは、ninject をセットアップして、特定のロジックおよびリポジトリ クラスのセットを作成します。

それは機能しますが、その間にwcfレイヤーを一緒にスクラッチすることを検討します。
通常、mvc Web サイトは唯一の消費者であり、wcf サービスのポイントは何ですか?
より多くの消費者がいる場合は、その発言を無視して、2 つの ninjects を設定してください。

于 2013-10-01T11:43:12.630 に答える