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

.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