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

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

.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的相關教程。

示例如下圖:

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
更多相關文章
  • 這篇博客記錄@InitBinder怎麼起作用、起什麼作用? 首先,該註解被解析的時機,是該匹配Controller的請求執行映射的方法之前; 同時 @InitBinder標註的方法執行是多次的,一次請求來就執行一次。 當某個Controller上的第一次請求由SpringMvc前端控制器匹配到該Co ...
  • 首先,作業要求概括如下: 根據首碼表達式文法,實現statements() 和expression() 兩個函數。 並且要求使得語義分析在完成分析首碼表達式並輸出中間代碼的同時,也能夠將首碼表達式翻譯為中綴表達式, 且要求翻譯後的中綴表達式中儘可能少用括弧。 舉例如下: 輸入"+ a * b c;" ...
  • 在未來某個指定的時間點或者經過一段時間延遲後執行某個事件,這時候就需要用到定時器了。定時器的實現方式有很多種,今天總結最簡單的實現方式。java 1.3引入了定時器框架,用於在定時器上下文中控制線程的執行,其由類Timer和TimerTask構成。Timer適用於大規模併發調度定時任務,在內部,該類 ...
  • 1、使用Java EE 在eclipse 開發動態的Web工程(Java web項目)1)開發開發選項切換到JavaEE2)可以在Windows->show view中找到package explorer,並將其托拽到開發區的左邊3)在servers面板中新建tomcat伺服器,一定要關聯到tomc ...
  • ...
  • 1. nginx+lua學習 1.1. 網關架構 1.2. nginx命令和信號控制 1. nginx s stop 快速關閉,不管有沒有正在處理的請求 nginx s quit 優雅關閉方式,推出前完成已經接受的連接請求 2. nginx c nginx配置文件地址 啟動 3. nginx s r ...
  • 前面介紹各種容器之時,通過在容器名稱後面添加包裹數據類型的一對尖括弧,表示該容器存放的是哪種類型的元素。這樣一來總算把Java當中的各類括弧都湊齊了,例如包裹一段代碼的花括弧、指定數組元素下標的方括弧、容納方法輸入參數的圓括弧,還有最近跟在容器名稱之後的尖括弧。可是為什麼尖括弧要加到容器後面呢?它還 ...
  • 問題 在實際開發過程當中我們可能會針對某些類型使用動態代理技術(AOP),註入了一些攔截器進行處理,但是一旦某個類型被動態代理了,那麼就會生成一個代理類。這個時候在該類內部使用 方法獲取到的 類型並不是實際類型的 ,而是代理類的 。 解決 那麼我們如何在代理類當中獲取到具體類型的 呢?其實 Cast ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...