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

引言

上星期發佈的.NET452+AdminLTE版框架獲得了你們的大力支持,目前GitHub已獲近100星,鄙人十分高興可以幫助你們。其中有很多關心.NET Core的支持狀況,由於將來的.NET平臺是屬於.NET Core的,爲此,鄙人花了一星期將代碼移植到.NET Core2.1,不負衆託,在此推出NETCore+AdminLTE版。前端

簡介

本框架旨在爲.NET開發人員提供一個Web後臺快速開發框架,採用本框架,可以極大的提升項目開發效率。git

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

框架主要功能以下表:算法

功能 詳細描述 支持狀況
用戶登陸、密碼修改 用戶登陸、密碼修改
系統用戶管理 系統用戶管理
角色管理 角色管理
權限管理 基於用戶的權限、基於角色的權限、菜單權限、操做權限(按鈕權限)、接口權限、數據權限
系統日誌 支持使用ElasticSearch記錄日誌
快速開發 經過數據庫直接生成實體層、業務邏輯層、視圖層代碼,無需編碼便可實現CURD
數據庫操做封裝 使用基於EF的倉儲模式、封裝經常使用的CURD,支持單庫事物和分佈式事物
多數據庫支持 使用基於EF的倉儲模式,支持各大主流關係型數據庫(SQLServer、MySQL、PostgreSQL)
緩存支持 支持系統自帶緩存和Redis緩存、封裝操做接口、簡單易用
分佈式Session支持 禁用自帶Session,使用自定義Session,一鍵開啓分佈式Session
頁面響應式 基於Bootstrap,支持響應式佈局,移動端可以輕鬆訪問
其它各類幫助類庫及插件 其它各類幫助類庫及插件

後臺展現以下:sql

版本參照請看下錶:數據庫

.NET版本 前端UI 地址
.NET Core2.1 AdminLTE https://github.com/Coldairarrow/Colder.Fx.Core.AdminLTE
.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 10json

開發工具: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<T>進行過濾,便可完成數據權限控制。

用戶權限:若對每一個用戶都設置對應的權限,那麼工做量無疑是十分巨大的,所以引入了角色的概念,角色是權限的集合載體,那麼屬於此角色的用戶就繼承了角色的權限,固然某些特殊用戶須要擁有本身的不屬於角色的特殊權限,所以最終用戶擁有的權限就是本身的權限和所屬角色權限的並集。

權限使用:

權限定義:

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

權限配置:

在系統用戶管理和系統角色管理中能夠設置用戶和角色的權限,把須要的權限勾選便可。

權限使用:

如上圖所示,在須要控制權限的頁面中,調用方法:PermissionManage.OperatorHasPermissionValue("sysuser.manage")

這個方法是判斷操做者用戶是否含有sysuser.manage權限值,其中sysuser是指Permission.config中定義的module的value屬性,manage是指permission中的value屬性,用.鏈接便是最終權限值。

更詳細的使用方式,請參考源代碼。

接口祕鑰管理

菜單:系統=>接口祕鑰管理

系統日誌

菜單:系統=>系統日誌

常見疑問

如何進行聯表查詢?

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

示例以下圖:

D:\文檔\Tencent Files\862520575\Image\C2C\KYV$W`4O717F2Y37P)RQMEL.png

D:\文檔\Tencent Files\862520575\Image\C2C\%7ZU5J_S5BTRFI91AF2Z81E.png

如何切換數據庫?

在01.Coldairarrow.Util項目中的GlobalSwitch,將DatabaseType改成須要的便可,對應的數據庫鏈接字符串固然也要改成對應數據庫的

如何使用別的數據庫(即非默認的系統數據庫)

在具體的Business類中重寫父類BaseBusiness的構造函數便可,按照本身的需求重寫對應的構造函數,同時須要確保數據庫鏈接字符串已添加

結語

歡迎使用本框架,若以爲不錯,請比心

https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1536642906843&di=1a0e84336a3b4c068deab1a2d2fc342d&imgtype=0&src=http%3A%2F%2Fwww.ghost64.com%2Fqqtupian%2FzixunImg%2Flocal%2F2017%2F05%2F25%2F14956980289595.jpg

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

博客園:https://www.cnblogs.com/coldairarrow/

QQ羣:373144077

本人將會對這個快速開發框架不斷完善與維護,但願可以幫助到各位

若遇到任何問題或須要技術支持,請聯繫我。

---------------------學習永無止境,技術永無上限,代碼就是藝術-----------------------

相關文章
相關標籤/搜索