私はこのような構造を持っています
WebUIプロジェクト-コントローラー、ビューフレームワークプロジェクト-リポジトリ、サービスレイヤーおよびドメイン
だから今私は3つのメソッド/クラスを持っています
- Open Id / Open auth
最初は、すべてのロジックをフレームワークプロジェクトのサービスレイヤーに配置すると思いました(リクエストの準備、応答の確認などはこのレイヤーにあります)。
だから今私はdotnetopenauthライブラリを使用していて、コントローラーでAsActionResultメソッドを使用する必要があるためです(サービスレイヤーにMVCが必要ないため、サービスレイヤーから "OutgoingWebResponse"を返します)
サービスレイヤーにMVCを何も持たないことにしたとき、私は考えさせられました。私が読んだように、ビジネスロジックを含むサービスレイヤーにはMVC参照のような依存関係があってはなりません。これは、Windows Phoneアプリケーションにアクセスする場合、MVCのものを使用するべきではないためです。
ビジネスレイヤーは、あらゆるアプリケーションへのプラグアンドプレイのようなものでなければなりません。
したがって、上記の理由だけで、openId用に作成したものをmvcプロジェクトのmodelsフォルダーに移動する必要があるかどうかがわかりません。Windows Phoneアプリケーションまたはフォームアプリケーションにアクセスした場合、これらのタイプのアプリケーションではサポートされていないと思われるため、dotnetopenauthを使用しません。
2つ目は、フォーム認証です。繰り返しますが、上記とほぼ同じ理由です。これは、ローカルサービス/リポジトリレイヤー(つまり、同じプロジェクトファイル内)と同じようにモデルフォルダーに配置する必要があります。
私はnhibernate、fluent nhiberate、ninjectを使用しています。私のリポジトリはすべて私のフレームワークプロジェクトにあります。だから私はもちろんそこにすべての参照を持っています。しかし、私はiocにninjectを使用しているので、webuiプロジェクトにもすべての参照があります。
私のwebuiからこれらの参照を取り除くためにこれを変更できるかどうかはわかりません。彼らは私が行くべきだと思う私のwebuiに私のiocを置くことができないので、私はノーと考えています。