Before I detail XAF’s 2022 Roadmap, my thanks to everyone who shared feedback/comments last year. Your contribution to XAF’s evolution is appreciated. The following list outlines the features/capabilities we expect to introduce in our Cross-Platform .NET App UI - XAF and .NET App Security API this year.
Table of Contents
- ASP.NET Core Blazor UI
- WinForms UI
- Release of Entity Framework Core 5 for Data Access
- Release of Middle Tier Application Server for .NET 6
- Entity Framework Core 6 Support in WinForms, Blazor & API Services
- API Services for Non-XAF UI Clients
- Release of the FREE Web API Service for Basic CRUD & Authorization
- The Future of XAF API Services: FREE and PAID Capabilities
- Cross-Platform Enhancements
- .NET 6 Is Used By Default
- Simplified XAF Solution Structure
- Preview of XAF Module Extensions for Unified Application Configuration in WinForms & Blazor
- Model Editor Enhancements
- Support for XAF Data Sources in the .NET 6 Report Designer
- Unit & Functional Test Infrastructure in Solution Wizard
- Release of Pre-Built Code & Project Error Diagnostics
- New Database Connection Providers in XPO
ASP.NET Core Blazor UI
We expect to introduce the following to XAF's Blazor UI in the v22.1 release cycle:
- Release of DxGridListEditor (Server Mode support, custom calculated field support, column resizing support, performance enhancements, Column Chooser). Available in v22.1.
- Main Menu Toolbar Enhancements (learn more). Available in v22.1.
- Preview of Runtime Form Layout Customization for End-Users (learn more). Postponed to v22.2.
- Migration to the DevExpress themes. Postponed to v22.2.
- Bootstrap 5 Support. Available in v22.1.
v22.1 is mostly a service release for XAF's Blazor UI, because it is fully dependent on the progress made with DevExpress Blazor components. Even though the XAF team is heavily involved at early planning and testing stages, we still require additional time to integrate and test the latest component enhancements (roadmap). So, not all new Blazor component features available in v22.1 will ship as part of XAF's Blazor UI v22.1. We expect to catch up in v22.2 with enhancements such as accordion for navigation, inline row editing and export in the grid control, split view like Outlook, advanced popup windows, etc. We will detail these plans in another roadmap post around the July time frame.
We also encourage XAF developers to remember that XAF is fully extendable framework/constructor, and that you can incorporate Blazor and DevExtreme components/customize XAF’s default UI as needed today, without waiting for another release. More customization tips | Blazor UI (FAQ).
BACK TO THE TOP
WinForms UI
Release of Entity Framework Core 5 for Data Access
In v22.1, we can recommend production use of Entity Framework Core 5 (EF Core 5) data models in .NET 6 WinForms apps (Documentation). You can find a demo at: c:\Users\Public\Documents\DevExpress Demos 22.1\Components\eXpressApp Framework\EFCoreDemo\. EF Core 5 can also be used in XAF's Blazor apps and .NET App Security API. Enhancements include multiple stability fixes and support for the Server and DataView access modes in ListView. Available in v22.1.
Release of Middle Tier Application Server for .NET 6
In v22.1, we can recommend production use of our Middle Tier application server with XPO-based .NET 6 WinForms apps. Available in v22.1.
Entity Framework Core 6 Support in WinForms, Blazor & API Services for Data Access
Support for Entity Framework Core 6 (EF Core 6) is expected in our v22.2 release cycle. EF Core 6 is the latest version of Entity Framework and has a number of advantages over EF Core 5: https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-6.0/whatsnew. Unfortunately, Microsoft introduced a number of breaking changes that we will need to address. We will not support EF 7 in 2022 unless there are strong reasons to do so (because this is NOT an LTS release).
BACK TO THE TOP
API Services for Non-XAF UI Clients
Release of the FREE Web API Service for Basic CRUD & Authorization in v22.1
Our Web API backend service is powered by Swagger/OpenAPI and allows you to reuse XAF application data, logic, and modules within non-XAF apps. Our v22.1 release will include stability, performance, and documentation updates. In addition, we will support EF Core 5 for Web API Service (in previous versions, only XPO was supported). We will also update example E4908 to use the Web API Service instead of a custom implementation with plain OData v4. Available in v22.1.
The Future of XAF API Services: FREE and PAID Capabilities
We will keep offering basic CRUD and authorization functions for free as part of our .NET Role-based Access Control & Permission Management API. In v22.1, this free product will also include a project template that will generate a Web API Service with the same basic functions powered by Entity Framework Core 5 and XPO ORM. To download your free copy, please verify your contact information and click Register on the following web page: https://www.devexpress.com/security-api-free.
We will also add paid enterprise features for this security API and Web API Service. Like technical support, these paid features will be a part of the XAF/Universal license. For instance, v22.1 will include end points to get localized captions for classes and members in the Web API Service. Available in v22.1.
Later this year we also hope to support XAF's audit trail for Entity Framework Core 6 and XPO, end points to download reports in PDF or FileData-based attachments, advanced CRUD with XAF validation rules, etc). For more information on these paid capabilities, check out XAF modules.
BACK TO THE TOP
BACK TO THE TOP
Cross-Platform Enhancements
.NET 6 Is Used By Default
XAF's Blazor and WinForms (.NET Core) assemblies will target .NET 6 with our v22.1 release. .NET 6 is a long-term support (LTS) release, and with it we can deliver the best experience from a UX and performance perspective for Blazor, XAF Model Editor, and our WinForms design-time. Available in v22.1.
Simplified XAF Solution Structure
We removed SolutionName.Module.XXX projects and allowed XAF developers to add Controllers, business classes, list and property editors, view items, and other XAF-specific entities to automatically load from SolutionName.XXX executable projects. This should make it easier for new XAFers to get started with the product and also eliminate mistakes for existing XAF developers. Available in v22.1.
Preview of XAF Module Extensions for Unified Application Configuration in WinForms & Blazor
As you may recall from our 2021 roadmap, we will NOT support Module and Application Designers in .NET 5+ apps. These designers duplicate Solution Wizard functionality and are rarely used (occasional module or application configurations can be easily addressed with a few lines of code: example).
To promote straightforward and consistent configurations for security and application modules across WinForms and Blazor in .NET 6, XAF v22.1 will support fluent API syntax in Startup.cs. Available in v22.1.
...
services.AddXaf(Configuration, builder => {
builder.UseDefaultApplicationFactory<SimpleAppSetupDemoBlazorApplication>();
builder.Modules
.AddSystemBlazorModule()
.Add<SimpleAppSetupDemoModule>()
.AddSecurityModule()
.AddAuditTrailModule(auditTrailModule =>
auditTrailModule.AuditDataItemPersistentType = typeof(DevExpress.Persistent.BaseImpl.AuditDataItemPersistent))
.AddCloneObjectModule()
.AddConditionalAppearanceModule()
.AddDashboardsBlazorModule(null, options => {
options.SetupDashboardConfigurator = (configurator, serviceProvider) => {
configurator.DefaultDataReloadingTimeout = TimeSpan.FromSeconds(5);
};
options.RouteOptions.Endpoint = "customApiRoute/dashboards";
})
...
The PlatformApplication.designer.xx and Module.designer.xx files will be removed from the Solution Wizard template in .NET 6 apps as well. These changes will NOT affect .NET Framework apps and you can keep using the old-good option with the designers as before.
BACK TO THE TOP
Model Editor Enhancements
The Model Editor is now built with .NET 6 and delivers better performance and stability. Users will also like the simplified drag-and-drop implementation under the NavigationItems node (you no longer need to precisely point out the Items sub-node and can drop an item directly on the root node). Available in v22.1.
Support for XAF Data Sources in the .NET 6 Report Designer
XAF developers will be able to use XAF-specific report data sources in the new .NET 6 Report Designer for Visual Studio. Known issues such as missing XAF business classes in the ObjectTypeName editor or missing members in the Field List have been addressed. Available in v22.1.
Unit & Functional Test Infrastructure in Solution Wizard
Solution Wizard will include built-in end-to-end (e2e) tests in C# powered by our EasyTest functional testing engine and popular unit testing libraries such as xUnit, nUnit. Available in v22.1.
Later this year will add boilerplate code for unit testing and CI/CD template to help you get started with specific tests-related tasks in minutes using GitHub Actions and Azure DevOps.
BACK TO THE TOP
[Theory]
[InlineData(BlazorAppName)]
[InlineData(WinAppName)]
public void CreateStudent(string applicationName) {
FixtureContext.DropDB(AppDBName);
var appContext = FixtureContext.CreateApplicationContext(applicationName);
appContext.RunApplication();
appContext.GetForm().FillForm(("User Name", "Admin"));
appContext.GetAction("Log In").Execute();
appContext.Navigate("Student");
Assert.Equal(0, appContext.GetGrid().GetRowCount());
appContext.GetAction("New").Execute();
appContext.GetForm().FillForm(("First Name", "John"), ("Last Name", "Smith"));
appContext.GetAction("Save").Execute();
Assert.Equal("John Smith", appContext.GetForm().GetPropertyValue("Full Name"));
appContext.Navigate("Student");
Assert.Equal(1, appContext.GetGrid().GetRowCount());
Assert.Equal(new string[] { "John", "Smith" }, appContext.GetGrid().GetRow(0, "First Name", "Last Name"));
}
Release of Pre-Built Code & Project Error Diagnostics
We shared a preview of this useful feature in v21.2, and are now releasing it under the CodeRush umbrella. The DevExpress.ExpressApp.CodeAnalysis package will be renamed to DevExpress.CodeRush.CodeAnalysis.XAF and the Project Converter will take care of this automatically. Available in v22.1.
New Database Connection Providers in XPO
We will keep XPO connection providers up to date with the latest database engines and extend support based on user feedback.
- MySqlConnector is a new ADO.NET data provider (MIT) for MySQL, MariaDB, Amazon Aurora, Azure Database for MySQL and other MySQL-compatible databases. It should deliver more value than the old MySql.Data provider (GPLv2). Available in v22.1.
- We will support the latest version of PostgreSQL driver for .NET Core apps - Npgsql 6.0. Available in v22.1.
- We will also expand XPO connection provider support with SAP HANA. Available in v22.1.
Your Opinion Counts
As always, we look forward to your comments and questions. Use the field below to share feedback with us.