WPF 通用權限開發框架 (ABP)

前言

對于大部分.NET 開發者來說, 都比較熟悉目前流行的ABP框架, 基于開源的ABP框架, 可以自己進行二次開發, 無需重新開發一些基礎功能,
例如: 用戶角色管理、權限、組織、多租戶等等。

但是對于ABP框架來說, 提供給.NET開發者的可選項非常少, 目前也僅僅是提供了基于Web的解決方案, 對于桌面端以及移動設備上的解決方案, 可以說是"敷衍了事"。哪怕是商業版的ABP, 提供桌面端和移動端的解決方案仍然只是一個簡陋的架子, 對于有這方面需求的開發者, 他們只能選擇不同的解決方案。

目前大多數.NET開發者開發移動端項目多數是采用一些流行的Web解決方案, 例如: Uniapp、Electron、Flutter 等等。由于這類的產品本身與C#就無法兼容,例如共享現有的類庫, 實體、服務等。這也無法體現如今 .NET 全部一把梭的理念。

開發歷程

考慮到目前存在許多的客戶端領域開發者, 包括Xamarin.Forms開發者, 所以從2021年底開始, 我就計劃著開始開發基于ABP框架的WPF實現以及Xamarin.Forms實現。這樣, 通過利用現有的技術, 實現了全平臺開發的理念, 其中WPF與Xamarin.Forms項目, 實現了與后端項目共享90%以上的類庫代碼, 包含: 模型類、常量、接口、服務等。截至目前為止, Xamarin.Forms與WPF還原了ABP框架 90%以上的業務功能, 包含所有的UI重新設計、業務功能實現、完整的MVVM設計。關于Xamarin.Forms框架的實現, 參考之前的文章: Xamarin.Forms 5.0 項目實戰

WPF ABP 框架介紹

本次的WPF ABP框架, 并非是通過ABP的技術手段實現了WPF項目的還原,而是基于ABP框架提供業務功能進行了完整還原, 在WPF項目當中, 移除了ABP提供的啟動配置、模塊系統、依賴注入及各類的反射加載、自動實體映射模等功能。

該項目則基于大部分WPF開發者熟悉的Prism MVVM框架進行重新開發, UI則使用Syncfusion WPF版本。

該套框架包含以下功能:

  • 用戶和角色管理

  • 組織機構

  • 權限管理

  • 多租戶

  • 本地化多語言

  • 身份認證及授權

  • 審計日志記錄

  • UI主題

  • 異常處理

  • 數據字典

  • 系統設置

效果預覽

  • 登錄頁
    包含切換租戶、語言切換、修改密碼、郵箱激活
    b388340962caf674a600825aea97c61e.png

  • 首頁
    包含系統菜單、主題切換(深色/淺色主題)、首頁數據統計面板
    a31e57da3ed3fc10371d45ce13b1a581.png

  • 組織機構
    維護組織信息, 添加不同的角色和用戶
    e1924c37a02d4a001e3da7c7e2113b4d.png

  • 角色管理
    維護角色信息, 設定角色權限,根據權限篩選不同的角色
    30ad2405142a43a1c3af5891ffa7ad44.png
    3e691f4b73fa584eac8ac18d6317b0f2.png

  • 用戶管理
    管理用戶信息, 修改用戶權限, 鎖定/解鎖/刪除用戶
    35bfc1345f03608465cd6597da43571d.png

  • 審計日志
    系統的請問日志、錯誤日志、異常數據、更改日志信息記錄
    b35cc6eea7df590407c55235f35e16f2.png
    9e09e4d461035a0c07d053c403a3528c.png

  • 動態屬性
    設置動態數據, 下拉列表、選擇性、多選項等。
    f2444111ec313bcdf44565bdb84059fa.png

  • 多租戶
    維護租戶信息
    71603b7c29a36e42982ebc539a4c0df5.png
    0c620e944e142825f719a5e1588e2bf6.png

  • 版本列表
    創建不同的版本,設置收費標準, 到期規則等
    dbba8fb80dc75dc7875fdaf52950849f.png
    fafe770042440fb34879574aef71a43a.png

  • 語言列表
    維護多語言的數據, 修改/設定/維護相關信息
    f73bf712e039a801574fac56d9e6ff3d.png
    c6770878c9d18514ccba20de0b33c539.png
    f56cb6a9d0d9764175cf7511bdd7a5fb.png

  • 設置
    包含系統的核心功能的設置, 包含租戶、用戶、系統安全、郵箱、發票、其它設置
    e52e4ceb66596dd46d1774d1da930e21.png
    7f251214406516df36ad07ba5eea4f81.png
    f182abec65a49f2f0de06eca08d64d27.png

  • 演示UI組件
    包含了一些常用的控件演示
    6c6407b373eb4673549c8dd3a05a6ba0.png

