私は、このようなMVCソリューションを3つの「プロジェクト」で設定しています。ASP.NET MVC - 認証レイヤーはどこに行きますか?
ウェブ(MVCプロジェクト、ビュー、コントローラ、のviewmodels)
モデル(ドメインオブジェクト)
永続性(NHibernateはマッピング、SessionFactoryの)
私は、リポジトリの構築を開始する必要があります認証モデルから始める予定でした。基本的には、デフォルトのMVCテンプレートに続いて、IMembershipService
とIFormsAuthenticationService
と関連クラス(カスタムコードを使用し、認証プロバイダに組み込まれていない)を使用します。
私の質問は...これはどこに行けばよいですか?私のリポジトリは、私のDomainオブジェクトと私のPersistence Layerの両方にアクセスする必要があります。しかし、私はどんな種類の「カップリング」も悪いデザインであることを読んでいます。だから私はモデル/持続性を参照するリポジトリ/サービスのための第4のプロジェクトを作成することを躊躇しています...しかし、私は実際にそれを論理的に行うための他の方法を見つけることはできません。
解決策の別の部分を参照する必要があることを恐れています。それは私が向きを変えたどこかで見えます、私が見ているのは、プロジェクトのどの部分にも「何らかの」カップリングを持たせるのがひどいことを話す人々です。現時点で私と私のチームにとっては意味がありません。なぜなら、あるレベルでドメインとマッピングモデルに結合することなく、実際にデータベースと通信することは不可能だからです。アプリケーションのリポジトリセクションにSessionFactoryを表示できるようにしますか?私はすべてが何かを見るのを止めなければならないのですか? – Ciel
アセンブリの参照にはあまり関心がありません。事実彼らは*結合されています。一方は機能するために他方を必要とする。技術的に利用可能な範囲と範囲にあるものを誤って使用することを避けるために、一部の規律が常に必要となります。 –
一般的に、依存関係が一方向に向いていれば、あなたは良い状態です。経験則では、依存関係がユーザーから永続性に戻る(たとえば、プレゼンテーションレイヤー→サービスレイヤー→永続化レイヤー)が、両方向に移動したり、レイヤーをスキップしたりすると、問題が発生する可能性があります。 – Paul