歡迎光臨
每天分享高質量文章

.NET Core開源快速開發框架Colder釋出 (NET Core2.1+AdminLTE版)

上星期釋出的.NET452+AdminLTE版框架得到了大家的大力支援,目前GitHub已獲近100星,鄙人十分高興能夠幫助大家。其中有不少關心.NET Core的支援情況,因為未來的.NET平臺是屬於.NET Core的,為此,鄙人花了一星期將程式碼移植到.NET Core2.1,不負眾託,在此推出NETCore+AdminLTE版。

本框架旨在為.NET開發人員提供一個Web後臺快速開發框架,採用本框架,能夠極大的提高專案開發效率。

本版本框架採後端採用基於.NET Core的ASP.NET
Core2.1,前端從原來的Easyui升級為基於Bootstrap的AdminLTE,支援響應式佈局,提高使用者體驗(提高逼格)。

框架主要功能如下表:

使用者登入、密碼修改 使用者登入、密碼修改
系統使用者管理 系統使用者管理
角色管理 角色管理
許可權管理 基於使用者的許可權、基於角色的許可權、選單許可權、操作許可權(按鈕許可權)、介面許可權、資料許可權
系統日誌 支援使用ElasticSearch記錄日誌
快速開發 透過資料庫直接生成物體層、業務邏輯層、檢視層程式碼,無需編碼即可實現CURD
資料庫操作封裝 使用基於EF的倉儲樣式、封裝常用的CURD,支援單庫事物和分散式事物
多資料庫支援 使用基於EF的倉儲樣式,支援各大主流關係型資料庫(SQLServer、MySQL、PostgreSQL)
快取支援 支援系統自帶快取和Redis快取、封裝操作介面、簡單易用
分散式Session支援 禁用自帶Session,使用自定義Session,一鍵開啟分散式Session
頁面響應式 基於Bootstrap,支援響應式佈局,移動端能夠輕鬆訪問
其它各種幫助類庫及外掛 其它各種幫助類庫及外掛

後臺展示如下:

版本參照請看下錶:

開發環境要求

作業系統:Windows 10

開發工具:Visual Studio 2017

SDK:安裝.NET Core2.1及以上

資料庫:SQLServer2008 R2及以上

基礎資料庫構建

使用本框架需要構建基礎資料庫,具體步驟如下:

建立基礎資料庫的Sql指令碼檔案在:/docs/初始化檔案/db.sql,在資料庫中執行db.sql指令碼即可建立資料庫:
Colder.Fx.Core.AdminLTE

若Sql執行出錯,請直接使用同目錄下的db.bak還原資料庫

開啟src目錄下Colder.Fx.Core.AdminLTE的解決方案,如下圖

如下圖所示依次展開05.Coldairarrow.Web=>appsettings.json,配置資料庫連線字串,name不用修改,connectionString改為上述建立的資料庫(若不清楚資料庫連線字串請自行百度搜索教程)

自此基礎資料庫配置完成。

資料庫設計規範

由於本框架支援自動生成程式碼的核心功能,此功能是根據資料庫的表結構來生成程式碼的

因此規定每張表都有一個主鍵,列名為Id,型別為字串,實際新增資料時預設使用GUID的字串形式,表中的每個列都需要有描述資訊(建議這樣操作,若不按照這個標準則需要一些額外的改動才能夠成功執行)。

執行

請先還原Nuget包

然後將05.Coldairarrow.Web設為啟動專案,成功執行即可進入以下頁面

程式碼架構

專案程式碼分層,詳情見原始碼中的說明書,部落格園放會被判為重覆文章,敬請諒解。

功能架構

全域性配置

在01.Coldairarrow.Util中的GlobalSwitch類中,設定了各個引數,其中RunModel需要重點關註一下,若RunModel==RunModel.LocalTest,則系統會直接跳過登入,預設使用Admin超級管理員登入,其它引數請看註釋。

快速開發

使用此功能請確保GlobalSwitch.RunModel= RunModel.LocalTest

此功能為本框架的核心功能,能夠自動生產完整的可執行程式碼,具體使用如下:

首選需要有資料庫源,因為程式碼生成是根據資料庫表來生成的。

選單:開發=>快速開發=>資料庫連線管理

若串列中沒有標的資料源,則新增資料庫連線

資料連線名、連線字串、資料庫型別即可。新增完成後即可看到連線字串資訊。

有了資料庫連線之後,即可進行程式碼生成。

選單:開發=>快速開發=>程式碼生成

選擇資料庫,然後勾選需要生成程式碼的資料庫表,點選生成程式碼會彈出生成選項(這裡暫時只能勾選Dev_Project,其餘表全是系統基礎表,不要勾選,否則會被改寫,導致異常,請勾選自己的業務表進行生成):

