If you followed our XAF plans for the first half of the year, I hope you will agree that v22.1 was a meaningful release as we've implemented almost everything planned. In this post, I’ll discuss plans for our XAF v22.2 release.
Web API Services for Non-XAF UI Clients (Powered by EF Core & XPO ORM)
As you may know from my recent post, everyone can (for free) create an OData v4 Web API Service with integrated authorization & CRUD operations with a few clicks using our Solution Wizard in v22.1. Yes, these basic capabilities are available free-of-charge. For more information, check out this overview video:
v22.2 will extend Web API Service capabilities for active DevExpress Universal Subscribers only (in other words, the following features will not be free):
Log database history changes using service endpoints (aka Audit Trail). With the api/MediaFiles/DownloadStream endpoint, you can download data from FileData, MediaDataObject, Image or byte array properties declared in your data models. Of course, this endpoint respects your security permissions.
Download PDF from report templates and filtered data in databases using service endpoints (aka Reports). With the api/Reports/DownloadPDF endpoint, you can download data from the ReportDatav2 containers stored in your database. Each ReportDatav2 links to an XtraReport, and report data sources and data models that you designed in Visual Studio. You can pass a report container identifier, data source criteria, and other parameters just like you do with the SetupBeforePrint method in code. Of course, this endpoint respects your security permissions.
Download BLOB data stored in databases using service endpoints (aka File Attachments). No data changes made via your ORM in Web API endpoints will be unnoticed. You can view this log history in your RDBMS or XAF's administrative UI for WinForms, Blazor, or ASP.NET WebForms.
- If you are an active Universal subscriber (or planning to become one) and want to check the state of input data in our Web API Service (with 10+ of built-in and unlimited custom validation rules), please contact us via the DevExpress Support Center. We will share our implementation considerations and even working samples for the current version. In other words, it is already possible to validate data using our Web API Service - we simply want to finalize this for production using your feedback.
ASP.NET Core Blazor UI
Enhanced Accordion & Tree-like Navigation
v22.1 ships with a new DevExpress Blazor Accordion component. XAF v22.2 we will integrate this component and support common control options (images, view variants, open items in separate browser tabs, etc). The final design will change a bit, but the following image should give you a sense of our implementation.
Inline Row Editing in the DxGridListEditor
We expect to enable inline row editing in our v22.2 release cycle (described here: Blazor Grid — Inline Row Editing (v22.1). We don’t think it makes much sense to support the edit form (popup or inplace) since it is not much different from XAF's built-in Detail View. Please share your project requirements if grid edit forms are a preferred data editing mechanism for your enterprise (you can submit your feedback via the DevExpress Support Center).
Split View like Outlook (aka MasterDetailMode = ListViewAndDetailView)
This feature is available in XAF’s WinForms & WebForms UI. The ListView displays a DetailView for a focused record alongside the same window (called "Compact View" in Microsoft Outlook). XAF’s implementation will be driven by the release of the DevExpress Blazor Grid focused row option (expected in our v22.2 release cycle).
Other Blazor Component Enhancements
Some of you may be asking - will XAF benefit from other enhancements expected in the DevExpress Blazor Grid (v22.2)? XAFers will get most of these features automatically (for instance, New Render & Size Mode Support), because XAF uses the same underlying Blazor components. Certain features will require us to write integration code:
- Grid Export to Excel: we will extend our ExportController that includes Export To... Actions in List Views.
- Form Layout OnDemand mode (lazy tab loading): we will have to customize XAF's Blazor Layout Manager to load the content of View layout tabs when a user selects them.
Chances are high that we will finish integration and testing of these features in v22.2 as many of them where prioritized based on XAF customer feedback
Cross-Platform Enhancements
Entity Framework Core 6 for Data Access in WinForms, Blazor & Web API Services
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 Core 7 in 2022 unless strong reasons exist to do so (because this is NOT an LTS release).
New Pre-Built Code & Project Error Diagnostics
We enabled XAF/XPO error diagnostics (shipped as part of the DevExpress.ExpressApp.CodeAnalysis NuGet package) using the Project Converter (requires an upgrade to v22.1.5+). We hope this will save you time in Visual Studio or validate your build quality using your CI/CD workflows. We also want to extend our default diagnostic set with the following:
- Internal ShowViewStrategy.ShowView calls instead of the recommended ShowViewInPopupWindow, ShowMessage, or using Actions;
- UI platform-dependent references in cross-platform projects or UI platform-dependent reference mixing (for instance, WinForms in ASP.NET projects);
- Detect redundant NonPersistentAttribute for readonly properties (non-public or missing setters), ExplicitLoadingAttribute for XPCollection properties, or IObjectSpaceLink in XPO classes (because there is already the Session property);
- Incorrect XAF Controller instantiation like 'new DialogController()';
- Missing default/display properties for business classes;
- Missing change notifications inside XPO/EF data model properties (SetPropertyValue, OnChanged or INotifyPropertyChanged).
Your Feedback Matters
Thanks,
Dennis
Principal Product Manager
dennis@devexpress.com