前回のコンテンツASP.NET Core MVC 階層化アーキテクチャ Chap3 (個別Repositoryで独自処理を実装する)までの内容は、Repositoryパターンを用いて、Controllerからデータアクセスのオブジェクトを分離することまで出来ました。
今回は新しくプロジェクト(Model層)を作成して、その中にデータアクセスのオブジェクトをまとめる作業を行います。
そうすることで、Web層とModel層の責務がハッキリ分離することができます。
- Web層 : リクエスト処理とデータ表示
- Model層 : データアクセス
前提
このコンテンツで扱うこと
- dotnet cli で新規プロジェクトの作成&参照の設定
開発環境
環境/ソフトウェア | 内容 |
---|---|
オペレーティングシステム | Windows 10 1903 |
.NET Core SDK | 3.0.100 |
IDE | Visual Studio Code 1.39.1 |
Browser | Google Chrome 78.0.3904.70 |
dotnet cli で新規プロジェクトの作成
ソリューションフォルダ配下にて以下のdotnetコマンドを実行してください。
# 新規プロジェクト作成(クラスライブラリ)
dotnet new classlib -f netstandard2.1 -n ds.NorthwindApp.Model
ds.NorthwindApp.Modelのフォルダ配下に移動して、以下のコマンドを実行します。
## Ef Coreのモジュール追加
dotnet add package Microsoft.EntityFrameworkCore.Design
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet cli で参照の追加
再度ソリューションフォルダ配下に移動して、以下のコマンドを実行します。
## ソリューションにプロジェクトを追加
dotnet sln add ds.NorthwindApp.Model
## WebプロジェクトがModelプロジェクトを参照するように追加
dotnet add ds.NorthwindApp.Web/ds.NorthwindApp.Web.csproj reference ds.NorthwindApp.Model/ds.NorthwindApp.Model.csproj
データアクセスのオブジェクトの移動
WebプロジェクトのModels配下のクラスをすべてをModelプロジェクトに移動します。
名前空間の置き換え
名前空間を書きどおりに置き換えを行います。
置き換え前 | 置き換え後 |
---|---|
ds.NorthwindApp.Web.Models | ds.NorthwindApp.Model |
最後にプロジェクトをビルドして、動作確認を行います。
まとめ
通常、開発案件の初期段階でアーキテクチャ設計がすでに決まっています。
このように途中でプロジェクトを作成して、レイヤー分けをすることはあんまりしません。
また、プロジェクトは必ずしも分ける必要はありません。
システム規模が小さければ、フォルダをきちんと分ければそれだけでも十分です。
しかし、規模が少しでも大きくなるとオブジェクトの責務ごとに別々のプロジェクトに分けるようが構造がわかりやすいし、
メンテナンスもしやすいです。
備考
今回作成したソースコードです。
では!!( `ー´)ノ