2012-02-13 6 views
1

この状況を最適に構成する方法に関するアドバイスを探しています。 ASP MVCアプリケーションには次のコンポーネントがあります。城ウィンザーコンポーネントライフスタイルのアドバイス

  • コントローラ - MVC
  • サービスの要件によって過渡 - サービスコンポーネントを検証するためにこれらを使用する - コントローラーは、ビジネス層
  • バリデータを取得するためにこれらを呼び出します。これらは私が
  • リポジトリ彼らはシングルトンである必要がありそう作成するのに費用がかかる - サービスとバリデータは、データにアクセスするためにこれらを使用
  • ISession
  • - NHibernateのセッションは、私が設定する最善の方法で探していますPerWebRequest

として設定サービスとリポジトリ。表面上では、両方が同じように構成できるように思われる。リポジトリのみの依存性(コンストラクタで渡される)は、ISessionです。サービスのみの依存関係(コンストラクタで渡される)はリポジトリです。サービスがバリデーターを必要とする場合、ServiceLocatorから取得します。バリデータはコンストラクタにリポジトリを取得します。バリデーターはシングルトンを過渡リポジトリーに渡すので、バリデーターは処理されたISessionを持つリポジトリーを保持するため、問題があります。

ここにお手伝いいただければ幸いです。

答えて

1

UnitOfWork(ORM、カスタム実装...)に依存するリポジトリは、一時的なものか、少なくとも同じUoWライフスタイルでなければなりません。

は、ケースであなたのバリデータは、「読み取り専用」のリポジトリを介してストレージへのアクセスを...あなたは

0
  • セッションPerWebRequest
  • をシングルトンリポジトリを持っていますが、その実装に非常に気をつけであると考えることが必要ですリポジトリは、セッションのライフタイムにバインドされているセッションで注入された場合(シングルトンの可能性もあります)PerWebRequest
  • バリデーション:作成に費用がかかりますか?レポやセッションが必要な場合はOKです。レポ自体と同じことが適用されます。
  • サービス:おそらくウェブリクエストごとにも可能です。