【abp Vnext】abp Vnextプロジェクトの詳細なチュートリアルドキュメントをダウンロードして実行します

ソフトウェア環境: コンピューターには基本的なソフトウェア環境が必要です。node.js、npm、多くのオンライン チュートリアルがあります。Baidu
mysql インストール チュートリアル: Mysql のインストールと初回ログインのパスワード変更ペースト
Redis インストール チュートリアル: Redis のインストールとクライアントのインストールの詳細なチュートリアル

1. Visual Studio 2022をインストールする

Professional 2022 の公式ダウンロード: https://visualstudio.microsoft.com/zh-hans/vs/
ここに画像の説明を挿入
ダウンロードが完了したら、インストールします:
ここに画像の説明を挿入
[続行] ボタンをクリックすると、次のスクリーンショットが表示されますので
ここに画像の説明を挿入
、確認してください ( ASP.NET および Web 開発)および Visual Studio 拡張機能の開発)
ここに画像の説明を挿入
ここに画像の説明を挿入

インストール場所をカスタマイズし、「インストール」をクリックします
ここに画像の説明を挿入

ここに画像の説明を挿入


1. ABP CLI スキャフォールディングをインストールする

コマンド ライン ターミナルに ABP CLI をインストールします。

dotnet tool install -g Volo.Abp.Cli

エラーが次の場合は、ローカル ネット SDK のバージョンが 7.0 より低いことを意味します。
ここに画像の説明を挿入
解決策
1. 公式 Web サイトから .NET 7.0 をダウンロードします: https://dotnet.microsoft.com/en-us/download/dotnet/7.0
2. コンピュータ システムとダウンロードするバージョン番号に応じて (私のコンピュータは Windows10 x64 バージョンです)
ここに画像の説明を挿入
インストールが完了したら、ターミナルでコマンドを入力してバージョンが 7 であることを確認し、問題がないことを確認します。

dotnet --info

ここに画像の説明を挿入
ターミナルに次のコマンドを再度入力して、ABP CLI をインストールします。

dotnet tool install -g Volo.Abp.Cli

正常に実行された後のスクリーンショット
ここに画像の説明を挿入


2. abp フレームワーク構成を選択します

abp 公式ウェブサイト: https://abp.io/get-started
ニーズに応じて対応する構成を選択します (私はマルチレイヤー アプリケーション、mvc UI フレームワーク、mysql データベース、モバイル端末なしを選択しました)
ここに画像の説明を挿入

次にコマンドをコピーします
ここに画像の説明を挿入

cmd ポップアップ ウィンドウを使用して、指定したプロジェクト フォルダーに入り
、次のコマンド ラインを入力します。

abp new Acme.BookStore -dbms MySQL --tiered --theme basic 

ここに画像の説明を挿入

次のように表示され、成功を示します
ここに画像の説明を挿入


3. abp フレームワークを実行する

ダブルクリックして vs2022 で開きます

ここに画像の説明を挿入

デフォルトの構造では、
ここに画像の説明を挿入
起動項目として Acme.BookStore.DbMigrator が選択されます
ここに画像の説明を挿入

データベース構成を変更します。の appsettings.json ファイルを、接続する必要のある mysql データベースに
変更します。 Server はデータベース IP、Port はポート、Database はデータベース名、Uid はデータベース アカウント、Pwd はデータベースですパスワードAcme.BookStore.AuthServerAcme.BookStore.DbMigratorAcme.BookStore.HttpApi.Host

ここに画像の説明を挿入
EntityFrameworkCore を選択して、ツール == "NuGet パッケージ マネージャー ==" パッケージ マネージャー コンソール == "デフォルト プロジェクト" にここに画像の説明を挿入
Microsoft.EntityFrameworkCore.Design パッケージをインストールします。
ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入
注:
次のコマンドは cmd コマンド ウィンドウに入力されるため、クエリされるバージョン番号は 7.0.202 です。

dotnet --version

したがって、Microsoft.EntityFrameworkCore.Tools次のように、パッケージをバージョン 7.0.2 にダウングレードする必要があります (最初にプロジェクトに付属の 7.0.4 をアンインストールしてから、7.0.2 をインストールします。そうしないと、プロジェクトでエラー 500.30 が報告されます)。
ここに画像の説明を挿入

上記のインストールが完了したら、コンソールに次のコマンドラインを入力して移行ファイルを生成します。

Add-Migration Init

ここに画像の説明を挿入
実行後に移行コマンドを実行します。

 Update-Database

ここに画像の説明を挿入
次に、スタートアップ項目を構成します。ソリューション Acme.BookStore で、[スタートアップ項目の構成] を選択して
ここに画像の説明を挿入
複数のスタートアップ項目を選択し、AuthServer とホストを変更して、[適用]、[OK] をクリックし、最後に Ctrl+F5 を押して実行します。
ここに画像の説明を挿入

効果の画像は次のとおりです。
ここに画像の説明を挿入


ここに画像の説明を挿入


