ASP.NET Core模組化前後端分離快速開發框架介紹之2、快速建立一個業務模組

oldli發表於2019-05-22

原始碼地址

GitHub:https://github.com/iamoldli/NetModular

演示地址(換了臺新伺服器,應該不怎麼卡了~)

地址:http://129.211.40.240:6220
賬戶:admin
密碼:admin

前端框架演示地址(臨時)

地址:http://progqx5cu.bkt.clouddn.com/skins/index.html#/
賬戶:admin
密碼:admin

一、目錄

1、開篇
2、快速建立一個業務模組

二、實現快速開發的前提條件

NetModular實現快速開發有兩個前提條件:

1、約定優於配置的開發原則

2、程式碼生成器

約定優於配置是現在到處可見的一種開發原則,比如ASP.NET MVC中的HttpGetHttpPost等特性限制請求方式,比如控制器都以Controller結尾,比如SpringBoot中各種註解等,都屬於約定優於配置,這種開發原則的好處在於可以減少開發人員需要做決定的次數,使開發變得簡單、快速,只是這是對於老手來說的,對於新手則提高了學習成本。

基本上每個開源的框架都會有配套的程式碼生成器,而程式碼生成器其實就是以約定優於配置為基礎的,只有先約定好了專案結構和開發規範,你才能實現一個程式碼生成器。與其它程式碼生成器不同,NetModular的程式碼生成器不是根據資料庫來生成程式碼,而是提供了一個單獨的模組,可以很方便的整合到任何專案當中,通過Web的形式線上配置專案、實體、屬性、模型、列舉等內容,然後可以一鍵生成專案程式碼並下載。

其實,我的最終目標是希望能夠有一個強大的視覺化編輯頁面,可以靈活配置前端的檢視頁面以及後端的實體資訊,最後直接線上編譯並熱載入到當前專案中。後端熱載入還有點思路,但是前端因為要打包的原因,現在還沒想好解決,以後努力~

三、模組的結構

上面說了,程式碼生成器是依賴與約定的,所以我們先來看下一個模組的專案結構

模組的結構

上圖中的Blog目錄,就是一個模組的示例,本身就是通過程式碼生成器生成後放到專案當中的(很多人第一眼看到以為是DDD架構的,其實不是,頂多就是個DDDLite~),先說一下每層的作用

1、Domain:領域層,包含實體、實體擴充套件、實體相關的列舉、倉儲介面

實體都已Entity結尾
倉儲介面都已Repository結尾,且必須繼承IRepository<>泛型介面
實體包含擴充套件屬性的,需要把實體設定為部分類,且擴充套件類需要以Extend.cs結尾

2、Infrastructure:基礎設施層,包含倉儲實現以及一些當前模組特有的類,像配置項等

倉儲實現位於Repositories目錄下,不同資料庫放到不同的目錄下面
模組特有的配置項放在Options目錄下

3、Application:應用服務層、包含所有的業務邏輯

每個實體對應一個目錄,目錄名稱為實體名稱+Service
每個目錄下包含有服務介面和實現、檢視模型、物件對映配置、模型驗證配置等資訊

4、Web:介面層、包含控制器、模組初始化配置等

必須建立ModuleInitializer類,且該類必須繼承IModuleInitializer介面
必須建立ModuleController基類控制器,繼承ModuleControllerAbstract抽象類,並配置Area特性用於配置區域

5、WebHost:Web主機,包含配置檔案,用於安裝所需的模組以及啟動專案

必須建立Startup類,並且繼承StartupAbstract抽象類
ProgramMain函式中,使用WebHostCreator.Run<Startup>(args);方式啟動

6、WebHost.Electron:客戶端主機,用於啟動基於 Electron.js 的客戶端程式

以上就是NetModular框架中一個模組的結構,有了約定,那麼接下來就演示一下如何通過程式碼生成器來建立專案吧。

四、程式碼生成

1、建立專案

已個人部落格為例,專案需要填名稱車和編碼

建立專案

2、新增列舉

因為文章有多媒體資訊,所以先新增一個多媒體的列舉MediaType

新增列舉

3、新增實體

新增文章Article、分類Category、標籤Tag三個實體

新增實體

4、配置實體屬性

以文章Article為例

配置實體屬性

5、生成

在專案列表中,點選生成按鈕生成程式碼並下載。

6、測試

開啟生成的程式碼,進入Blog/data目錄,按需建立資料庫,因為模組預設依賴Nm_Admin模組,所以也要建立Nm_Admin的資料庫

進入Blog/src/WebHost/config目錄,開啟db.json配置資料庫連線

回到Blog/src/WebHost目錄,代開命令列輸入以下命令啟動服務端


dotnet watch run --environment Development

進入Blog/src/UI/nm-module-blog目錄,執行以下命令來啟動前端程式碼


npm install

npm update

npm run serve

最後在瀏覽器中輸入 http://localhost:6220 進行瀏覽

介面文件地址 http://localhost:6220/swagger/index.html

如果沒有意外的話,應該可以了~

原文首發:ASP.NET Core模組化前後端分離快速開發框架介紹之2、快速建立一個業務模組

相關文章