はじめに
MVCモデルでアプリケーションを新規作成しています。
DB接続は「Entity Framework」を使いました。
いよいよ実装ですが、レイヤードアーキテクチャで行おうと思います。
レイヤードアーキテクチャとは
レイヤードアーキテクチャは、ソフトウェアを機能や責務ごとに論理的な層(レイヤー)に分割して構築するソフトウェア設計パターンです。
プレゼンテーション層
ユーザーインターフェースを扱う層
ブラウザなどがこれにあたり、ユーザーからの入力受付や情報の表示を行います。
アプリケーション層
プレゼンテーション層とドメイン層の橋渡し
プレゼンテーション層からのリクエストを受けて処理を実行し、ビジネスロジック層に渡します。
ドメイン層
ビジネスロジックが実装される層
アプリケーションの本質的な処理を行います。
インフラストラクチャ層
データベースアクセスなどを担う層
レイヤードアーキテクチャに基づくASP.NET MVC構成
図にすると以下のようになります。
構成
ブラウザ
ユーザーがフォーム入力やボタン操作を行う
入力値は HTTPリクエスト(POST/GET) として送信する
ビュー
ASP.NET MVCのRazorなどで作成されるHtml
コントローラ
ビューモデルを受け取り、DTOに変換してロジックに渡す
ロジック
DTOを受け取り、エンティティに変換してリポジトリに渡す
トランザクション制御や複数リポジトリの連携もここで行う
リポジトリ
データベースアクセス処理
データベース
SQLが実行される
データ構造
ビューモデル
ビューとコントローラの間のデータ転送用クラス
入力チェックや画面表示用のプロパティを持つ
UIに特化している
DTO
ロジックに渡すデータ構造
ユースケース単位の必要最小限のデータ
エンティティ
データベースのテーブルに対応するクラス