ピットポイントを踏む:

1. Net SDK7.0 をインストールする前に Vs2022 バージョンを使用する必要がある場合、移行の実行時にエラーが報告されます。

2. Net SDK バージョン 7.0.202 がローカルにインストールされているため、プロジェクト Acme.BookStore.EntityFrameworkCore ソリューションの NuGet ソリューションをバージョン 7.0.2 に下げる必要があります。そうしないと、プロジェクトの実行時にエラー 500.30 が報告されます。

3. 公式ドキュメント:ディレクトリ構造の役割の紹介


プロジェクトは、src フォルダーと test フォルダーに編成されます。src フォルダーには、前述の DDD 原則に基づいて階層化された実際のアプリケーションが含まれています。次の図は、ソリューションの階層とプロジェクトの依存関係を示しています。

ここに画像の説明を挿入

以下に、ソリューション内のプロジェクトと依存関係について説明します。

.ドメイン.共有アイテム

プロジェクトには、定数、列挙型、および実際にはドメイン レイヤーの一部であるその他のオブジェクトが含まれていますが、ソリューション内のすべてのレイヤー/プロジェクトによって使用されます。

たとえば、BookType 列挙型と BookConsts クラス (おそらく
MaxNameLength など、Book エンティティによって使用される定数フィールド) がこのプロジェクトに適しています。

このプロジェクトは、ソリューション内の他のプロジェクトに依存しません。他のプロジェクトは、このプロジェクトに直接的または間接的に依存しています。

.ドメインプロジェクト

ソリューションのドメイン層。主にエンティティ、コレクション ルート、ドメイン サービス、値の種類、ストレージ インターフェイス、およびソリューションのその他のドメイン オブジェクトが含まれます。

たとえば、Book エンティティと IBookRepository インターフェイスは、このプロジェクトに配置するのに適しています。

.Domain.Shared プロジェクトに依存します。その定数、列挙、および他のオブジェクトの定義の一部がプロジェクトで使用されるためです。.Application.Contracts プロジェクトには、主にアプリケーションのアプリケーション サービス
インターフェイスとデータ転送オブジェクト (DTO) が含まれています。インターフェイスとアプリケーション層の実装を分離するために使用され、
インターフェイス プロジェクトを契約パッケージとしてクライアントと共有できます。

たとえば、IBookAppService インターフェイスと BookCreationDto クラスはこのプロジェクトに適しています。

アプリケーション インターフェイスや DTO で定数、列挙型、その他の共有オブジェクトを使用する可能性があるため、.Domain.Shared に依存します。

.アプリケーションプロジェクト

プロジェクトには、.Application.Contracts プロジェクトのアプリケーション サービス インターフェイス実装が含まれています。

たとえば、BookAppService クラスはこのプロジェクトに適合します。

インターフェイスを実装して DTO を使用する必要があるため、.Application.Contracts プロジェクトに依存し、
アプリケーション ロジックを実行するためにドメイン オブジェクト (エンティティ、ストレージ インターフェイスなど) を使用する必要があるため、.Domain プロジェクトに依存します。プロジェクトは EF
Core プロジェクトと統合されており、DbContext を定義し、.Domain プロジェクトで定義されたリポジトリ インターフェイスを実装します。

エンティティとストレージ インターフェイスを参照する必要があるため、.Domain プロジェクトに依存します。このプロジェクトは、データベース プロバイダーとして EF Core を使用する場合にのみ使用できます。別のデータベース プロバイダーを選択すると、プロジェクトの名前が変わります

.EntityFrameworkCore.DbMigrations プロジェクト

ソリューション用の EF Core データベース移行が含まれており、移行管理専用の別の DbContext があります。

ABP はモジュラー フレームワークであり、理想的な設計は、各モジュールに独自の DbContext クラスを持たせることです。このとき、移行用の DbContext が役割を果たします。すべての DbContext 構成が単一のモデルに統合され、単一のデータベース スキーマが維持されます

より高度なシナリオでは、プログラムに複数のデータベース (それぞれに 1 つ以上のモジュール テーブルがある) と複数の移行 DbContext (それぞれが異なるデータベース スキーマを維持する) を含めることができます。

移行 DbContext はデータベースの移行にのみ使用され、実行時には使用されないことに注意してください。

アプリケーションの DbContext 構成を再利用するため、.EntityFrameworkCore プロジェクトに依存します。このプロジェクトは、
データベース プロバイダーとして EF Core を使用している場合にのみ使用できます。このプロジェクトの詳細については、「Entity Framework Core Migration Guide」を参照してください。

.DbMigrator プロジェクト

これは、開発環境および運用環境でのデータベース移行の実行を簡素化するコンソール アプリケーションです。

必要に応じてデータベースを作成します (データベースがない場合)。移行されていないデータベースの移行を適用します。シード データを初期化します (必要な場合)。このプロジェクトには独自の appsettings.json ファイルがあります。したがって、データベース接続文字列を変更したい場合は、覚えておいてください
。このファイルも変更します。

