eXpressApp Framework - 2020 Roadmap

XAF Team Blog
23 January 2020

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. 

UPDATED on October 20th 2020.

ASP.NET Core Blazor UI Is Coming

We are fully committed to XAF and are continuing to evolve its capabilities. For those targeting Web browsers & Mobile devices, we have chosen to focus our efforts on a new UI powered by Microsoft Blazor.
XAF v20.1 will include a CTP version of Blazor UI with eXpress Persistent Objects (XPO) ORM classes for data access. XAFers will be able to create Blazor Server apps using the Solution Wizard. We expect to ship the following functionality for desktop and mobile apps in CTP:
We expect to officially ship XAF’s Blazor Server UI in our v20.2 release cycle. It should include online documentation and the following capabilities/functionality:

We postponed decisions related to Blazor WebAssembly support until it is officially marked as final (LTS) by Microsoft (likely in .NET 5 or later). 

For more information on XAF’s upcoming Blazor UI, please review the following:


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.
  • 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.
  • We want to rewrite our Tree List Editors module and support inplace data editing, better filtering options and more features (S30514S30735 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).
  • 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 (T486427T510338T695631). Available in v20.1 and more in v20.2.1 (EAP).
  • 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: User Authentication and Group Authorization API

  • We will publish Blazor, Xamarin and WPF examples for XAF's User Authentication and Group Authorization API powered by the XPO 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.
  • Later in v20.2, we will support EF Core in our Blazor UI. We will decide on the EF Core support for WinForms UI based on user demand. Partially available in v20.2.1 (EAP).
  • We will include a built-in permission for XAF Actions (T618115). Available in v20.1Since 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 defaultpolicy 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 TestDBTestTestDetailViewFactoryBlazorAdapter, 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:

Your Opinion Counts

As always, we look forward to your comments and questions. Please share your thoughts below or email xafteam@devexpress.com.

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.

Showcase Your Apps on DevExpress.com

Highlight your business app and share your development experiences with the DevExpress community. To include your app in our upcoming App Showcase, please forward an application screenshot to clientservices@devexpress.com and tell us which DevExpress products you currently use within your organization.
21 comment(s)
Isa_Tahiri
Isa_Tahiri

Pretty impressive ! A big thank you for DevExpress Team! 

I do not see anything about Dashboard with Blazor in this roadmap. 

Should we expect it in 20.2  with Report module ? 


BR

ISA

23 January 2020
Shama Naz
Shama Naz
when devexpress mainly address to UI then i think must focus to add dashboard UI for Blazor also data filteration for listview is much important
23 January 2020
Eugene Kuchynski
Eugene Kuchynski
Maybe too early to ask, but is it possible to provide at least some generic information how customization will be implemented in Blazored XAF? I mean custom components for list views, detail views, individual editors, etc. For example, since there will be no UI for security system customization in first versions, how many efforts will be needed to create own implementation of such UI? The same about dashboards, etc.
23 January 2020
Dennis (DevExpress)
Dennis (DevExpress)
@Eugene Kuchynski: Yes, please review Using a Custom Control that is not Integrated by Default.

@ISA: No, we don't expect to ship Dashboard and other non-critical XAF modules in XAF's Blazor UI this year. Less than 5% of roadmap survey respondents mentioned "dashboard". Our goal for 2020 is to release critical functionality for the majority of XAFers.

You can implement some of your data analytics scenarios with report or custom control integrations (for instance, charts). For more information, see the following articles:
23 January 2020
Nate Laff
Nate Laff
Holy moly. Async audit data would be huge performance gains!
23 January 2020
NHIF
NHIF
I would like to see Application template like the one used in DevExtreme Angular layout.
24 January 2020
Dmitry Katkov (Novimax)
Dmitry Katkov (Novimax)
A little suggestion about Actions: add two properties to ActionBase class "ActiveOn" and "EnabledOn" with following predefined values: None (by default), AllowNew, AllowEdit, AllowDelete, and allow us to change this properties for any action in Controller visual designer or in Application Model. When these properties are in use (not equal to "None" value) actions becomes inactive or disabled in case we restrict view editing/deleting/objects creating in Application Model or by security system.
7 February 2020
SWAPI - Alziro Moraes
SWAPI - Alziro Moraes

Hi,

A suggestion for built-in permission for XAF Actions is to have the possibility to leave the action enabled but request a user and password to continue executing the action. Thus, the user could request the presence of another user with a higher level that would authorize the action without the need to leave the system. An event to validate credentials and two for success and failure would be interesting.

8 February 2020
Krzysztof Krzysztof (LOB)
Krzysztof Krzysztof (LOBS)

Blazor UI is the most awaited branch of your development.

Key features from my point of view:

 - ***Security module*** (authentication, role-based authorization and user/role management with access rights)

 - mode property editors

 - more validation rules

