まず、MasaFrameworkとは何かを理解しましょう
MasaFrameworkは、.NET 6.0ベースのバックエンドフレームワークで、Webアプリケーション、WPFプロジェクト、コンソールアプリケーションの開発に使用できます。
つまり、MasaFrameworkは多くの機能を提供するパッケージ群であり、非常に強力で、Daprのサポートに優れています。Daprを試してみたい方は、MasaFrameworkを試すことをお勧めします。
それでは、MasaFrameworkを使って実践に入りましょう
- MasaFrameworkプロジェクトテンプレートのインストール
dotnet new install Masa.Template
これでインストール成功です:

- プロジェクトの作成
任意のディレクトリを開き、コンソールでテンプレートプロジェクトを作成します。mfDemo という名前のプロジェクトテンプレートを作成します。
dotnet new masafx --name mfDemo
これで作成完了です。ソリューションを開きます。

- プロジェクト構造の解析

ソリューションを開くと、上記のようなプロジェクト構造が確認できます。
プロジェクトは src/ApiGateways、src/Contracts、src/Services、src/Web の4層に分かれています。この時点で、従来のAbpアーキテクチャ設計と異なる点に疑問を感じる方もいるかもしれませんが、これこそがMasaFrameworkフレームワークの素晴らしい点です。
src/ApiGateways には、外部向けインターフェースの実装(管理者注:クライアント側インターフェース呼び出しのカプセル化)が含まれています。つまり、src/ApiGateways をそのまま src/Web のフロントエンドプロジェクトで使用できます。これにより、フロントエンドプロジェクトの依存性が減り、インターフェースの迅速な連携が容易になります。
src/Contracts には、基本的なモデルやいくつかの共有要素が含まれています。src/Contracts は純粋で、依存関係が一切ありません。そのため、src/ApiGateways と src/Services はどちらも src/Contracts に直接依存し、Model などの共有に使用します。
src/Services には、具体的なビジネスロジックとその実装が含まれており、Host も含まれます。Application には、ビジネス処理やイベント処理が含まれています。

MiniApi を使用していない場合は、代わりに Controllers が表示されるはずです。

実際には MiniApi の使用をお勧めします。なぜなら、2つの実装方法が異なり、MiniApi は性能面で Controllers よりも優れているからです。
Infrastructure にはプロジェクトのインフラストラクチャが含まれています。図から、Entity、Middleware、Repository、DbContext がすべてインフラストラクチャ内にあることがわかります。

MasaFramework の設計は、プロジェクトの複雑さを簡素化し、それらを1つのプロジェクトに統合することです。MasaFramework を使い始めたばかりの場合は、絶対に分割しないでください。分割すると、MasaFramework 自体の設計と適合しなくなります。ただし、熟練したエキスパートの場合は、その限りではありません。MasaFramework を始めたばかりの方は、必ずフレームワーク自体の設計に従ってください。
src/Web は、実際のフロントエンドプロジェクトです。
デフォルトで作成されるテンプレートは、Blazor Server モードのプロジェクトです。必要に応じて、mfDemo.Shared、mfDemo.Server、mfDemo.WebAssembly の3層プロジェクトアーキテクチャに分割することもできます。
mfDemo.Shared は、プロジェクトのすべての実装、UIファイルの構成など、すべての機能を内包するものと理解できます。
mfDemo.Server は、基本的には Blazor Server のシェルであり、mfDemo.Shared プロジェクトをホストするために使用されます。
mfDemo.WebAssembly も、基本的には Blazor WebAssembly のシェルであり、mfDemo.Shared プロジェクトをホストするために使用されます。
これにより、プロジェクトは Blazor Server と Blazor WebAssembly の両方のモードをサポートできるようになります。
おわりに
上記の内容を通じて、MasaFramework のプロジェクト構造を基本的に理解でき、MasaFramework の設計も把握できました。
今回は MasaFramework の入門編第一弾です。引き続き MasaFramework を学び、皆さんと共有していきます。
token からの共有
学習・交流: 737776595