很多团队第一次接触XAF,最关心的其实不是界面长什么样,而是它到底能不能拿来做一套真正的业务系统。DevExpress官方对XAF的定位说得很直接,它是一个基于ORM的.NET应用框架,目标就是更快交付line of business应用;而且同一套解决方案里可以同时包含Blazor、WinForms和Web API项目,并共享同一套业务模型、业务逻辑和控制器。换句话说,XAF不是做演示页的小框架,它本来就是冲着业务系统去的。
一、DevExpress XAF能做业务系统吗
这个问题其实可以直接回答,可以,而且它适合做那些表单、流程、权限、数据维护比较重的业务系统。DevExpress官方页面把它定义成low code和RAD框架,重点就是缩短桌面和Web业务应用的交付时间。
1、它本来就是按业务应用思路设计的
官方写明,XAF用Entity Framework或XPO作为底层ORM,再叠加UI、模块和控制器来搭业务系统,所以它不是单独的界面库,而是一套从数据模型到应用外壳都连起来的框架。
2、它适合多端共用一套业务核心
XAF解决方案可以同时带Blazor、WinForms和Web API项目,而且这些项目能共享同一套business model、logic和controllers。对做内部管理系统、审批系统、主数据系统这类项目来说,这一点很实用。
3、它不只适合新项目,也适合模块化扩展
官方文档说明,XAF自带大量built in modules,而且新项目可以在Template Kit里直接勾模块,已有项目也可以后补模块。这个设计本身就说明,它更适合长期演进型业务系统,不是一次性页面拼装。
4、它更适合有开发团队的正式项目
DevExpress官方给新手说明时也讲得很直白,XAF是给有line of business开发经验的.NET团队用的,不是零代码工具。换句话说,它能做业务系统,但前提是团队本身要按工程化方式来落地。
二、DevExpress XAF权限模块怎么接入
XAF的权限不是靠自己从零写一套,而是直接接它自带的Security System。官方文档说明,这套安全系统开箱就提供权限管理和访问控制能力,而且既支持XAF UI,也支持非XAF的.NET应用和后端Web API。
1、先决定是新项目接入,还是旧项目补接
如果是新项目,最省事的办法是在Template Kit里直接把安全相关选项带进去。官方文档写明,创建新应用时就可以在附加模块或安全选项里做选择。
2、旧项目要先装模块依赖
官方说明,给现有应用注册内建模块时,先要安装对应的NuGet包,再到启动配置里把模块注册进去。权限模块接入本质上也是这条路,不是只在界面里勾一个开关就结束。
3、再把安全策略和认证方式定下来
DevExpress的教学文档里明确说,接入Security System时会使用SecurityStrategyComplex,并且可以启用AuthenticationStandard。前者决定角色和权限集的运行方式,后者决定用户名密码这类标准登录怎么落库。
4、用户和角色对象要按XAF的权限模型接
官方权限策略文档说明,系统内建的是PermissionPolicyUser和PermissionPolicyRole这一套模型,Template Kit生成的ApplicationUser也是基于这套体系扩出来的。也就是说,权限模块真正接稳,不只是显示登录框,而是把用户、角色、权限策略接到这套模型上。
5、再按角色分配默认权限和细粒度权限
官方文档写得很清楚,角色可以设deny all、read only all、allow all这类默认Permission Policy,再叠加类型、对象和成员级权限。真正做业务系统时,通常就是先给角色一个基础口径,再补字段级和对象级限制。
三、DevExpress XAF落地前要先定什么
很多团队不是接不上权限,而是项目开始前没把边界定清楚,后面才会觉得XAF重。更稳的做法,是在开工前先把平台、ORM和安全层级一次定住。官方文档其实已经把这些分层列出来了。
1、先定平台组合
你到底只做Blazor,还是要WinForms和Web API一起上,这会直接影响解决方案结构。官方说明,平台是可以在创建时选择的,后面虽然能补,但前面定清楚会省很多调整。
2、再定ORM路线
XAF官方页面和安全文档都明确提到,它可以基于Entity Framework或XPO跑。这个选择不只是数据层习惯不同,后面安全对象、持久化和团队经验也都会跟着走。
3、然后定权限模型是简单接入还是深度定制
如果只是常规用户、角色、菜单和数据权限,直接沿用内建Permission Policy往往最快。要是你准备做自定义用户、角色和特殊权限对象,官方也提供了扩展入口,但这一步最好在项目早期就想清楚。
4、最后定安全边界放在哪一层
官方说明里不仅有普通UI安全,还支持Middle Tier Security和Web API。也就是说,你要先决定权限是只拦界面,还是连中间层和接口一起纳入控制,后面系统结构才不会反复改。
总结
DevExpress XAF能做业务系统,而且它本来就是按业务系统框架来设计的,尤其适合数据录入、流程审批、角色权限和多端共用模型这类项目。DevExpress XAF权限模块怎么接入,核心也不是自己另起一套权限,而是把官方Security System接进来,再把认证、用户、角色和权限策略按项目边界收顺。前面这几层定清楚,后面的开发效率和系统稳定性通常都会好很多。
