天天看點

.NET Core之ABP vNext 開發實戰(三) 熟悉項目構造

※ 官網介紹:

.NET Core之ABP vNext 開發實戰(三) 熟悉項目構造

(一)Domain.Shared

項目包含常量,枚舉和其他對象,這些對象實際上是領域層的一部分,但是解決方案中所有層/項目中都會使用到。

該項目不依賴解決方案中的其他項目,其他項目直接或間接依賴該項目。

(二)Domain

解決方案的領域層. 它主要包含 實體, 集合根, 領域服務, 值類型, 倉儲接口 和解決方案的其他領域對象。

它依賴 .Domain.Shared 項目, 因為項目中會用到它的一些常量,枚舉和定義其他對象.

(三)Application.Contracts

項目主要包含 應用服務 interfaces 和應用層的 資料傳輸對象 (DTO)。

它用于分離應用層的接口和實作. 這種方式可以将接口項目做為約定包共享給用戶端。

它依賴 .Domain.Shared 因為它可能會在應用接口和DTO中使用常量,枚舉和其他的共享對象。

(四)Application

項目包含 .Application.Contracts 項目的 應用服務 接口實作.

它依賴 .Application.Contracts 項目, 因為它需要實作接口與使用DTO.

它依賴 .Domain 項目,因為它需要使用領域對象(實體,倉儲接口等)執行應用程式邏輯

(五)EntityFrameworkCore

這是內建EF Core的項目. 它定義了 DbContext 并實作 .Domain 項目中定義的倉儲接口

它依賴 .Domain 項目,因為它需要引用實體和倉儲接口.

(六)EntityFrameworkCore.DbMigrations

包含解決方案的EF Core資料庫遷移. 它有獨立的 DbContext 來專門管理遷移.

它依賴 .EntityFrameworkCore 項目,因為它重用了應用程式的 DbContext 配置

(七)DbMigrator

這是一個控制台應用程式,它簡化了在開發和生産環境執行資料庫遷移的操作.當你使用它時;

  1. 必要時建立資料庫(沒有資料庫時).
  2. 應用未遷移的資料庫遷移.
  3. 初始化種子資料(當你需要時).

    它依賴 .EntityFrameworkCore.DbMigrations 項目 (針對EF Core),因為它需要通路遷移檔案.

    它依賴 .Application.Contracts 項目,因為它需要通路權限定義在初始化種子資料時為管理者使用者賦予所有權限.

(八) HttpApi

用于定義API控制器。大多數情況下,你不需要手動定義API控制器,因為ABP的動态API功能會根據你的應用層自動建立API控制器. 但是,如果你需要編寫API控制器,那麼它是最合适的地方.

它依賴 .Application.Contracts 項目,因為它需要注入應用服務接口.

(九)HttpApi.Client

定義C#用戶端代理使用解決方案的HTTP API項目. 可以編輯共享給第三方用戶端,使其輕松的在DotNet應用程式中使用你的HTTP API(其他類型的應用程式可以手動或使用其平台的工具來使用你的API).

ABP有動态 C# API 用戶端功能,是以大多數情況下你不需要手動的建立C#用戶端代理.

.HttpApi.Client.ConsoleTestApp 項目是一個用于示範用戶端代理用法的控制台應用程式.

它依賴 .Application.Contracts 項目,因為它需要使用應用服務接口和DTO.

如果你不需要為API建立動态C#用戶端代理,可以删除此項目和依賴項

(十)Web

包含應用程式的使用者界面(UI).如果使用ASP.NET Core MVC UI, 它包括Razor頁面,javascript檔案,樣式檔案,圖檔等…

包含應用程式主要的 appsettings.json 配置檔案,用于配置資料庫連接配接字元串和應用程式的其他配置

它依賴 .HttpApi 項目,因為UI層需要使用解決方案的API和應用服務接口.

※ 簡單了解:

Application: 展示給前端的UI接口,使用Swagger的就非常直覺,也友善調試

Contract:類的接口存放的地方,也存放Dto的檔案,一般用在IOC依賴注入

DbMigrator:初始化資料庫層,基本上第一次初始化後,很少用到了

Domain:實體領域層,對應着資料庫中的表,這裡存放倉儲的類接口或者Eto

Domain Shared:可以了解為公共類,model,Core,consts,unities類

Ef Core:倉儲層,以前的DbLayer層,這裡使用DbContext,可以自定義倉儲

Ef Core Migrations:結合Domain的實體生成的資料庫遷移檔案,熟悉指令

HttpApi:自定義的API接口,API Controller,這裡也很少用到

HttpApi.Client:用戶端API,對前端非常友好

Host:啟動項,資源存放的地方

分塊去了解,大緻可以這樣:

Application+Contract+HttpApi:展示層

Domain+DomainShared:資料領域層

EfCore+Migrations:倉儲領域層

其他暫時可以了解為輔助層,對内資料庫初始化,對外用戶端展示API。

.NET Core之ABP vNext 開發實戰(三) 熟悉項目構造
.NET Core之ABP vNext 開發實戰(三) 熟悉項目構造