生成選項中可以選擇需要生成的型別,可以預設生成物體層、業務邏輯層、控制器和檢視。

生成區域對應MVC中的Areas,請按需填入(必填)

這裡示例填寫ProjectManage,點選生成按鈕,即可完成程式碼生成。生成後的程式碼在專案解決方案中,將程式碼檔案包括進入專案(.NET
Core專案預設會自動包括新生成的檔案,若沒包括請手動包括進專案中)

右鍵新的檔案夾,包括在專案中

由於是新生成的程式碼,所以才配置新的選單

如上圖,在Web專案中的wwwroot/Config/SystemMenu.config中配置選單,模仿原有選單即可,其中url是指頁面的路徑,Permission是指若需要訪問此選單需要的許可權(對應許可權配置),若沒有此許可權,則選單也中不會顯示此選單,修改完成後重新編譯生成(許可權相關模組進行了快取,重新生成會清快取),重新執行即可看到新的專案選單如下:

整個程式碼生成過程,無需編寫程式碼即可完成一張表的CRUD,當然需要根據具體業務中進行相應的修改,本次示例中欄位比較少,但是當一張表的欄位很多時,那麼此功能能夠將開發效率提高幾個檔次。

管理員登入

若要使用登入功能,請將GlobalSwitch中的RunModel改為RunModel.Publish

預設超級管理員賬號為:Admin

密碼為:123456

系統使用者管理

管理系統登入的使用者

選單:系統=>使用者管理,如下頁面

點選右側設定許可權,可以設定使用者許可權,詳情見模組

具體許可權相關配置見許可權管理模組

系統角色管理

管理系統角色,角色是許可權的載體,合理分配角色有利於許可權管理

選單:系統=>角色管理

操作中可以設定角色的許可權,詳情見模組

許可權管理

一般情況下,後臺管理系統多少會涉及許可權管理,因此本框架提供了一個靈活、高效、簡潔的許可權管理系統。

首先,許可權分為兩種,即操作許可權和資料許可權,其中操作許可權報貨系統使用者許可權和AppId許可權,系統使用者許可權就是指操作使用者具備哪些許可權,而當對外提供Api介面時,為了保證介面的安全性(若不在意可忽略),通常會提供介面簽名演演算法,其中AppId和AppSecret是必備的,透過對AppId設定許可權,即可控制介面的許可權。資料許可權比較複雜,若採用純SQL方式,那麼會更加複雜,本框架全程採用EF作為ORM框架,透過對IQueryable進行過濾,即可完成資料許可權控制。

使用者許可權:若對每個使用者都設定對應的許可權,那麼工作量無疑是十分巨大的,因此引入了角色的概念,角色是許可權的集合載體,那麼屬於此角色的使用者就繼承了角色的許可權,當然某些特殊使用者需要擁有自己的不屬於角色的特殊許可權,因此終端使用者擁有的許可權就是自己的許可權和所屬角色許可權的並集。

許可權使用:

許可權定義:

如上圖,在Permission.config中定義了各個許可權

許可權配置:

在系統使用者管理和系統角色管理中可以設定使用者和角色的許可權,把需要的許可權勾選即可。

許可權使用:

如上圖所示,在需要控制許可權的頁面中,呼叫方法:PermissionManage.OperatorHasPermissionValue(“sysuser.manage”)

這個方法是判斷操作者使用者是否含有sysuser.manage許可權值,其中sysuser是指Permission.config中定義的module的value屬性,manage是指permission中的value屬性,用.連線即是最終許可權值。

更詳細的使用方式,請參考原始碼。

介面秘鑰管理

選單:系統=>介面秘鑰管理

系統日誌

選單:系統=>系統日誌

如何進行聯表查詢?

框架使用EF+LINQ進行聯表操作,核心在於對IQueryable的使用,另可網上搜EF+LINQ的相關教程。

示例如下圖:

如何切換資料庫?

在01.Coldairarrow.Util專案中的GlobalSwitch,將DatabaseType改為需要的即可,對應的資料庫連線字串當然也要改為對應資料庫的

如何使用別的資料庫(即非預設的系統資料庫)

在具體的Business類中重寫父類BaseBusiness的建構式即可,按照自己的需求重寫對應的建構式,同時需要確保資料庫連線字串已新增

歡迎使用本框架,若覺得不錯,請比心

Github:https://github.com/Coldairarrow,請Statrt

部落格園:https://www.cnblogs.com/coldairarrow/

QQ群:373144077

本人將會對這個快速開發框架不斷完善與維護,希望能夠幫助到各位,若遇到任何問題或需要技術支援,請聯絡我。

原文地址:https://www.cnblogs.com/coldairarrow/p/10507136.html


.NET社群新聞,深度好文,歡迎訪問公眾號文章彙總 http://www.csharpkit.com