天天看點

.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,支援響應式布局,移動端能夠輕松通路
其它各種幫助類庫及插件

背景展示如下:

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

版本參照請看下表:

.NET版本 前端UI 位址
.NET Core2.1 AdminLTE https://github.com/Coldairarrow/Colder.Fx.Core.AdminLTE
.NET4.52 https://github.com/Coldairarrow/Colder.Fx.Net.AdminLTE
Easyui https://github.com/Coldairarrow/Coldairarrow.Fx.Net.Easyui.GitHub
https://github.com/Coldairarrow/Coldairarrow.Fx.Core.Easyui.GitHub
.NET4.0 https://github.com/Coldairarrow/Coldairarrow.Fx.Net40.Easyui.GitHub

基礎準備

開發環境要求

作業系統: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的解決方案,如下圖

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

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

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

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

資料庫設計規範

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

是以規定每張表都有一個主鍵,列名為Id,類型為字元串,實際添加資料時預設使用GUID的字元串形式,表中的每個列都需要有描述資訊(建議這樣操作,若不按照這個标準則需要一些額外的改動才能夠成功運作)。

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

運作

請先還原Nuget包

然後将05.Coldairarrow.Web設為啟動項目,成功運作即可進入以下頁面

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

詳細教程

代碼架構

項目代碼分層,詳情見源碼中的說明書,部落格園放會被判為重複文章,敬請諒解。

功能架構

全局配置

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

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

此功能為本架構的核心功能,能夠自動生産完整的可運作代碼,具體使用如下:

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

菜單:開發=>快速開發=>資料庫連接配接管理

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

若清單中沒有目标資料源,則添加資料庫連接配接

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

資料連接配接名、連接配接字元串、資料庫類型即可。添加完成後即可看到連接配接字元串資訊。

有了資料庫連接配接之後,即可進行代碼生成。

菜單:開發=>快速開發=>代碼生成

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

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

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

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

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

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

這裡示例填寫ProjectManage,點選生成按鈕,即可完成代碼生成。生成後的代碼在項目解決方案中,将代碼檔案包括進入項目(.NET

Core項目預設會自動包括新生成的檔案,若沒包括請手動包括進項目中)

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

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

由于是新生成的代碼,是以才配置新的菜單

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

如上圖,在Web項目中的wwwroot/Config/SystemMenu.config中配置菜單,模仿原有菜單即可,其中url是指頁面的路徑,Permission是指若需要通路此菜單需要的權限(對應權限配置),若沒有此權限,則菜單也中不會顯示此菜單,修改完成後重新編譯生成(權限相關子產品進行了緩存,重新生成會清緩存),重新運作即可看到新的項目菜單如下:

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

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

管理者登入

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

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

預設超級管理者賬号為:Admin

密碼為:123456

管理系統登入的使用者

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

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

點選右側設定權限,可以設定使用者權限,詳情見<權限管理>子產品

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

具體權限相關配置見權限管理子產品

系統角色管理

管理系統角色,角色是權限的載體,合理配置設定角色有利于權限管理

菜單:系統=>角色管理

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

操作中可以設定角色的權限,詳情見<權限管理>子產品

一般情況下,背景管理系統多少會涉及權限管理,是以本架構提供了一個靈活、高效、簡潔的權限管理系統。

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

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

權限使用:

權限定義:

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

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

權限配置:

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

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

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

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

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

接口秘鑰管理

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

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

菜單:系統=>系統日志

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

常見疑問

如何進行聯表查詢?

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

示例如下圖:

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

如何切換資料庫?

在01.Coldairarrow.Util項目中的GlobalSwitch,将DatabaseType改為需要的即可,對應的資料庫連接配接字元串當然也要改為對應資料庫的

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

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

在具體的Business類中重寫父類BaseBusiness的構造函數即可,按照自己的需求重寫對應的構造函數,同時需要確定資料庫連接配接字元串已添加

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

結語

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

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

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

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

QQ群1(已滿)

QQ群2:579202910

本人将會對這個快速開發架構不斷完善與維護,希望能夠幫助到各位

若遇到任何問題或需要技術支援,請聯系我。

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

繼續閱讀