XAF - 2022 Roadmap (Cross-Platform .NET App UI & Web API Service)

XAF Team Blog
28 February 2022

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 & Web API Service this year. This documents mostly contains the information for v22.1, see this document for our v22.2 plans.

EDITXAF 2023 Roadmap Is Here

Table of Contents

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.
  • Bootstrap 5 Support. Available in v22.1.
  • Preview of Runtime Form Layout Customization for End-Users. Postponed t 2023  (awaiting more user feedback).
  • Migration to the DevExpress themes. Available in v22.2 (relied on the New Render & Size Mode Support in Blazor Components v22.2).

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. 

As we noted 1 year ago, we encourage our Entity Framework 6 (EF 6) users to consider EF Core 5 for new XAF's Blazor and WinForms .NET 5+ projects. Microsoft has moved EF 6 into maintenance mode, and as such, EF 6 will not mirror XAF's .NET 5+ offering. At present, EF Core 5 supports key XAF technologies/capabilities including advanced security and comprehensive audit trail support. EF Core 5 also offers better performance when compared to EF 6. For more information, see Porting from EF 6 to EF Core.

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). Available in v22.2.
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.

BACK TO THE TOP

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.


BACK TO THE TOP

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"));
}

BACK TO THE TOP

Release of Pre-Built Code & Project Error Diagnostics

We shared a preview of this useful feature in v21.2, and are now releasing it in XAF v22.1. The DevExpress.ExpressApp.CodeAnalysis NuGet package will be renamed to DevExpress.CodeRush.CodeAnalysis.XAF and the Project Converter will take care of this automatically. Available in v22.1.

If you have not yet voted in the CodeRush 2022 Roadmap survey, I strongly recommend you do this today, because certain enhancements may be very interesting for XAF/XPO users.

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. Available in v22.1.

  • 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).
  • We will support the latest version of PostgreSQL driver for .NET Core apps - Npgsql 6.0.
  • We will also expand XPO connection provider support with SAP HANA.

BACK TO THE TOP 

Your Opinion Counts

As always, we look forward to your comments and questions. Use the field below to share feedback with us.

The information contained within this blog post details our current/projected development plans. Please note that this information is being shared for INFORMATIONAL PURPOSES ONLY and does not represent a binding commitment on the part of Developer Express Inc. This roadmap and the features/products listed within it are subject to change. You should not rely on or use this information to help make a purchase decision about Developer Express Inc products.

Free DevExpress Products - Get Your Copy Today

The following free DevExpress product offers remain available. Should you have any questions about the free offers below, please submit a ticket via the DevExpress Support Center at your convenience. We'll be happy to follow-up.
No Comments

Please login or register to post comments.