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

来源:https://www.cnblogs.com/coldairarrow/archive/2019/03/11/10507136.html
-Advertisement-
Play Games

引言 ==== 上星期發佈的.NET452+AdminLTE版框架得到了大家的大力支持,目前GitHub已獲近100星,鄙人十分高興能夠幫助大家。其中有不少關心.NET Core的支持情況,因為未來的.NET平臺是屬於.NET Core的,為此,鄙人花了一星期將代碼移植到.NET Core2.1,不 ...


引言

上星期發佈的.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版本 前端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 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<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

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

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

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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 綠茶小說系統是綠茶科技旗下自主開發的小說系統,可以​‌‌支持定製小說網站,小說網站開發,小說網站系統,小說網站源碼,小說網站開發建設,小說網站程式,微信小說網站源碼,一套小說網站管理系統,完整版小說,付費看小說,小說下載等欄目版塊,可以支持定製電腦版+手機版+微信版+小程式版+APP版,由10年的技 ...
  • I. 數據類型 Python3將程式中的任何內容統稱為對象(Object),基本的數據類型有數字和字元串等,也可以使用自定義的類(Classes)創建新的類型。 Python3中有六個標準的數據類型: Number(數字) String(字元串) List(列表) Tuple(元組) Set(集合) ...
  • 2019-03-10/20:19:56 演示:將xml配置方式改為註解方式 靜態以及動態代理推薦博客:https://blog.csdn.net/javazejian/article/details/56267036 junit單元測試jar包:https://share.weiyun.com/5p ...
  • 一 :搭建Java環境 (1)打開IE瀏覽器,輸入網址”https://www.oracle.com/technetwork/java/javase/downloads/jdk11-downloads-5066655.html“ (2)在JDK下載頁面點擊”JDK download” (3)根據提示 ...
  • 本公司專業承接外貿英文網站定製,國外英文網站建設,多語言貿易網站開發,多語言網站製作等服務,支持電腦版,手機版等,並且個性化定製。 網站顯示語言支持:簡體,繁體,英文,韓文,日文,法文等 提供一站式服務:聯繫QQ:2 3 6 0 2 4 8666(私聊),微信:luenmicro 電話:186-75 ...
  • 題目: 一棵二叉搜索樹可被遞歸地定義為具有下列性質的二叉樹:對於任一結點, 其左子樹中所有結點的鍵值小於該結點的鍵值; 其右子樹中所有結點的鍵值大於等於該結點的鍵值; 其左右子樹都是二叉搜索樹。 所謂二叉搜索樹的“鏡像”,即將所有結點的左右子樹對換位置後所得到的樹。 給定一個整數鍵值序列,現請你編寫 ...
  • 將1美元(100美分)換成半美元,1/4美元,10美分,5美分,1美分的零錢,一共有多少種換法?書上寫的思路很簡單,就是把一美元換成:1:半美元+其他5種硬幣的組合;2:不加半美元,其他4種硬幣的組合;數學函數是,f(m,n)=f(m-coin[n-1],n)+f(m,n-1);不過有特殊情況:1:... ...
  • 1.python2和python3 從巨集觀上講,python2源碼不標準、混亂、重覆,和龜叔的理念背道而馳。 在python3上,實現了源碼的統一化和標準化,去除了重覆的代碼。 2.編譯型語言和解釋型語言 編譯型:一次性將所有的程式編譯成二進位文件。 優點——運行速度快 缺點——開發效率低,跨平臺性 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...