eXpressApp Framework - 2020 Roadmap
Before I detail XAF’s 2020 Roadmap, my thanks to everyone who shared feedback/thoughts last year. Your contribution to XAF’s evolution is appreciated.
The following list outlines the features/capabilities we expect to introduce in the eXpressApp Framework (XAF) this year.
ASP.NET Core Blazor UI
- Navigation control with group and item hierarchy - Available in v20.1.3.
- Main menu with all standard XAF command types (buttons, popups, input/search boxes, drop-down menus) - Available in v20.1.3.
- Grid List Editor with sorting & grouping - Available in v20.1.3.
- Detail form layout with group and tab controls - Available in v20.1.3.
- Property Editors for all popular data types (no advanced editors for criteria, RTF, color, etc.) - Available in v20.1.3.
- View Variants Module, File Attachments Module, Audit Trail Module - Available in v20.1.3.
- Security Module: Forms Authentication with a login and password, role-based authorization and basic user/role management with access rights created in code (no specialized permission editors in the UI) - Available in v20.1.3.
- Multiple UI themes and a runtime theme chooser - Available in v20.1.3.
- Validation Module: data input validation with RuleRequiredField, RuleCriteria, RuleRange and other popular rules - Available in v20.1.6.
- Non-persistent/proxy objects - Available in v20.1.6.
- EF Core 5 for data access - Available in v20.2.1 (CTP).
- Other popular XAF modules: Conditional Appearance and Reports - Available in v20.2.1.
- Security Module: Windows, Azure AD, Google and custom OAuth2 authentication - Available in v20.2.2.
- Azure and Linux Deployment Support - Available in v20.2.2.
- Compact UI themes - Available in v20.2.2.
- Clone Object Module - Available in v20.2.6.
- UI customization, custom control integration and advanced CRUD usage scenarios - Available in v20.2.3.
- Extended end-user customization options (such as grid column header filters, add/remove columns, data export, inline edit) - POSTPONED.
- Online XAF Blazor demo (we will continue to update it with new features as they become available);
- Getting Started: Basic Tutorial (Simple Project Manager Demo) and In-Depth Tutorial (Main Demo)
- FAQ: XAF ASP.NET Core Blazor Server UI
- Other XAF Blazor-related announcements;
- DevExpress Blazor Component announcements;
- Microsoft Blazor Blog.

WinForms UI
- We hope support the following asynchronous operations out-of-the-box in the WinForms UI based on IObjectSpaceAsync introduced in v19.2: open List or Detail View, save View changes, save audit data (v20.1, v20.2). If you are missing important use-case scenarios, please specify them in comments below. Available in v20.1.3.
- We want to enable enhanced WinForms Filter and Expression editors in the Model Editor and within built-in List and Property Editors (v20.1). Available in v20.1.3.
- We want to rewrite our Tree List Editors module and support inplace data editing, better filtering options and more features (S30514, S30735 S38121) based on user feedback (v20.2) - POSTPONED.
ASP.NET WebForms UI
Our primary focus will be on XAF’s new Web & Mobile UI for Blazor. This notwithstanding, we will do our best to address the needs of existing ASP.NET WebForms UI users.
Housekeeping & Core
- We want to remove Visual Studio dependencies from the design-time Model Editor to increase stability and performance. We like the WPF designer that runs as a separate process and draws itself inside the Visual Studio frame. This will also help us support the Model Editor in .NET Core 3+ WinForms (v20.1) and .NET Standard 2+ Blazor or cross-platform projects (v20.2). Available in v20.1.3.
- We will also incorporate a number of usability enhancements to the Model Editor based on user feedback - please let us know if you have any issues with this editor (v20.2).
- We will monitor Microsoft updates with regard to the component designer in .NET Core 3+ and see if we can support our Application, Module, Controller and Action Designers. We will also support the SDK-style project format for all XAF design-time tools, Visual Studio vNext, .NET 5 and C# 8.0 features like Nullable Reference Types (v20.2) - POSTPONED.
- We will make a number of Non-Persistent/proxy object enhancements (v20.1, v20.2): support for filtering; propagate FindObject, CommitChanges, Refresh and other methods from NonPersistentObjectSpace to AdditionalObjectSpaces (T509228); support CRUD operations with non-persistent objects in a nested ListView of a persistent object DetailView (T486427, T510338, T695631). Available in v20.1 and more in v20.2.1.
- You can expect further performance enhancements to the Application Model and other core sub-systems. For instance, removing static XafTypesInfo dependencies and locks in ModelNode may result in faster app startup and unit tests as well as greater scalability for Blazor apps (v20.2).
Security System: Role-based Access Control & Authentication API
- We will publish Blazor, Xamarin and WPF examples for XAF's Role-based Authorization and User Authentication API powered by the XPO and Entity Framework Core 5 ORM (see our GitHub repository for more information). To deliver more elegant and modern solutions, we're considering the following enhancements: asynchronous versions of popular security APIs (IsGranted, CanRead, CanWrite, CanDelete, etc.), token-based authentication and possible utility libraries that will encapsulate boilerplate code (v20.1, v20.2).
- We hope to support Entity Framework Core to help more DevExpress and non-DevExpress customers benefit from XAF's Security System. In v20.1, we will introduce a secured Object Space for EF Core 3.1+ and examples for corresponding platforms. Available in v20.1.3.
- Later in v20.2, we will support EF Core in our Blazor UI - Available in v20.2.1 (CTP).
- We will include a built-in permission for XAF Actions (T618115). Available in v20.1.3. Since the UI has yet to be finalized, we welcome feedback and thoughts about the interface. We're considering the following base functionality (v20.1):
- A separate tab in the role detail form with a list of Action items like our built-in Navigation Permissions. In this grid, users will be able group data by display text, category, module and other context information. Please let us know your thoughts about this.
- Users will view, add, modify and remove only permissions for Actions they want to prohibit or deactivate. We want to follow only the 'Allow all by default' policy regardless of what is specified in the role, because other options do not make much sense for Actions. Your feedback is appreciated.
- Users will be able to prohibit execution of both custom and XAF system Actions (for greater user flexibility and implementation simplicity).
- Users will be able to quickly locate an Action in the lookup editor in the Action permission's detail form via search and grouping (for instance, to filter out XAF system Actions like Logon and Refresh).
- Action permissions will hide Actions unconditionally: we don't expect to interfere with Conditional Appearance, State Machine, TargetObjectsCriteria or any custom rules that depend on criteria or object/UI changes in Controllers. If you want such dynamic functionality for Actions, it is better to implement it using these specific means. Please let us know your thoughts about this.
Unit & Functional Testing
Unit and functional testing are very important to XAF's target audience - development teams creating complex enterprise apps.
For functional testing, we will continue to improve our cross-platform EasyTest engine. Enhancements will include new commands and features (for instance, you will be able to write Blazor functional tests for Chrome or FireFox web browsers in C# or VB.NET - learn more). For unit testing, we will add learning materials and release all required assemblies with helper/mock classes (like TestDBTest, TestDetailViewFactory, BlazorAdapter, etc.).
Additional enhancements are expected and will be driven by user feedback. If you have unresolved testing issues or usage scenarios, please post your feedback below.
Ready to start testing today? Please review the following articles to learn more:
- How to write lightweight unit tests for XAF Actions, Controllers and other custom UI logic
- How to integrate XAF functional testing with Continuous Integration systems like Azure DevOps
Your Opinion Counts
As always, we look forward to your comments and questions. Please share your thoughts below or email [email protected].