.NET应用UI框架DevExpress XAF v24.2新功能预览 - 跨平台性增强

DevExpress XAF是一款强大的现代应用程序框架,允许同时开发ASP.NET和WinForms。DevExpress XAF采用模块化设计,开发人员可以选择内建模块,也可以自行创建,从而以更快的速度和比开发人员当前更强有力的方式创建应用程序。

本文记录了一些DevExpress XAF v24.2相关功能,新版本预计将在12月初发布,本系列文章将详细介绍抢先体验预览版本!您将看到,目前DevExpress XAF v24.2相关的重点领域仍然是Blazor、实体框架核心和安全性。

获取DevExpress XAF v24.2正式版下载(Q技术交流:749942875)

如果您有一个Universal Subscription,请随时下载此 Early Access Preview (EAP) build,如果您拥有一个激活的DXperience Subscription并希望了解更多有关跨平台.NET App UI (XAF)或Web API Service,您可以通过登录到DevExpress下载管理器并在试用模式下安装此EAP构建来探索本文描述的功能。

跨平台的增强
安全增强 - Microsoft Entra ID、谷歌和其他身份验证提供商的Passkeys和MFA支持

DevExpress XAF UI (Blazor 和 WinForms)和Web API Service都提供了一个"一键"解决方案,将现代OAuth2身份验证提供程序与本地单点登录(SSO)(如Microsoft Entra SSO)、多因素身份验证(MFA)和其他安全功能结合起来,这适用于EF Core和XPO ORM。有关这方面的其他信息,请参阅Active Directory and OAuth2 Authentication Providers in ASP.NET Core Blazor Applications及相关文档。

Passkeys使用您的设备锁(例如您的指纹,面部,pin或图案)登录到您的Microsoft,谷歌或其他身份验证提供商帐户。例如,Microsoft Authenticator可用于登录任何Microsoft Entra ID帐户,而无需使用密码。Microsoft Authenticator使用基于密钥的身份验证来启用绑定到设备的用户凭证(其中设备使用PIN或生物识别技术),Windows Hello for Business使用了类似的技术。

在v24.2中,DevExpress XAF UI (Blazor和WinForms)和Web API Service将支持所有与Passkey相关的使用场景,这包括恢复忘记的密码、暂时阻止访问帐户、帐户恢复、人脸识别登录、PIN、指纹、OTP、QR码,或各种身份验证应用程序,使用中间层应用程序服务器或WinForms中的更简单配置。

EF Core计算字段

在EF Core中为服务器端计算字段实现了一个更简单的解决方案。请注意,在Server和InstantFeedback模式下,您可以通过计算属性对List View数据进行排序、分组或筛选。使用DevExpress.ExpressApp.DC.CalculatedAttributeDevExpress.ExpressApp.DC.PersistentAliasAttribute来指示是否计算属性的值。下面的代码片段演示了如何创建一个带有计算属性的类:

cs 复制代码
using DevExpress.ExpressApp.DC;
public class Product : BaseObject {
// ...
public virtual decimal Quantity { get; set; }
public virtual decimal Price { get; set; }

[PersistentAlias("Quantity * Price")]
// or [Calculated("Quantity * Price")]
public decimal TotalPrice {
get { return EvaluateAlias<decimal>(); }
}
}
EF Core软删除

v24.2支持EF Core软删除(又名XPO的延迟删除),用于DevExpress XAF UI和Web API Service驱动的应用程序。

对于软删除或延迟对象删除,ORM将对象标记为已删除,而不会立即从数据库中物理地删除它们。此技术有助于在删除由其他实体引用的对象时避免数据库异常。

我们还为现有数据库表创建了一个自动转换器(以添加新的GCRecord列)。

EF Core过滤功能现在与XPO ORM相当

DevExpress v24.2引入了XAF中EF Core的计算属性,这一变化需要方便地访问自定义IsExactType和IsInstanceOfType函数,而不管应用程序中使用的ORM是什么。