14 February 2020
Randy Jean
Randy Jean
Did a side by side comparison of Blazor UI vs. current ASP.Net New Web UI on a mobile device (Chrome on Pixel 2).  Performance is much, much better with Blazor.  Current New UI is adaptive as far as adjusting to screen size, but performance is terrible.  Jerky and unresponsive to the point of not usable.  And it's not server side that causes it because same app on a desktop browser is fine.  What does current XAF do in ASP.Net that makes it so slow/unresponsive on a mobile browser?  It literally seems to just lock up.  Just try the maindemo ASP.Net from a mobile browser and you'll see what I mean.
14 February 2020
Dennis (DevExpress)
Dennis (DevExpress)
@Randy Jean: I am happy to hear that you found the new XAF Blazor UI fast like many other users do in this post after testing https://www.devexpress.com/go/XAF_Blazor_Demo.aspx. Shortly, XAF WebForms UI generates much more HTML for web browsers to render between requests (this is a specificity of the ASP.NET WebForms platform). We have not added any optimizations for small mobile phones on the XAF side (only desktop and tablet web browsers).

Blazor Server is much faster because only differences between the server and client states are transferred and rendered (see https://docs.microsoft.com/en-us/aspnet/core/blazor/hosting-models?view=aspnetcore-3.1).

26 February 2020
CRM-0b29dbfc-6de4-4697-a6d5-ae33f657c362
Tim

Hello,


Can we please put totals for the DataGrid on the roadmap please?  This seems like such basic functionality that could be included but I can't do any kind of totals on the DataGrid rows.  Ideally I would like to be able to filter the datagrid and be able to display the amount of rows filtered as the result.  So if I have 10 rows in a dataset i should be able to say I have 10 rows total.  If I were to filter those 10 rows down to 3 rows, I would like to display to the user that there are now 3 rows total.

As an example, Telerik does this with their datagrid today!

https://docs.telerik.com/blazor-ui/components/grid/overview

Thanks!

19 June 2020
Mehul Harry (DevExpress)
Mehul Harry (DevExpress)

@Tim,

Thank you for sharing your requirements with us. Based on feedback, a great deal of R&D effort is aimed at improving our Grid and Data Editors Library. We will take your feedback into account when planning future releases.

19 June 2020
Bjoern Hack
Bjoern Hack

Hi Dennis,

are NonPesistentObjects at current stage supported?

Best Regards

21 June 2020
Mark Elberg
Mark Elberg

Hi Dennis,

this sounds really good.

We are eagerly waiting to use Blazor UI in a new XAF project. When do you expect to ship 20.2?

Best Regards

22 June 2020
Dennis (DevExpress)
Dennis (DevExpress)

@Bjoern: No, we'll update your Support Center ticket if we have any news in this regard.

@Mark: We appreciate your interest. Around October-November time frame, as always. 
What are the most critical use-case scenarios you want to deliver in the first version of your production Blazor app? With that, we will be in a better position to prioritize future development and probably share further comments. Thanks.


22 June 2020
Chris Norwood
Chris Norwood

@Dennis 

I really like the look of the new Blazor UI demo, and I'm planning to create some new products over the next 2 - 3 months with a view to releasing in November, so it's unlikely I'll be able to use Blazor for them initially.

With that said, will it be possible to add a Blazor UI to an existing XAF application the way you can with ASP.Net/WinForms?

Thanks,

Chris.

16 July 2020
Dennis (DevExpress)
Dennis (DevExpress)

@Chris:
Yes, absolutely. For more information, please see our FAQ: XAF ASP.NET Core Blazor Server UI (CTP).

How to create a Blazor UI application for testing?
Create a new project in Visual Studio 2019 and select the DevExpress v20.1 XAF.Blazor Solution Wizard template. The wizard does not currently support the capability to add Blazor UI projects to existing XAF applications. To re-use your existing business model, platform-independent controllers and Application Model settings, attach your platform-independent modules to a new Blazor application (Add a Module in Code). Modules should be converted to .NET Standard 2.0. See the following article: How to port an XAF platform-agnostic module to .NET Standard 2.0+.

Will it be possible to convert existing XAF applications to Blazor UI?
Most ORM data models and some platform-agnostic controllers can be used in Blazor UI with minimal or no changes. We try to preserve platform-agnostic XAF APIs like IObjectSpace, ViewController, View, or Frame.
To add existing platform-independent modules to a Blazor.Server project, it will be necessary to convert them to .NET Standard 2.0: How to port an XAF platform-agnostic module to .NET Standard 2.0+.
All platform-dependent code should be rewritten. In addition, since Blazor applications have a very different architecture and life cycle, the code that was common for ASP.NET and WinForms may need to be changed for Blazor. In v20.2, we will publish documentation for most common tasks.


Note that even if you do not use XAF (for instance, you use pure DevExpress dashboards, reports, grids in non-XAF apps), you can reuse XAF/XPO data models and certain XAF modules like security as described at .NET User Authentication and Group Authorization API for DevExpress XPO and Microsoft Entity Framework Core ORMs (Powered by XAF's Security System).

16 July 2020
Chris Norwood
Chris Norwood
Awesome - thanks Dennis! (I should have read further down that article, I was reading it at the same time)! :)
16 July 2020
Yahya
Yahya
Have compact themes been released in 20.2.2 beta? Any screenshots?
5 October 2020
Dennis (DevExpress)
Dennis (DevExpress)
@Yahya: Yes, you can check a screenshot in https://twitter.com/DevExpress_XAF/status/1306692096405966855
5 October 2020

Please login or register to post comments.