.NetCore(.Net5)快速開發框架一:前言


序言

AdmBoots 基於.NET Core生態系統最成熟技術體系,借鑒眾多開源項目的優點,旨在打造前后端分離快速開發框架,讓你開發Web管理系統和移動端Api更簡單。

框架對依賴注入、日志、緩存、模型映射、認證/授權、倉儲、健康檢測、ORM,任務調度等模塊進行更高一級的自動化封裝。

📌項目特點:代碼簡潔、易上手、學習成本低、開箱即用

📌適用人群:.NetCore入門同學,正在尋找具有以上特點框架的同學

系列教程

01.NetCore(.Net5)快速開發框架一:前言
02.NetCore(.Net5)快速開發框架二:快速開發
03.NetCore(.Net5)快速開發框架三:WebAPI性能監控-MiniProfiler與Swagger集成
04.NetCore(.Net5)快速開發框架四:實現審計日志
...

架構設計

正在整理中...

功能與技術

采用前后端分離模式,后端基於.Net5平台后端

前端使用基於React的開源腳手架adv-boot-admin

未來要實現的功能:

  • 上兩圖中未完成的功能(圖中未打對號的)
  • 持續部署集成
  • 重構完善
  • 消息隊列
  • ...

工程結構

采用DDD領域驅動設計,經典分層結構,系統層次少,分層清晰,對常翻代碼的開發人員十分友好。

如果我們我們的業務是單領域的,那么只需要在Domain層創建model,在Data層寫上一句DbSet<實體名>,在Application層寫上我們的邏輯,在API層公開出去,一個簡單的功能開發就完成了。配上代碼生成器,我們的編碼就更少了,只注重業務本身的開發就可以了。

關系布局圖

.
├── AdmBoots.Api                # API接口層
|   ├── Authorization           # 策略授權認證相關
|   ├── Controllers             # 控制器,對外提供(Restful)接口
|   ├── Extensions              # ConfigureServices擴展
|   ├── Filters                 # 過濾器
├── AdmBoots.Application        # 應用層
|   ├── AutoMapProfile.cs       # AutoMapper 映射文件
|   ├── AppServiceBase.cs       # service基類,提供一些常用屬性
|   ├── ITransientDependency.cs # 依賴注入繼承接口,繼承此接口可將Application層注入到容器
├── AdmBoots.Data               # 基礎設施層-持久化層
|   ├── EntityFrameworkCore     # EF Core相關
│   │   ├── Repositories        # 自定義倉儲寫在這里  
│   │   │   ├── SqlExecuterRepository.cs# 通用sql執行器
│   │   ├── Seed                # 種子數據
│   │   └── Uow                 # 工作單元(事務處理)
│   │   └── AdmDbContext.cs     # 數據庫上下文 
│   │   └── AdmRepositoryBase.cs# 倉儲基類,在大多數的時候,這些方法已足夠應付一般實體的需要      
├── AdmBoots.Domain             # 領域層
|   ├── IRepositories           # 倉儲接口
|   ├── Models                  # 模型
├── AdmBoots.Infrastructure     # 基礎設施層-通用技術支持
├── AdmBoots.Quartz             # 基於Quartz.NET的任務調度

項目初始化

環境要求

  • Visual Studio 2019 16.8 +
  • .NET 5 SDK +
  • MySQL (支持其他庫,詳見EFCore
  • Redise (非必須)

運行系統

初始化服務端

  1. 首先在GitHub上將代碼Clone下來后,用VS2019打開,第一次打開項目工具會自動安裝系統依賴的Nuget包,靜靜等待即可。如果Nuget包還原失敗,可以在解決方案上右鍵【還原Nuget包】
  2. 打開API層的 appsetting.json 文件,設置系統啟動的必要配置

a.數據庫配置 -必須

//數據庫連接字符串
 "ConnectionStrings": {
   "Default": "Server=localhost; Port=3306;Stmt=; Database=admboot; Uid=root; Pwd=root;"
 },
 //數據庫類型
 "Database": {
   "Dialect": "mysql",
   "Version": "8.0.22" //.Net5 MySQL連接驅動要求提供版本號 https://github.com/PomeloFoundation/Pomelo.EntityFrameworkCore.MySql
 },

b.緩存配置 -非必須,如需使用Redis,請配置Redis連接。默認MemoryCache

//Redis配置 Configuration=""時,系統使用MemoryCache
"Redis": {
   "Configuration": "", //127.0.0.1:6379
   "InstanceName": "AdmBoots"
 },

c.日志配置 -非必須,如果需要將日志輸出到數據庫,在Serilog節點需配置對應數據庫連接。默認輸出到文件

 //Serilog配置
 "Serilog":
   "WriteTo": [
     {
       "Name": "MySQL",
       "Args": {
         "connectionString": "Server=localhost; Port=3306;Stmt=; Database=admboot; Uid=root; Pwd=root;",
         "tableName": "Logs",
        "restrictedToMinimumLevel": "Warning"
       }
     }     
   ]
 }
  1. 初始化種子數據
    初始化種子數據分為三種方式
    a.第一次運行程序會自動初始化種子數據。

      public void Configure(IApplicationBuilder app, IWebHostEnvironment env, IApiVersionDescriptionProvider provider) {
                ...
                //程序第一次運行時初始化數據庫及種子數據, 初始化完畢后,可注銷此處避免每次都做數據庫檢查
                app.InitializeDatabase();
    			...
                }
    

    b. 使用Code First遷移命令,這里已為大家生成好遷移文件,打開程序包管理控制台,大家只需要做執行以下命令即可

     PM> update-database -Context AdmDbContext
    

    c. sql腳本插入 SQL 文件夾,打開項目根目錄下的,將里面的 AdmBoots_mysql.sql

    使用Quartz.Net定時任務功能需手動執行sql文件quartz_mysql.sql (其他數據庫建表腳本https://github.com/quartznet/quartznet/tree/master/database/tables)

  2. 驗證
    啟動項目,出現Swagger頁面,項目初始化成功!

    Swagger頁面上,如果Controller上有小鎖的標志,表示需要先登錄后才能進行測試驗證。點擊authorize按鈕,輸入admin,a123456登陸。

    初始化前端

    $ git clone https://github.com/xuke353/AdmBoots-Client.git
    $ cd AdmBoots-Client
    // 安裝依賴
    $ yarn
    // 啟動
    $ yarn start
    

    啟動成功后(先保證服務端開啟),瀏覽器輸入http://localhost:3000/

最后

這里推薦使用項目啟動方式,項目啟動本質上就是執行了 dotnet run AdmBoots.Api.dll。

<!--AdmBoots.Api.csproj 使用進程外托管-->
<PropertyGroup>
     <TargetFramework>netcoreapp2.2</TargetFramework>
     <AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
</PropertyGroup>

ASP.NET Core 3.X默認為進程內托管。當配置了OutOfProcess的時候,無論使用iis啟動還是dotnet run啟動都是外進程,使用iis啟動可以理解為iis作為了反向代理,用dotnet run啟動可以視為自己作為內部服務器和反向代理結合使用

下一篇我們講如何 使用該框架進行業務開發,以及權限配置使用,平時比較忙,更新可能不及時,有問題的小伙伴可以先入群

源碼地址

后端:https://github.com/xuke353/AdmBoots
gitee:https://gitee.com/xuke353/AdmBoots

前端:https://github.com/xuke353/AdmBoots-Client
gitee:https://gitee.com/xuke353/AdmBoots-Client


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM