个人中心

联系我们

搜索
搜索 登录 免费注册
界面美化
业务优化
开发工具
图像管理
文档管理
Parasoft

新闻资讯

关注工具软件产品最新动态,了解软件开发行业新趋势。

Dev XAF v24.1 EAP-用于Blazor、EF Core 8和中间层服务器性能提升

原创
软件开发
来源:DevExpress
DevExpress
API
.net
asp.net
Microsoft
Winform
2024-05-30
DevExpress
API
.net
asp.net
Microsoft
Winform

您可能已经知道,我们距离下一次重大更新(v24.1)还有几个月的时间。这篇文章介绍了我们预计将于 6 月初发布的一些 XAF 相关功能,并详细介绍了我们的早期访问预览版(有关您可以期待的其他信息,请参阅我们的 2024.1 6 月路线图)。


正如您在下文中看到的,XAF 的主要关注领域仍将是 Blazor、Entity Framework Core、安全性和 .NET 8。XAF 的核心开发支柱之一是低代码/无代码 .NET 应用程序开发(同时用于 Web、桌面和 API)。当上市时间/效率非常重要时(尤其是在当今世界),XAF 可以帮助您使用熟悉的 RAD 方法在最短的时间内交付业务应用程序。


如果您拥有激活的 Universal Subscription,请随时下载此早期访问预览版 (EAP) 版本。如果您拥有激活的 DXperience 订阅,并希望进一步了解我们的跨平台 .NET 应用程序用户界面 (XAF) 或 Web API 服务,您可以登录 DevExpress 下载管理器并在试用模式下安装此 EAP 版本,以探索此处描述的功能。安装完成后,请花点时间告诉我们这些新功能是否满足您的业务需求。您的反馈将有助于我们在正式发布前对实施进行微调。


如果您正在使用试用版并希望立即试用这些预览版功能,您可以在线购买 DevExpress 通用许可证(这将使您能够访问早期访问预览版构建)。如果您拥有非通用订购并准备升级,请联系在线客服了解升级价格


ASP.NET Core Blazor UI

支持标签式 MDI

标签式MDI是一种多文档界面(MDI)用户界面隐喻,可在许多现代应用程序(包括您最喜爱的Web浏览器或Microsoft Outlook Web)中找到。它是一种强大的界面,能最大限度地利用文档屏幕空间,尤其是在处理多个文档、电子邮件等时。


标签式 MDI 默认在 XAF WinForms 应用程序中启用,XAF Blazor 将在 v24.1 中提供类似的用户体验。您还可以在模型编辑器中对标签式 MDI 进行如下自定义:


  • 在应用程序运行之间恢复以前打开的标签页(默认情况下 RestoreTabbedMdiLayout = True)

  • 在标签聚焦时刷新视图数据源(RefreshViewOnTabFocus = 默认为 False)

  • 显示或隐藏标签页图像(ShowTabImage = 默认为 True)

  • 在主窗口的顶部、底部或右侧显示标签页(TabPosition = Top(默认值)

此外,您还可以在代码中访问底层选项卡控件,并根据需要使用控制器(在 SolutionName.Blazor 项目中)对其进行配置。例如,您可以按需或同时加载标签页。

protected override void OnFrameAssigned() {
    base.OnFrameAssigned();
    Frame.TemplateChanged += Frame_TemplateChanged;
}
private void Frame_TemplateChanged(object sender, EventArgs e) {
    if(Frame.Template is ApplicationMdiWindowTemplate template) {
        template.TabsModel.RenderMode = DevExpress.Blazor.TabsRenderMode.AllTabs;
    }
}


由于我们的 EAP v24.1 包含 Tabbed MDI 的已知问题(已在最新版本中修复),因此我们主要要求您在应用程序中测试此 UI 隐喻以获得反馈。



在运行时向网格和布局控件的自定义表单中添加新字段

XAF WinForms 应用程序包含一个对象模型对话框。通过该对话框,最终用户可以搜索、勾选或取消勾选数据模型字段(包括子字段和集合),这些字段尚未显示在网格或布局控件中(作为列选择器或自定义窗体的一部分)。


与 Microsoft Office 应用程序类似,该功能允许用户(根据数据模型的结构)完全自定义列表和详细表单。同样,当开发人员需要在不重新部署的情况下处理业务需求变更时,这也很有帮助。更多信息,请参阅《ASP.NET Core Blazor 应用程序中的运行时布局自定义》。


XAF Blazor 在 v24.1 中为 ListView 和 DetailView 提供了类似的体验(请记住这个已知问题)。该功能消除了在设计时模型编辑器(Visual Studio 内部)中对 UI 进行自定义的需求--这是许多用户在 XAF WinForms UI 中喜爱的功能。当然,您也可以为最终用户禁用这些运行时功能。



通知模块

XAF Blazor v24.1 支持我们的通知模块。通过该模块,您可以为日程安排预约或任何自定义对象(如任务)显示提醒。日程安排预约/活动的详细表单还允许您配置类似 Microsoft Outlook 中的提醒。在通知模块的帮助下,您的应用程序可以在预约/活动开始时间之前显示弹出窗口。


注意:我们的通知模块不必与日程安排模块绑定:它可以显示来自任何地方的通知。在后一种情况下,作为开发人员,您的目标是向通知服务提供通知项目,然后该服务将根据需要对其进行处理。



网格列表编辑器中的批量/单元格编辑

XAF Blazor v24.1 通过单个选项(InlineEditMode = Batch)正式提供批量编辑支持 - 就像其 XAF WebForms 对应版本一样。目前(v23.2),XAF Blazor 开发人员必须手动启用该选项(了解更多信息)。


辅助功能增强和键盘支持

目前,XAF(ASP.NET Core Blazor、WinForms 和 ASP.NET WebForms 的用户界面)提供了部分辅助功能支持,与相应用户界面平台上相应 DevExpress UI 控件中的辅助功能支持如出一辙:


  • DevExpress ASP.NET Core Blazor

  • DevExpress WinForms

  • DevExpress ASP.NET Web Forms

  • DevExpress DevExtreme(XAF ASP.NET Core Blazor 和 ASP.NET Web Forms UI 中使用 DevExtreme UI 控件。)

XAF Blazor 还提供了自己的用户界面组件/元素集(如属性编辑器和动作容器)。在 v24.1 中,我们扩展了可访问性支持,并改进了所有 XAF Blazor UI 元素(约 20% 的应用场景)的键盘支持。一旦我们在整个 2024 年增强 DevExpress Blazor UI 组件的辅助功能,XAF 辅助功能支持也将自动升级。


我们的 Blazor 网格键盘导航选项也已正式发布,并在 XAF Blazor 中默认启用。 另请参阅 Blazor - 2024 年 6 月路线图 (v24.1) 中的 "键盘支持 "和 "键盘支持增强和新标签导航 "部分。


Blazor 还有更多...

有关 XAF Blazor UI 的更多增强功能,请查看 Blazor 组件套件 - 早期访问预览版 (v24.1) - 其中许多组件功能将自动在 XAF Blazor 中可用。


跨平台增强功能

从 Newtonsoft.Json 迁移到 System.Text.Json

现在,System.Text.Json 库用于反序列化后端 Web API 服务端点的输入参数。


EF Core 8 支持

EF Core 8 在 v24.1 中正式支持 XAF 和相关的后端 Web API 服务。EF Core 8 是实体框架的最新生产就绪版本。


虽然 EF Core 8 与其前身相比具有众多优势(包括性能和自定义),但它也引入了一系列我们需要解决的破坏性更改(例如,仅支持 DateOnly 和 TimeOnly)。为了在正式发布前征求反馈意见,我们有意在 v23.2.4+ 中添加了对 EF Core 8 的预览 (CTP) 支持。


有关 EF Core 近期更新的更多信息,请参阅以下 Microsoft 文档: EF Core 8 的新功能 | EF Core 8 的重大变化 | EF Core 8 与 XPO ORM 的性能基准。


多租户: 使用自定义字段扩展内置租户类

现在,您可以扩展标准租户类,将附加数据(例如模块和功能许可信息)与存储在应用程序主机数据库中的租户关联起来。当然,您也可以稍后在代码中访问自定义租户字段(从控制器或应用程序构建器)。我们还支持 EF Core 和 XPO ORM。

// MySolution.Module\BusinessObjects\CustomTenant.cs
// EF Core
using DevExpress.Persistent.BaseImpl.EF.MultiTenancy;
public class CustomTenant : Tenant {
    public virtual string CustomField { get; set; }
}
// MySolution.Blazor.Server/Startup.cs (MySolution.Win/Startup.cs)
builder.AddMultiTenancy()
    .WithCustomTenantType<CustomTenant>()
    //...



EF Core 中一对多聚合集合的级联删除

随着 v24.1,XAF 的解决方案向导在基于 EF Core 的应用程序的 OnModelCreating 方法中包含了`modelBuilder.SetOneToManyAssociationDeleteBehavior(DeleteBehavior.SetNull, DeleteBehavior.Cascade);`。这段代码将分别为非聚合的一对多关联配置 DeleteBehavior.SetNull,为聚合的一对多关联配置 DeleteBehavior.Cascade。以前,EF Core 不会像 XPO ORM 那样考虑 XAF 的聚合属性(在某些 ListView 场景中可能会有例外)。


绕过内部业务逻辑的安全权限检查

此外,现在还可以在 BaseObject 子类中调用新的 SetPropertyValueWithSecurityBypass 方法,以绕过内部应用程序逻辑中某些受保护属性的安全检查(也支持自定义基类)。


当您希望设置 CreatedBy、ModifiedBy、CreatedOn、UpdatedOn 等服务属性时,这一功能对 XAF 开发人员尤为重要。- 我们的审计跟踪和模型差异模块也使用类似的机制。SetPropertyValueWithBypassSecurity 方法可以代表受限用户/普通用户在代码中自由设置受保护的属性,就像应用程序管理员一样,而无需知道管理员凭据(如服务任务的冒充)。

ApplicationUser GetCurrentUser() {
    return ObjectSpace.GetObjectByKey<ApplicationUser>(
        ObjectSpace.ServiceProvider.GetRequiredService<ISecurityStrategyBase>().UserId);
}
public override void OnSaving() {
    base.OnSaving();
    if (ObjectSpace.IsNewObject(this)) {
        SetPropertyValueWithSecurityBypass(nameof(CreatedBy), GetCurrentUser());
    }
    else {
        SetPropertyValueWithSecurityBypass(nameof(UpdatedBy), GetCurrentUser());
        SetPropertyValueWithSecurityBypass(nameof(UpdatedOn), DateTime.Now);
    }
}


大家可能都知道,这是许多 XAFer 长期以来一直在寻求的一个选项--这个选项阻碍了从集成模式向中间层安全模式的全面迁移(因为 CreateNonsecuredObjectSpace 和其他变通方法很不方便)。SetPropertyValueWithBypassSecurity 还包含某些限制,例如仅支持从 BaseObject.OnSaving 内部调用此方法(以获得最佳安全性),或者被绕过的属性不能在内部更新其他受保护的属性。我们认为,这一新选项将涵盖 80% 的常用案例。


增强 WinForms 应用程序中间层安全性的性能

在 v24.1 中,具有中间层安全性的 XAF WinForms 的执行速度将大大加快。与 v23.2 相比,我们核心团队的两位优秀工程师 Max 和 Pavel 提高了 EF Core 8 和 XPO ORM 的性能(XPO ORM 的效果更好,提高了 2.5 倍)。我们还没有完成相关的优化工作,因此我们将在 6 月份正式发布前分享最终数据。)


下图显示了 EF Core 8 24.1 与 v23.2 性能测试和单项测试的当前持续时间。



除了相关的性能增强外,这是我们在解决方案向导中默认启用 XAF WinForms 应用程序的中间层安全性之前的最后一步。希望 XAF 开发人员也能发现这些新功能足以切换到中间层安全性。


早期访问和 CTP 版本仅用于早期测试目的,还不能用于生产。此版本可与 DevExpress 产品的其他主要版本同时安装。在安装早期访问和 CTP 版本之前,请备份您的项目和其他重要数据。此 EAP 可能不包括我们预计在 v24.1 发布周期中发布的所有功能/产品。顾名思义,EAP 提供了我们预计在两个月内发布的产品的早期预览。


联系我们

周一至周日 8:00-23:00

免费热线

023-62585653

张经理:13082556879

罗经理:17558866126

许经理:13057566525

开发外包

ERP-一体化

小程序

企业微信客服

版权所有:重庆庚乾信息科技有限公司 ©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508

版权所有:重庆庚乾信息科技有限公司

©2025 Gengqian Information Technology Co., Ltd. 渝ICP备2022008063号-2 渝公网安备50010702505508