.NET開源快速開發框架Colder(NET452+AdminLTE版) 引言 ==== 半年前將基於Easyui的快速開發框架開源,三個版本(NET4.52,NETCore和NET4.0)總共榮獲200+星,得到了大家的認可,也很高興能夠幫助到大家。但不可否認的是Easyui在現在各大主流UI框架 ...
.NET開源快速開發框架Colder(NET452+AdminLTE版)
引言
半年前將基於Easyui的快速開發框架開源,三個版本(NET4.52,NETCore和NET4.0)總共榮獲200+星,得到了大家的認可,也很高興能夠幫助到大家。但不可否認的是Easyui在現在各大主流UI框架(Bootstrap、iview、Layui、element-ui等)面前的確有些過時,愛美之心人皆有之,咱猿類的衣食父母(甲方)也不列外。因此,為了吃(房)香(貸)喝(車)辣(貸),選擇一套漂亮而簡潔的UI來取悅甲方就是現階段的主要矛盾(人民日益增長的美好生活需要和不平衡不充分的發展之間的矛盾)。為瞭解決這個主要矛盾鄙人進行了很長時間的調研,在各大主流UI框架(Bootstrap、iview、Layui、element-ui等)中進行各種對比,最後選擇了基於Bootstrap的AdminLTE,這是因為本框架的面向對象主要是.NET後端開發者,Bootstrap相比於其它而言更加容易上手,而且插件豐富(Easyui更豐富而且簡單),並且擁有不俗的顏值,最終選擇它。最後,在鄙人的兩星期搬磚後,煥然一新的.NET快速開發框架Colder.Fx.Net.AdminLTE誕生,希望大家能夠喜歡並支持。
簡介
本框架旨在為.NET開發人員提供一個Web後臺快速開發框架,採用本框架,能夠極大的提高項目開發效率。
本版本框架採後端採用基於.NET4.52的ASP.NETMVC,前端從原來的Easyui升級為基於Bootstrap的AdminLTE,支持響應式佈局,提高用戶體驗(提高逼格)。
框架主要功能如下表:
功能 | 詳細描述 | 支持情況 |
---|---|---|
用戶登錄、密碼修改 | 用戶登錄、密碼修改 | ✔ |
系統用戶管理 | 系統用戶管理 | ✔ |
角色管理 | 角色管理 | ✔ |
許可權管理 | 基於用戶的許可權、基於角色的許可權、菜單許可權、操作許可權(按鈕許可權)、介面許可權、數據許可權 | ✔ |
系統日誌 | 支持使用ElasticSearch記錄日誌 | ✔ |
快速開發 | 通過資料庫直接生成實體層、業務邏輯層、視圖層代碼,無需編碼即可實現CURD | ✔ |
資料庫操作封裝 | 使用基於EF的倉儲模式、封裝常用的CURD,支持單庫事物和分散式事物 | ✔ |
多資料庫支持 | 使用基於EF的倉儲模式,支持各大主流關係型資料庫(SQLServer、MySQL、Oracle、PostgreSQL) | ✔ |
緩存支持 | 支持系統自帶緩存和Redis緩存、封裝操作介面、簡單易用 | ✔ |
分散式Session支持 | 禁用自帶Session,使用自定義Session,一鍵開啟分散式Session | ✔ |
頁面響應式 | 基於Bootstrap,支持響應式佈局,移動端能夠輕鬆訪問 | ✔ |
其它各種幫助類庫及插件 | 其它各種幫助類庫及插件 | ✔ |
後臺展示如下:
源碼地址:https://github.com/Coldairarrow/Colder.Fx.Net.AdminLTE
各版本請看下表:
.NET版本 | 前端UI | 地址 |
---|---|---|
.NET4.52 | AdminLTE | https://github.com/Coldairarrow/Colder.Fx.Net.AdminLTE |
.NET4.52 | Easyui | https://github.com/Coldairarrow/Coldairarrow.Fx.Net.Easyui.GitHub |
.NET Core2.1 | Easyui | https://github.com/Coldairarrow/Coldairarrow.Fx.Core.Easyui.GitHub |
.NET4.0 | Easyui | https://github.com/Coldairarrow/Coldairarrow.Fx.Net40.Easyui.GitHub |
基礎準備
開發環境要求
操作系統:Windows 10
開發工具:Visual Studio 2017
SDK:安裝.NET4.52及以上
資料庫:SQLServer2008 R2及以上
基礎資料庫構建
使用本框架需要構建基礎資料庫,具體步驟如下:
創建基礎資料庫的Sql腳本文件在:/docs/初始化文件/db.sql,在資料庫中運行db.sql腳本即可創建資料庫:
Colder.Fx.Net.AdminLTE
若Sql運行出錯,請直接使用同目錄下的db.bak還原資料庫
打開src目錄下Colder.Fx.Net.AdminLTE的解決方案,如下圖
如下圖所示依次展開05.Coldairarrow.Web=>Config=>database.config,配置資料庫連接字元串,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,點擊生成按鈕,即可完成代碼生成。生成後的代碼在項目解決方案中,將代碼文件包括進入項目
預設生成後的文件是隱藏的,需要點擊顯示所有文件按鈕,即可看到生成後的新文件
右鍵新的文件夾,包括在項目中
由於是新生成的代碼,所以才配置新的菜單
如上圖,在Web項目中的Config/SystemMenu.config中配置菜單,模仿原有菜單即可,其中url是指頁面的路徑,Permission是指若需要訪問此菜單需要的許可權(對應許可權配置),若沒有此許可權,則菜單也中不會顯示此菜單,修改完成後重新編譯生成(許可權相關模塊進行了緩存,重新生成會清緩存),重新運行即可看到新的項目菜單如下:
整個代碼生成過程,無需編寫代碼即可完成一張表的CRUD,當然需要根據具體業務中進行相應的修改,本次示例中欄位比較少,但是當一張表的欄位很多時,那麼此功能能夠將開發效率提高幾個檔次。
管理員登錄
若要使用登錄功能,請將GlobalSwitch中的RunModel改為RunModel.Publish
預設超級管理員賬號為:Admin
密碼為:123456
系統用戶管理
管理系統登錄的用戶
菜單:系統=>用戶管理,如下頁面
點擊右側設置許可權,可以設置用戶許可權,詳情見<許可權管理>模塊
具體許可權相關配置見許可權管理模塊
系統角色管理
管理系統角色,角色是許可權的載體,合理分配角色有利於許可權管理
菜單:系統=>角色管理
操作中可以設置角色的許可權,詳情見<許可權管理>模塊
許可權管理
一般情況下,後臺管理系統多少會涉及許可權管理,因此本框架提供了一個靈活、高效、簡潔的許可權管理系統。
首先,許可權分為兩種,即操作許可權和數據許可權,其中操作許可權報貨系統用戶許可權和AppId許可權,系統用戶許可權就是指操作用戶具備哪些許可權,而當對外提供Api介面時,為了保證介面的安全性(若不在意可忽略),通常會提供介面簽名演算法,其中AppId和AppSecret是必備的,通過對AppId設置許可權,即可控制介面的許可權。數據許可權比較複雜,若採用純SQL方式,那麼會更加複雜,本框架全程採用EF作為ORM框架,通過對IQueryable<T>進行過濾,即可完成數據許可權控制。
用戶許可權:若對每個用戶都設置對應的許可權,那麼工作量無疑是十分巨大的,因此引入了角色的概念,角色是許可權的集合載體,那麼屬於此角色的用戶就繼承了角色的許可權,當然某些特殊用戶需要擁有自己的不屬於角色的特殊許可權,因此最終用戶擁有的許可權就是自己的許可權和所屬角色許可權的並集。
許可權使用:
許可權定義:
如上圖,在Permission.config中定義了各個許可權
許可權配置:
在系統用戶管理和系統角色管理中可以設置用戶和角色的許可權,把需要的許可權勾選即可。
許可權使用:
如上圖所示,在需要控制許可權的頁面中,調用方法:PermissionManage.OperatorHasPermissionValue("sysuser.manage")
這個方法是判斷操作者用戶是否含有sysuser.manage許可權值,其中sysuser是指Permission.config中定義的module的value屬性,manage是指permission中的value屬性,用.連接即是最終許可權值。
更詳細的使用方式,請參考源代碼。
介面秘鑰管理
菜單:系統=>介面秘鑰管理
系統日誌
菜單:系統=>系統日誌
常見疑問
如何進行聯表查詢?
框架使用EF+LINQ進行聯表操作,核心在於對IQueryable<T>的使用,另可網上搜EF+LINQ的相關教程。
示例如下圖:
如何切換資料庫?
在01.Coldairarrow.Util項目中的GlobalSwitch,將DatabaseType改為需要的即可,對應的資料庫連接字元串當然也要改為對應資料庫的
如何使用別的資料庫(即非預設的系統資料庫)
在具體的Business類中重寫父類BaseBusiness的構造函數即可,按照自己的需求重寫對應的構造函數,同時需要確保資料庫連接字元串已添加
結語
歡迎使用本框架,若覺得不錯,請比心
Github:https://github.com/Coldairarrow,請Statrt
博客園:https://www.cnblogs.com/coldairarrow/
QQ群:373144077
本人將會對這個快速開發框架不斷完善與維護,希望能夠幫助到各位
若遇到任何問題或需要技術支持,請聯繫我。
---------------------學習永無止境,技術永無上限,代碼就是藝術-----------------------