作者:寒空飛箭
連結:http://www.cnblogs.com/coldairarrow/p/10486184.html
引言
半年前將基於Easyui的快速開發框架開源,三個版本(.NET4.52,.NET Core和.NET 4.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.NET MVC,前端從原來的Easyui升級為基於Bootstrap的AdminLTE,支援響應式佈局,提高使用者體驗(提高逼格)。
框架主要功能如下表:
後臺展示如下:
原始碼地址:https://github.com/Coldairarrow/Colder.Fx.Net.AdminLTE
各版本請看下錶:
.NET 4.52
-
AdminLTE
-
https://github.com/Coldairarrow/Colder.Fx.Net.AdminLTE
.NET 4.52
-
Easyui
-
https://github.com/Coldairarrow/Coldairarrow.Fx.Net.Easyui.GitHub
.NET Core 2.1
-
Easyui
-
https://github.com/Coldairarrow/Coldairarrow.Fx.Core.Easyui.GitHub
.NET 4.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進行過濾,即可完成資料許可權控制。
使用者許可權:若對每個使用者都設定對應的許可權,那麼工作量無疑是十分巨大的,因此引入了角色的概念,角色是許可權的集合載體,那麼屬於此角色的使用者就繼承了角色的許可權,當然某些特殊使用者需要擁有自己的不屬於角色的特殊許可權,因此終端使用者擁有的許可權就是自己的許可權和所屬角色許可權的並集。
許可權使用:
許可權定義:
如上圖,在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
QQ群:373144077
本人將會對這個快速開發框架不斷完善與維護,希望能夠幫助到各位