[解決済み] MVCアプリケーションのService Layerを作成する?
質問
私の理解では、MVCはクラス定義(モデル)とプレゼンテーション(ビュー)を、コントローラであるquot;glue"を介して分離しています。 コントローラは単一の責任を持つ必要があり、したがってテスト可能である必要があります。 ViewModels は、複数のエンティティからデータを集め、コントローラからビューにデータを転送するために使用されます。
ビジネスロジックの居場所がないような...だから、サービス用の別のレイヤーが適していると思うんだ。 このレイヤーをどこに配置すればよいのか、どのようにサービスを構築すればよいのかがわかりません - 関数の束を含む "services" というクラスでよいのでしょうか? 私はMVCに少し慣れていないので、何か読み物、サンプル、または一般的な新人の種類のヒントがあれば最高です。
どのように解決するのですか?
ASP.NET MVCアプリケーションを開発するとき、私は通常サービスレイヤーを使用します。 これは サービスレイヤーパターン でMartin Fowlerが議論している エンタープライズアプリケーションアーキテクチャのパターン . これはビジネスロジックをカプセル化し、コントローラをかなり薄くするものです。 基本的に、コントローラはサービスレイヤーを使ってドメインモデルを取得し、それをビューモデルに変換します。 また、私は ユニットオブワークデザインパターン を使ってトランザクションを処理し リポジトリデザインパターン でデータアクセスレイヤーをカプセル化し、ユニットテストを容易にし、ORMを簡単に交換できるようにしています。 この図は、私がMVCアプリケーションで使用している典型的なレイヤーを示しています。
この図では、サービス層はアプリケーション層またはドメイン層と表記されていますが、これはサービス層という言葉を使うと混乱するからです。 というのも、「サービス層」という言葉を使うと、人は混乱するからです。 実際には、ASP.NET Web APIやWCFなどの好みのWebサービス技術で使用できるアセンブリであり、コントローラでもあります。
命名規則については、私は通常、ドメインを表すものを使用し、その後にサービスを続けます。たとえば、ユーザー メンバーシップを処理するサービス レイヤーがある場合、MembershipService というクラスがあり、コントローラおよび Web サービスがメンバーシップ ドメインを照会および操作するために必要なすべてのメソッドを備えています。同じアプリケーションに複数のドメインが存在する場合、複数のサービスレイヤーを持つことができることに注意してください。 私がここで言いたいのは、アプリケーション全体を管理するモノリシックなサービスを1つ持つ必要はないということです。
関連
-
[解決済み】VS 2015でコントローラからビューを追加できない : "選択されたコードジェネレータの実行にエラーが発生しました"
-
[解決済み] Razor View Engine : 式ツリーには、動的な操作を含めることができません。
-
[解決済み] ファイルアップロード ASP.NET MVC 3.0
-
[解決済み] MVCにおけるViewModelとは?
-
[解決済み】サービスは常にDTOを返すべきですか、それともドメインモデルも返すことができますか?
-
[解決済み】ViewModelのベストプラクティス
-
[解決済み】Java Server Faces 2.0の主なデメリットは何ですか?
-
[解決済み] Razorを使ってエンコードされていないJsonをViewに書き込むにはどうしたらいいですか?
-
[解決済み] NerdDinnerでASP.NET MVCでModelState.IsValidは何のために有効なのか?
-
[解決済み] DTO = ViewModel?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] ファイルまたはアセンブリ 'System.Web.Mvc' を読み込めませんでした。
-
[解決済み] RedirectToActionのパラメータとしてmodelを渡すことはできますか?
-
[解決済み] ASP.Net MVCのmodelStateからすべてのエラーを取得する方法は?
-
[解決済み】ASP.NET MVCのフォームでチェックボックスを処理するにはどうすればよいですか?
-
[解決済み】NULLモデルを持つrenderpartialは、間違った型を渡される
-
[解決済み] [Solved] ASP.NET MVCコントローラメソッドからJSON.NETでシリアライズされたcamelCase JSONを返すにはどうすればよいですか?
-
[解決済み】Html.ActionLinkを使用して別のコントローラのアクションを呼び出す
-
[解決済み】AutoMapper.CreateMapsをどこに配置するか?
-
[解決済み] MVCとRazorにおけるHtml.TextboxForとHtml.EditorForの相違点
-
[解決済み] NerdDinnerでASP.NET MVCでModelState.IsValidは何のために有効なのか?