クリーン アーキテクチャ ソリューション テンプレート


.NET API に取り組んでいるとき、私はクリーン アーキテクチャ パターンの大ファンになりました.このテーマについては、私が最初に学んだジェイソン・テイラー氏など、すでに多くの優れたリソースがあるため、ここでは詳しく説明しません.このパターンに慣れていない場合は、GOTO 2019 カンファレンスでの Jason による次のプレゼンテーションをご覧ください.



しかし、10,000 フィート レベルでは、Clean Architecture パターンを使用する API プロジェクトには 4 つの個別のプロジェクトがあります (必要な単体テスト プロジェクトと共に).
  • ドメイン – このプロジェクトは、アプリケーションのドメイン エンティティを保持するためのものです.このプロジェクトのクラスは、アプリケーションが使用するように構成されているデータ ストア内のデータ テーブルまたはレコードにマップされます.
  • アプリケーション – このプロジェクトには、アプリケーション全体を想定どおりに実行させるビジネス ロジックとルールが含まれています.ドメイン プロジェクトを直接参照しますが、ソリューション内の他のプロジェクトは参照しません.
  • インフラストラクチャ – このプロジェクトには、データベース、ファイル システム、その他の HTTP API などの外部エンティティと通信する必要があるロジックの実装が含まれています.アプリケーション プロジェクトを参照して、前述の外部エンティティにアクセスするために実装するアプリケーション コントラクトにアクセスします.
  • Api – これはアプリケーションのフロントエンドであり、スタートアップ コードと API エンドポイント エントリ ポイントを提供します.

  • ソリューション テンプレート Nuget パッケージ


    StaticSphere.CleanArchitecture.Api という Nuget パッケージを作成し、Nuget.org に公開しました.次のコマンドを使用してインストールできます.

    dotnet new --install StaticSphere.CleanArchitecture.Api
    


    インストールしたら、次のコマンドを実行して新しいソリューションを作成できます.

    dotnet new clean-arch <<parameters>>
    


    実行すると、次のフォルダー構造を含む完全な .NET 6 ASP.NET API ソリューションが得られます (ソリューションに HelloWorld という名前を付けたと仮定します).
  • ソース
  • HelloWorld.Api
  • HelloWorld.アプリケーション
  • HelloWorld.ドメイン
  • HelloWorld.Infrastructure

  • テスト
  • HelloWorld.Api.Tests
  • HelloWorld.Application.Tests
  • HelloWorld.Infrastructure.Tests


  • プロジェクトはすべて、nullable references typesimplicit usings が有効になっている .NET 6 アプリケーションです.単体テスト プロジェクトでは、すぐに使用できる Xunit が使用されます. .gitignore、.editorconfig などのサポート ファイルもあります.

    作成されるソリューションを変更する dotnet new コマンドに渡すことができるパラメーターがあります.
  • –includeTests – テスト プロジェクトを含めるかどうかを決定します.デフォルト値: true
  • –skipRestore – 指定した場合、作成時のプロジェクトの自動復元をスキップします.デフォルト値: false
  • –useStartup – API プロジェクトが新しい最小 API スタイルの Program.cs ファイルの代わりに Startup.cs を使用するかどうかを決定します.デフォルト値: false
  • –includeEF – 設定されている場合、作成されたソリューションには Entity Framework Core が含まれ、指定されたプロバイダーを使用するように構成されます (これらのプロバイダーのみが現在サポートされています)
  • postgres – Postgres Entity Framework 構成を追加します
  • sqlserver – SQL Server Entity Framework 構成を追加します


  • オープンソース



    ソリューション テンプレートを含む Nuget パッケージは、完全に無料のオープン ソースであり、MIT ライセンスされています. Nuget パッケージは here で見つかり、テンプレートのソース コードは here で見つかります.提案がある場合、またはテンプレートに貢献したい場合は、お知らせください.