如何獲取源代碼?

參與了上次的Xamarin.Forms公益活動的同學, 可以單獨與本人取得聯系, 可以免費獲取 WPF版本完整的項目源代碼, 針對Xamarin.Forms以及WPF的ABP框架, 會在后續持續進行優化, 且獲得免費的技術相關咨詢服務。關于上次的Xamarin.Forms公益活動產生的所有收益, 會在近期的捐贈活動進行公示。

針對未參與上次公益活動以及想要獲取源代碼或者進行商業性質的二次開發人員, WPF版本的ABP框架完整源代碼費用:499元,可以單獨與作者(QQ:779149549)取得聯系獲取。

本次WPF框架如收益超過3W的部分, 將同樣以公益活動的形式進行捐贈, 關于未來的MAUI框架版本, 會在接下來進行移植工作。

視頻教程說明

WPF版本的項目持續優化的過程中, 同樣會陸續制作相關教程發布在視頻平臺中, 大家可以持續關注。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/286893.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/286893.shtml
英文地址,請注明出處:http://en.pswp.cn/news/286893.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

甘肅省事業單位公考招聘考試權威復習資料---GIS專業綜合復習題(一)

1. 數字城市 以計算機技術、多媒體技術和大規模存儲技術為基礎,以寬帶網絡為紐帶,運用遙感、全球定位系統、地理信息系統、遙測、仿真-虛擬等技術,對城市進行多分辨率、多尺度、多時空和多種類的三維描述,即利用信息技術手段把城市的過去、現狀和未來的全部內容在網絡上進…

MongoDB 3.0 新增特性一覽

引言 在歷經版本號修改(2.8版本直接跳到3.0版本)和11個rc版本之后,MongoDB3.0于2015年3月3日正式發布。可以毫不夸張的說,該版本的新增特性標志著MongoDB這款典型的NoSQL數據庫已經進入了一個全新的發展階段。本文以下內容會逐個盤…

[華清遠見]FPGA公益培訓

本套視頻教程為華清遠見 網絡公益培訓活動,主講人:姚遠老師,華清遠見高級講師。 ---------------------------------------------------------------------------------------- “紅色颶風FPGA普及行動” 課程內容: 第一講、FPGA設…

單一職責原則--設計模式系列

定義 一個類只負責一項職責 職責擴散 什么叫職責擴散,就是職責再進行細化,就拿公司來說,好比客戶的需求,需求是不斷變化的,而且存在極大的不確定性,說不定哪天上司找到你要重新細化某個需求 所以最好在職責…

淘寶網的技術發展史(一)——個人網站時代

《天下網商經理人》十月刊開始將連載系列文章《淘寶網的技術發展史》,為讀者描述淘寶網在整個發展過程中,所有的主動和被動的技術變革的前因后果。 文/淘寶技術大學培訓專家 子柳 前言 11月11日,這個棍子最多的日子被網民自我調侃變成了一個…

linux之徹底卸載mysql

1 問題 在centos系統下徹底卸載mysql 2 操作方式 1)、查看mysql的信息 rpm -qa | grep -i mysql mysql57-community-release-el7-10.noarch mysql-errmsg-8.0.17-3.module_el8.0.0+181+899d6349.x86_64 mysql-8.0.17-3.module_el8.0.0+181+899d6349.x86_64 mysql-server-8.…

使用 Vscode 編寫 HTML 文檔竟然可以自動寫代碼(2)

作者簡介 作者名:1_bit 簡介:CSDN博客專家,2020年博客之星TOP5,藍橋簽約作者。15-16年曾在網上直播,帶領一批程序小白走上程序員之路。歡迎各位小白加我咨詢我相關信息,迷茫的你會找到答案。 目錄 HTML基…

甘肅省事業單位公考招聘考試權威復習資料---GIS專業全真模擬題(一)