为了实现奇偶性,我们将定制的IsExactType和IsInstanceOfType函数从DevExpress.Xpo程序集移动到DevExpress.Data程序集。

这个变化允许这个功能在EF Core中工作,您可以在EF Core项目中使用以下功能:Upcasting和Free Joins,这使得EF Core的过滤功能与今天的XPO ORM没有什么不同。

XPO DateOnly/TimeOnly支持

在v24.2中,XAF在.NET应用程序的XPO连接提供程序中支持DateOnly/TimeOnly,这种增强有利于XAF/Reporting/Dashboards和其他产品,因为XPO是内部数据访问代码的核心。作为其中的一部分,我们还更改了SQL类型Date和Time的列映射。

性能增强

DevExpress XAF v24.2优化了所有支持平台上的图像/图标加载操作,我们注意到应用程序启动时间的改进高达2秒(或者在具有大量操作的复杂应用程序中更多)。

在内部,我们也在安全对象和成员权限(EF Core和XPO ORM)和计算字段(仅EF Core)中使用了CriteriaCompiler而不是CriteriaEvaluator。对于特定的使用场景,这将计算时间和内存分配减少了一半。与此同时,您可以看看我们实验室的一些截图(这些变化还没有包括在这个EAP中):

审计追踪增强

DevExpress XAF现在自动从基于XPO的应用程序审计跟踪中排除所有非持久性属性,如果非持久性属性的setter方法包含广泛的逻辑,则此增强可以提高性能。

要更新现有的应用程序,请设置静态ObjectAuditProcessor. ExcludeNonPersistentFromAudit属性设置为true。

可用性增强

v24.2中添加了新的扩展防范,使得使用XafApplication和IObjectSpaceFactory创建新的对象空间变得更加容易。

cs 复制代码
// v24.1.3 and earlier
var os = Application.CreateObjectSpace(typeof(Person));
// v24.1.5+ and v24.2+
var os = Application.CreateObjectSpace<Person>();

如果您在ASP. NET Core 应用程序 (Web API Service控制器、自定义Razor组件等)中使用了IObjectSpaceFactory,请考虑v24.2中的以下小的突破性变化:T1254577 - INonSecuredObjectSpaceFactory and IObjectSpaceFactory classes were moved to the DevExpress.ExpressApp namespace

相关推荐
●VON2 分钟前
Flutter for OpenHarmony:基于 SharedPreferences 的本地化笔记应用架构与实现
笔记·学习·flutter·ui·架构·openharmony·von
云草桑1 小时前
.net AI开发05 第九章 新增 RAG 文档处理后台服务 RagWorker 及核心流程
人工智能·ai·.net·rag·qdrant
ujainu1 小时前
Flutter + OpenHarmony实现高保真闹钟 App:从 UI 设计到实时触发机制全解析
flutter·ui
晚霞的不甘2 小时前
Flutter for OpenHarmony《智慧字典》 App 底部导航栏深度解析:构建多页面应用的核心骨架
前端·经验分享·flutter·ui·前端框架·知识图谱
缺点内向2 小时前
Word 自动化处理:如何用 C# 让指定段落“隐身”?
开发语言·c#·自动化·word·.net
子春一2 小时前
Flutter for OpenHarmony:构建一个交互式 Flutter RGB 颜色选择器,深入解析状态驱动 UI、HEX 转换与无障碍色彩对比
flutter·ui
雨季6663 小时前
Flutter 三端应用实战:OpenHarmony 简易文本首字母提取器开发指南
flutter·ui·dart
mudtools3 小时前
飞书多应用开发:如何实现企业多应用的“系统集成引擎“
c#·.net·飞书
集成显卡12 小时前
Lucide Icons:一套现代、轻量且可定制的 SVG 图标库
前端·ui·图标库·lucide
子春一14 小时前
Flutter for OpenHarmony:构建一个高精度 Flutter 计时器:深入解析 Timer、状态同步与 UI 响应式设计
flutter·ui