asp.netで単純なMVCアプリケーションを構築しています。依存性逆転の原則に従いたいのですが、正しく行っているかどうかわかりません。
私は現在、認証システムに取り組んでいます。内部でAuthenticatorサービスを使用するAccountControllerがあります。オーセンティケーターサービスは、コンストラクターインジェクションによってコントローラーにインジェクトされます。
public class AccountController : Controller
{
private IAuthenticator _authenticator;
public AccountController(IAuthenticator authenticator)
{
_authenticator = authenticator;
}
//
// POST: /Account/Login
[HttpPost]
public ActionResult Login(LoginModel model, string redirectToUrl = null)
{
...
}
ファイルの構造は次のとおりです。
しかし、コントローラーとその依存関係の間の良識を完全に逆転させたい場合は、認証サービスのインターフェースをコントローラーの隣に移動する必要があると考えていました。このようなもの:
このようにして、クライアント(コントローラー)とサービスの抽象化は同じ名前空間に存在します。したがって、サービスのインターフェースの変更はクライアントから行われ、サービスの実装に伝達されます。以前の方法の代わりに、サービスで発生する変更がクライアントに伝播されました。依存関係は反転しています-サービスはクライアントに依存しています。
クライアントとサービスが異なるアセンブリにある場合にこれの利点を確認できますが、同じアセンブリに関してこれを行う必要があるかどうかはわかりません。
私がこれを正しく行っているかどうか、そして最初のファイル構造を使用するか、2番目のファイル構造を使用するかを教えてください。
ありがとう、Asier