原始碼地址
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中的HttpGet
、HttpPost
等特性限制請求方式,比如控制器都以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
抽象類
在Program
的Main
函式中,使用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
如果沒有意外的話,應該可以了~