一、單選 1. 以下那個可以從像元級別、特征級別進行( )。 A.增強 B.銳化 C.重采樣 D.裁剪 2. 1:10000比例尺地形圖的格網大小是( )。 A.30m B.100m C.10m D.5m 3. 電子地圖中加載矢量數據屬于( &…

為什么 Docker 和 Kubernetes 是用 Go 寫的而不是 C# ?

這是 Reddit 平臺上面這幾天一篇比較熱門的帖子, 非常有意思,本文我列出了幾個高贊的回答。👦 HahahahahaSoFunny為什么 Docker 和 Kubernetes 工具是用 Go 寫的而不是 C#?總所周知,現在開發人員使用的很多新工具大多是用 Go 寫的…

打造最舒適的webview調試環境

你在做移動web開發的時候是不是只是在Chrome下開啟移動模式,然后就啪啪啪悶頭敲代碼了?如果你平時只是做做宣傳頁,Chrome的移動模式可能就能滿足你。但是現在越來越多的應用采用Hybrid的開發方式,這樣的話就可能在web頁面上調用we…

淘寶網的技術發展史(二) ——Oracle替換MySQL

本文是《淘寶網的技術發展史》系列連載文的第二篇,在告別個人網站時代后,淘寶網的技術發展迎來了由Oracle開啟的第二個時代。文/淘寶技術大學培訓專家 子柳MySQL撐不住了 淘寶網作為個人網站發展的時間其實并不長,由于它太引人注目了&#xf…

數據結構——不相交集(并查集)

目的:解決等價問題。 表示方法:森林,底層實現用數組 主要操作:find()、union() 優化手段: ①find()時路徑壓縮 ②union()時按規模合并、按樹高合并(依據情況而定) Java實現: class D…

Android之抓取adb logcat全日志后怎么過濾掉只包含當前app進程的日志(一般抓啟動app奔潰日志)

1 、問題 有時候我們啟動APP的時候,APP奔潰,在android studio里面日志可能沖掉,或者是云平臺的手機安裝的app,根本就沒有android stduio,那我們用什么辦法快速知道啟動奔潰日志呢? 2、解決辦法 我們先需要…

一個基礎的 HTML 文檔有哪些標簽?(3)

作者簡介 作者名:1_bit 簡介:CSDN博客專家,2020年博客之星TOP5,藍橋簽約作者。15-16年曾在網上直播,帶領一批程序小白走上程序員之路。歡迎各位小白加我咨詢我相關信息,迷茫的你會找到答案。 目錄 HTML基…

考研:中國科學院地理所歷年GIS研究生入學考試真題匯總

中科院地理所1997年GIS研究生入學試題 一、名詞解釋 1.拓撲關系 2.緩沖分析 3.關系數據模型 4.空間疊加 二、簡答題 1、GIS的主要功能略 2、企業GIS系統的特色 三、問答題(選2) 1、GIS基本組成與主要應用領域 2、地理科學數據集成與管…

能上架App的GooglePlay開發者賬號獲取流程

googleplay 開發者賬號申請流程 接到公司號召,要讓我們的app走向世界,上架GooglePlay,都說天朝的Android 程序員是折翼的天使,猛然發現寫了做么多年的Android,竟然不知道怎么成為GooglePlay開發者。 以前嘗試過&#x…

如何讓 ASP.NET Core 支持綁定查詢字符串中的數組(2)

前言上回說到,我們實現了IntArrayModelBinder,可以讓 ASP.NET Core 綁定查詢字符串中的數組。但是必須顯示指定ModelBinder:public string Get([FromQuery][ModelBinder(BinderType typeof(IntArrayModelBinder))] int[] values)而官方提供的…

hdu 3530 Subsequence

/* 開始以為是二分...后來發現丫不單調... */ #include<iostream> #include<cstdio> #include<cstring> #define maxn 1000010 using namespace std; int n,l,r,ans,tmin[maxn],tmax[maxn],a[maxn]; int qmin[maxn],qmax[maxn],headmin,tailmin,headmax,tai…

FirstLetterUtil

package cn.edu.hbcf.common.utils;public class FirstLetterUtil {private static int BEGIN 45217;private static int END 63486;// 按照聲母表示&#xff0c;這個表是在GB2312中的出現的第一個漢字&#xff0c;也就是說“啊”是代表首字母a的第一個漢字。// i, u, v都不做…

淘寶網的技術發展史(三)——分布式時代

本文是《淘寶網的技術發展史》系列連載文的第三篇。在系統發展的過程中&#xff0c;架構師的眼光至關重要&#xff0c;作為程序員&#xff0c;把功能實現即可&#xff1b;但作為架構師&#xff0c;要考慮系統的擴展性、復用性&#xff0c;這種敏銳的感覺&#xff0c;有人說是一…