1

この ASP.NET MVC アプリケーションで Entity Framework/Repository-UnitOfWork/Service レイヤー メソッドを使用していますが、うまく機能しますが、コントローラーを薄く保つためにレイヤーが欠落しているようです。

たとえば、ユーザー認証のシナリオを見てみましょう。

1)AuthenticationControllerは aIAuthenticationServiceを取り、次にIUnitOfWorkandを取りますIRepository<User>(私は一般的なリポジトリを使用しています)。

2) コントローラーでは、サービスがユーザーを認証するという唯一の懸念事項を作成したいと思います。

if (userService.AuthenticateUser(model.userName, model.password)) {
    FormsAuthentication.SetCookie(...);
    return RedirectToAction(...);
}

return View(model);

これはコントローラーのロジックが多すぎると言う人もいますよね?したがって、次のような場合は、アプリケーション マネージャーが必要になる可能性があります。

if (appManager.AuthenticateUser(model.userName, model.password)) {
    // Here the app manager calls the service???
    return RedirectToAction(...);
}

MVC、WinForms、コンソール、WPF、WCF などで使用できるように、ドメイン サービスを消費するアプリケーションに依存しないようにしようとしています。

私のサービス レイヤーはドメイン オブジェクトのみを返します。それらをビュー モデルに変換する場所が必要ですが、それをコントローラーから除外したいと考えています。

これに関する任意の入力は素晴らしいでしょう!!

4

1 に答える 1

2

通常、AutoMapper などを使用して、ドメイン オブジェクトを ViewModel にマップします。次に、サービス層をラップする Map 呼び出しのみがあります。オブジェクト マッピングのためだけにまったく新しいレイヤーを導入する理由はほとんどありません。

于 2012-08-26T03:17:30.173 に答える