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.mzph.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;有人说是一…