シード データを初期化することが重要です。ABP にはモジュール式のシード データ インフラストラクチャがあります。シード データの詳細については、ドキュメントを参照してください。

データベースの作成と移行の適用はリレーショナル データベースでのみ有用であるように見えますが、このプロジェクトは MongoDB などの NoSQL データベース プロバイダーを選択した場合でも生成され、この時点でアプリケーションに必要な初期データが提供されます

移行ファイルへのアクセスが必要なため、.EntityFrameworkCore.DbMigrations プロジェクト (EF Core 用) に依存します。
初期化時に管理者ユーザーにすべてのアクセス許可を付与するためのアクセス許可定義が必要なので、.Application.Contracts プロジェクトに依存します。シードデータ。

.HttpApi プロジェクト

API コントローラーを定義するために使用されます。

ABP の動的 API 機能はアプリケーション層に応じて API コントローラーを自動的に作成するため、ほとんどの場合、API コントローラーを手動で定義する必要はありませんが、
API コントローラーを作成する必要がある場合には、これが最適な場所です。

アプリケーション サービス インターフェイスを挿入する必要があるため、.Application.Contracts プロジェクトに依存します。.HttpApi.Client プロジェクトは、
ソリューションの HTTP API プロジェクトを使用するための C# クライアント プロキシを定義します。上記の編集はサードパーティ クライアントと共有できます。を使用すると、DotNet アプリケーションで HTTP API を使用して簡単に使用できます
(他の種類のアプリケーションは、手動で、またはプラットフォームのツールを使用して API を使用できます)。

ABP には動的な C# API クライアント機能があるため、ほとんどの場合、C# クライアント プロキシを手動で作成する必要はありません。

.HttpApi.Client.ConsoleTestApp プロジェクトは、クライアント プロキシの使用法をデモンストレーションするためのコンソール アプリケーションです。

アプリケーション サービス インターフェイスと DTO を使用する必要があるため、.Application.Contracts プロジェクトに依存します
。API 用の動的 C# クライアント プロキシを作成する必要がない場合は、このプロジェクトと依存関係を削除できます。

.Webプロジェクト

アプリケーションのユーザー インターフェイス (UI) が含まれます。ASP.NET Core MVC UI を使用する場合、
Razor ページ、JavaScript ファイル、スタイル ファイル、画像などが含まれます。

アプリケーションのメインの appsettings.json 構成ファイルが含まれます。このファイルは、データベース接続文字列およびアプリケーションのその他の構成を構成するために使用されます。


UI レイヤーはソリューションの API とアプリケーション サービス インターフェイスを使用する必要があるため、.HttpApi プロジェクトに依存します。.Web.csproj ソース コードを見ると、 .Application プロジェクトと .EntityFrameworkCore.DbMigrations プロジェクトへの参照が表示されます。

これらの参照は、UI レイヤーを作成するときに実際には必要ありません。UI レイヤーは通常、EF Core の実装やアプリケーション レイヤーに依存しないためです。
このスタートアップ テンプレートは階層化されたデプロイの準備ができており、API レイヤーは別のサーバーでホストされていますUI レイヤーから。

ただし、--tiered オプションを選択しない場合、.Web プロジェクトにはこれらの参照が含まれ、単一のアプリケーション サイトで Web、Api、およびアプリケーション層をホストできるようになります。

プレゼンテーション層でドメイン エンティティとリポジトリを使用できますが、DDD の理論によれば、これは悪い習慣であると考えられています。

テストプロジェクト

ソリューションには、各レイヤーに 1 つずつ、複数のテスト プロジェクトがあります。

.Domain.Tests はドメイン層のテストに使用されます。.Application.Tests はアプリケーション層のテストに使用
されます。.EntityFrameworkCore.Tests は EF Core 構成とカスタム ストレージのテストに使用されます。.Web.Tests
は UI (ASP 用) のテストに使用されます。 NET Core MVC UI).TestBase すべてのテスト プロジェクトのベース (共有) プロジェクトです。また、
.HttpApi.Client.ConsoleTestApp は
、HTTP API の使用法をデモンストレーションするために使用されるコンソール アプリケーション (自動テスト プロジェクトではありません) です。 .Net アプリケーション。

テスト プロジェクトは統合テストに使用されます。

これは、ABP フレームワークとアプリケーションのすべてのサービスに完全に統合されています。データベース プロバイダーが EF
Core の場合、テスト プロジェクトは SQLite インメモリ データベースを使用し、MongoDB の場合、Mongo2Go ライブラリを使用します
。 、および任意のアプリケーション サービスをテストで使用できます
。単体テストを作成することはできますが、(モック/偽のオブジェクトを準備する必要があるため) 書くのは難しくなりますが、実行は速くなります (単一のクラスのみをテストし、すべてをスキップするため)初期化プロセス)

おすすめ

転載: blog.csdn.net/weixin_43861689/article/details/129581932