<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://community.devexpress.com/utility/FeedStylesheets/rss.xsl" media="screen"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dx="https://www.devexpress.com/">
    <channel>
        <title>XAF Team Blog</title>
        <link>https://community.devexpress.com/blogs/xaf/default.aspx</link>
        <description>Low-Code .NET Application Development for Desktop and the Web. When time to market matters, XAF delivers. XAF is an ORM-based .NET Application Framework designed to help you deliver line-of-business apps in the shortest possible time (low-code, RAD). XAF seamlessly integrates award-winning DevExpress UI controls and ORM libraries (Entity Framework or XPO) so you can create feature-rich and highly interactive WinForms and ASP.NET (Blazor or Web Forms) apps with ease.</description>
        <dc:language>en</dc:language>
        <generator>CommunityServer 2007.1 SP1 (Debug Build: 30415.43)</generator>
        <item>
            <title>XAF (Cross-Platform .NET App UI &amp; Web API Service) — June 2025 Roadmap (v25.1)</title>
            <link>https://community.devexpress.com/blogs/xaf/archive/2025/02/17/xaf-v25-1-june-2025-roadmap-cross-platform-net-app-ui-and-web-api-service.aspx</link>
            <pubDate>Mon, 17 Feb 2025 09:31:00 GMT</pubDate>
            <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388221</guid>
            <dc:creator>Dennis Garavsky (DevExpress)</dc:creator>
            <slash:comments>0</slash:comments>
            <description>&lt;p&gt;Thank you for choosing &lt;a href="https://www.devexpress.com/products/net/application_framework/"&gt;XAF (Cross-Platform .NET App UI &amp;amp; Web API Service)&lt;/a&gt; for your software development needs. This blog post outlines some of our XAF-related development plans for the first half of 2025 (v25.1, set for release in June 2025). &lt;/p&gt;
&lt;p&gt;First, if you have not heard of XAF or are new to the DevExpress product line, XAF is a developer-centric .NET application framework designed to build feature-complete Office-inspired line-of-business apps (leveraging DevExpress Blazor and WinForms UI components via Entity Framework or XPO ORM). Feel free to &lt;a href="https://www.devexpress.com/support/demos/#xaf"&gt;review our XAF demos&lt;/a&gt; and &lt;a href="https://www.devexpress.com/products/net/application_framework/xaf-considerations-for-newcomers.xml"&gt;compare our implementation with other software&lt;/a&gt; development methodologies.&lt;/p&gt;
&lt;div class="Note"&gt;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.&lt;/div&gt;&lt;p&gt; &lt;/p&gt;
&lt;h2 id="blazor-ui-enhancements"&gt;Blazor UI Enhancements&lt;/h2&gt;
&lt;h3 id="fluent-theme-and-ribbon-ui-support"&gt;Fluent Theme and Ribbon UI Support&lt;/h3&gt;
&lt;p&gt;&lt;span&gt;Just over a year ago, Microsoft released a&amp;nbsp;&lt;/span&gt;&lt;a href="https://support.microsoft.com/en-us/office/getting-started-with-the-new-outlook-for-windows-656bb8d9-5a60-49b2-a98b-ba7822bc7627" target="_blank"&gt;new Outlook for Windows&lt;/a&gt;&lt;span&gt;&amp;nbsp;with a modern and simplified design. This updated version of Outlook offers a streamlined, web–integrated experience that aligns with Microsoft&amp;#39;s Fluent 2 design standards.&amp;nbsp;&lt;/span&gt;Many of our customers have expressed interest in replicating this contemporary UI within their own DevExpress-powered desktop and web applications. If you&amp;#39;ve used the new version of Outlook, you know that Microsoft&amp;#39;s new user experience extends far beyond simple UI enhancements:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;The app&amp;#39;s sidebar extends up to the form title, optimizing vertical space to display more menu items on–screen.&lt;/li&gt;&lt;li&gt;The sidebar can be &amp;#39;collapsed&amp;#39; using the Ribbon&amp;#39;s hamburger button, allowing for a more compact layout.&lt;/li&gt;&lt;li&gt;The Ribbon control and form title can host additional UI elements, including buttons, a search panel, and other interactive UI components.&lt;/li&gt;&lt;li&gt;Fluent UI enhancements include semi–transparent effects, colorful flat icons, rounded corners, specious paddings, and more.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We expect to support Fluent and Ribbon UI in XAF Blazor-powered apps at the end of 2025. This involves, but is not limited to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dark and light &lt;a href="https://www.devexpress.com/subscriptions/whats-new/#blazor-new-fluent-theme-ctp"&gt;Fluent theme support&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Creating hundreds of XAF-specific icons (filled or outlined) to match the Fluent theme.&lt;/li&gt;
&lt;li&gt;Modifying menu and layout structures (to mimic modern Office-inspired web apps). &lt;/li&gt;
&lt;/ul&gt;

&lt;div class="Note"&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: Since both DevExpress Blazor Ribbon and Fluent UI are currently available as a Community Technology Preview (for instance, the ribbon control has no Classic or multi-line view), we do not expect complete support in XAF Blazor v25.1 (likely in v25.2). Fluent UI support for XAF WinForms should be officially available in v25.2 as well (once support is added to corresponding DevExpress WinForms UI components).&lt;/div&gt;
&lt;h3 id="accessibility-enhancements"&gt;Accessibility Enhancements&lt;/h3&gt;
&lt;p&gt;As part of our ongoing &lt;a href="https://docs.devexpress.com/eXpressAppFramework/404762/accessibility"&gt;Accessibility (A11Y) investments&lt;/a&gt; for both XAF and DevExpress UI components, XAF Blazor v25.1 will support keyboard shortcuts for menu commands or Actions. XAF developers will be able to specify appropriate keystroke combinations in the Model Editor or in code (similar to XAF WinForms with its ActionBase.Shortcut API). &lt;/p&gt;&lt;p&gt;In addition to A11Y benefits, this will also accelerate CRUD operations for many end-users (for example, to save changes, create, or delete records).&lt;/p&gt;
&lt;h3 id="grid-list-editor-enhancements"&gt;Grid List Editor Enhancements&lt;/h3&gt;
&lt;p&gt;XAF Blazor v25.1 will support the following (for DxGridListEditor):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/113695/ui-construction/views/layout/list-view-bands-layout"&gt;Banded layout&lt;/a&gt; (much like in XAF WinForms).&lt;/li&gt;
&lt;li&gt;Double-click instead of a single-click to open a detail form from a ListView (much like in WinForms).&lt;/li&gt;
&lt;li&gt;Easier context menu customization for both grid rows and column headers.&lt;/li&gt;
&lt;li&gt;New &amp;quot;Best Fit&amp;quot; and &amp;quot;Clear Sorting&amp;quot; context menu commands for grid column headers.&lt;/li&gt;
&lt;li&gt;Virtual/infinite scrolling in all root and nested ListViews instead of a pager (much like in XAF WinForms).&lt;/li&gt;&lt;li&gt;The new IModelSplitLayout.RelativePosition property to specify&amp;nbsp;the splitter position relative to the DetailView in percentage (when MasterDetailMode = ListViewAndDetailView). RelativePosition takes priority over the IModelSplitLayout.SplitterPosition property (in pixels).&lt;/li&gt;
&lt;li&gt;Simplified API to access column settings for Grid List Editors across all XAF UI platforms. For example, you will be able to write platform-agnostic code (see below) or access platform-specific settings via ColumnWrapper descendants:&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class="lang-csharp"&gt;&lt;span class="hljs-function"&gt;&lt;span class="hljs-keyword"&gt;protected&lt;/span&gt; &lt;span class="hljs-keyword"&gt;override&lt;/span&gt; &lt;span class="hljs-keyword"&gt;void&lt;/span&gt; &lt;span class="hljs-title"&gt;OnViewControlsCreated&lt;/span&gt;(&lt;span class="hljs-params"&gt;&lt;/span&gt;) &lt;/span&gt;{
    &lt;span class="hljs-keyword"&gt;base&lt;/span&gt;.OnViewControlsCreated();
    &lt;span class="hljs-keyword"&gt;if&lt;/span&gt; (View.Editor &lt;span class="hljs-keyword"&gt;is&lt;/span&gt; ColumnsListEditor listEditor) {
        &lt;span class="hljs-keyword"&gt;foreach&lt;/span&gt; (&lt;span class="hljs-keyword"&gt;var&lt;/span&gt; column &lt;span class="hljs-keyword"&gt;in&lt;/span&gt; listEditor.Columns) {
            column.ShowInCustomizationForm = &lt;span class="hljs-literal"&gt;false&lt;/span&gt;;
        }
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id="simplified-chart-html-editor-and-pdf-viewer-integration"&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(75).png" alt="" style="width:3840px;height:1822px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;&lt;/h3&gt;
&lt;h3 id="tooltip-enhancements"&gt;ToolTip Attribute Enhancements&lt;/h3&gt;&lt;p&gt;XAF Blazor v25.1 will support the following UI elements for the&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/DevExpress.Persistent.Base.ToolTipAttribute" target="_blank"&gt;ToolTip attribute&lt;/a&gt;&amp;nbsp;(and the&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/DevExpress.ExpressApp.Model.IModelToolTip.ToolTip"&gt;IModelToolTip.ToolTip&lt;/a&gt;&amp;nbsp;property in the Application Model):&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Navigation groups and items&lt;/li&gt;&lt;li&gt;DxGridListEditor and DxTreeListEditor column headers&lt;/li&gt;&lt;li&gt;Layout group headers&lt;/li&gt;&lt;/ul&gt;&lt;h3 id="simplified-chart-html-editor-and-pdf-viewer-integration"&gt;Simplified Chart, HTML Editor, and PDF Viewer Integration&lt;/h3&gt;
&lt;p&gt;With v25.1, we expect to reduce the amount of code needed to integrate popular UI elements such as Charts, HTML Editor, and PDF Viewer (you can check the current code required &lt;a href="https://github.com/DevExpress-Examples/xaf-create-multitenant-application/tree/24.2.1%2B/CS/OutlookInspired.Blazor.Server/Editors"&gt;in our Outlook-Inspired Demo&lt;/a&gt;). We do expect to build XAF WinForms/WebForms module counterparts, because these DevExpress Blazor components are totally different, so it will not be possible to reuse cross-platform features such as common layout XML settings and other code sharing techniques.&lt;/p&gt;
&lt;p&gt;For example, we want to ship a new Chart Property Editor, which will take a Razor file as input (with required graph layout and series settings). XAF Blazor will bind the underlying control to current View data automatically. For PDF Viewer and HTML Editor, we hope to implement seamless/codeless integrations, much like our Rich Text Property Editor (which can be bound to a string or byte array property).&lt;/p&gt;
&lt;h2 id="ef-core-enhancements"&gt;EF Core Enhancements&lt;/h2&gt;
&lt;h3 id="concurrency-control-for-ef-core"&gt;Concurrency Control for EF Core&lt;/h3&gt;
&lt;p&gt;XAF WinForms/Blazor EFCore-based apps will support Optimistic Concurrency control (&lt;a href="https://docs.devexpress.com/eXpressAppFramework/113596/business-model-design-orm/business-model-design-with-xpo/optimistic-concurrency-control"&gt;similar to existing XPO ORM functionality&lt;/a&gt;). It will support both object-level and field-level locking, as well as advanced collision resolution and data merging. &lt;/p&gt;
&lt;p&gt;No breaking changes are expected for existing EF Core projects when using the DevExpress Project Converter (to handle all the database changes automatically). See Also: &lt;a href="https://devexpress.com/kb=T1273764"&gt;T1273764 - Core - Database and data model code changes for XAF EF Core apps to support the Optimistic Locking&lt;/a&gt;&lt;/p&gt;
&lt;img src="https://community.devexpress.com:443/blogs/xaf/2025/upload_33236bb657203c9fbd48d0b612893637.png" alt="" style="width:2322px;height:1646px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;
&lt;h3 id="clone-object-module-for-ef-core"&gt;Clone Object Module for EF Core&lt;/h3&gt;
&lt;p&gt;XAF WinForms/Blazor EFCore-based apps will support the Clone command (to quickly copy data records, including aggregated detail collections. We unified cloning functionality and APIs for both ORMs, so XAF developers can use a single DevExpress.ExpressApp.CloneObject package. &lt;/p&gt;
&lt;p&gt;No breaking changes are expected for existing XPO-based projects when using the DevExpress Project Converter (to handle all naming-related changes automatically). See Also: &lt;a href="https://devexpress.com/kb=T1276850"&gt;T1276850 - Core - The DevExpress.ExpressApp.CloneObject.Xpo assembly and NuGet package have been renamed&lt;/a&gt;.&lt;/p&gt;
&lt;img src="https://community.devexpress.com:443/blogs/xaf/2025/upload_ec188f392e8463b17921c0729c30a161.png" alt="" style="width:2014px;height:1220px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;
&lt;h3 id="easier-database-updates-for-ef-core"&gt;Easier Database Updates for EF Core&lt;/h3&gt;
&lt;p&gt;v25.1 will simplify database updates for EF Core developers (targeting XAF WinForms/Blazor or Web API Service-based apps). For instance, when you add a new business class or a property at design time, XAF will automatically apply EF Core migrations to the database in Debug mode (&lt;a href="https://docs.devexpress.com/XPO/2632/create-a-data-model/when-and-why-xpo-extends-the-database-schema?p=net8#important-notes"&gt;similar to XPO ORM functionality&lt;/a&gt;). This will save development time because no extra methods will be necessary, especially for frequent data model changes.&lt;/p&gt;
&lt;p&gt;We will also get rid of the redundant DBUpdater tool for EF Core-based apps. EF Core developers will use &lt;a href="https://docs.devexpress.com/eXpressAppFramework/113239/deployment/production-database-and-application-updates#update-a-database"&gt;the updateDatabase CLI command&lt;/a&gt; of the underlying application instead. This will simplify the developer experience for both deployment and maintenance because a single method will be used.&lt;/p&gt;
&lt;h3 id="simplified-connection-settings-for-ef-core"&gt;Simplified Connection Settings for EF Core&lt;/h3&gt;
&lt;p&gt;The &lt;a href="https://marketplace.visualstudio.com/items?itemName=DevExpress.devexpress-template-kit-for-visual-studio"&gt;Template Kit&lt;/a&gt; will include popular connection options like PostgreSQL, SQL Azure, MySQL, Oracle, and SQLite (instead of just Microsoft SQL Server previously). Once selected, the new XAF project will automatically include all required NuGet packages and database-specific API calls like &lt;code&gt;UseNpgsql&lt;/code&gt; for the option.&lt;/p&gt;
&lt;p&gt;This will simplify the first-time experience because XAF developers will no longer need to &lt;a href="https://docs.devexpress.com/eXpressAppFramework/404290/business-model-design-orm/business-model-design-with-entity-framework-core/connect-to-different-database-providers"&gt;follow manual steps&lt;/a&gt; or know all specificities related to EF Core providers.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://community.devexpress.com/blogs/xaf/2025/upload_1312ce4b1b21f3228930ff896eb1dc5d.png" alt="" /&gt;&lt;/p&gt;
&lt;h3 id="easier-connection-to-middle-tier-server-in-non-xaf-apps-for-ef-core"&gt;Easier Connection to Middle-Tier Server in Non-XAF Apps for EF Core&lt;/h3&gt;
&lt;p&gt;In v25.1, we will simplify boilerplate code required to &lt;a href="https://docs.devexpress.com/WindowsForms/405147/data-access-security/connect-to-a-secure-middle-tier-api-server"&gt;connect to a secure Middle Tier API server&lt;/a&gt; in non XAF-powered WinForms/WPF apps (via XAF&amp;#39;s Security System and EF Core).&lt;/p&gt;
&lt;p&gt;In a Middle Tier server architecture, DbContext and other EF Core CRUD APIs are still used in UI client app code (which interacts with the server remotely). Only the server has direct access to the database. Before passing data to the client’s DbContext, the server enforces security measures such as authentication, authorization, and data validation.
&lt;img src="https://community.devexpress.com/blogs/xaf/2025/upload_9b53bea9faa547e257b19e83e6228a47.png" alt="" /&gt;&lt;/p&gt;
&lt;h3 id="enhanced-filtering-by-non-persistent-fields-for-ef-core"&gt;Enhanced Filtering by Non-Persistent Fields for EF Core&lt;/h3&gt;
&lt;p&gt;FilterController (and other XAF APIs working with server-side criteria) will better process non-persistent business class properties in Client data access mode. Once non-persistent properties are detected in ListView criteria, we will fully process it on the client side.&lt;/p&gt;
&lt;h2 id="cross-platform-enhancements"&gt;Cross-Platform Enhancements&lt;/h2&gt;
&lt;h3 id="outlook-inspired-demo-in-the-installation"&gt;Outlook-Inspired Demo in the Installation&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://github.com/DevExpress-Examples/xaf-create-multitenant-application/"&gt;XAF&amp;#39;s Outlook-Inspired Demo&lt;/a&gt; will make its way to our Unified Component Installer in our v25.1 release cycle. We will also implement additional functionality in this demo, including aforementioned EF Core enhancements and new built-in XAF Property/List Editors.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://community.devexpress.com/blogs/xaf/2025/upload_2608693fb889f3b980a7ad0e61edd307.png" alt="" /&gt;&lt;/p&gt;
&lt;h3 id="new-built-in-property-editors-tagbox-checked-combobox-progress-bar"&gt;Built-in Property Editors: TagBox, Checked ComboBox, Progress Bar&lt;/h3&gt;
&lt;p&gt;XAF Blazor/WinForms v25.1 will include built-in Property Editors based on these components. They will support CRUD, Security System, common Application Model options (AllowEdit, AllowClear, etc.), DataSourceXXX attributes for filtering, ImmediatePostData, and more standard XAF features.&lt;/p&gt;
&lt;p&gt;For example, TagBox and Checked ComboBox are two popular options to save space in detail forms for collection data (as an alternative to large data grids). Progress Bar in both list and detail forms can be used as an alternative to standard Integer Property Editors with additional validation rules.&lt;/p&gt;&lt;p&gt;XAF Blazor/WinForms v25.1 will also support &lt;a href="https://docs.devexpress.com/eXpressAppFramework/112701/business-model-design-orm/data-annotations-in-data-model" target="_blank"&gt;the&amp;nbsp;DataSourceXXX attributes&lt;/a&gt; for our Enumeration Property Editors. For example, you can filter your enumeration values with the&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/DevExpress.Persistent.Base.DataSourceCriteriaPropertyAttribute" target="_blank"&gt;DataSourceCriteria&lt;/a&gt;&amp;nbsp;attribute and the following criteria: &amp;quot;Status != 0 and Status &amp;gt; 2&amp;quot;,&amp;nbsp;&amp;quot;Status In (0,1,2)&amp;quot;,&amp;nbsp;&amp;quot;Status != &amp;#39;@This.OtherSelectedStatus&amp;#39;&amp;quot;, etc.&lt;/p&gt;
&lt;h2 id="project-template-enhancements"&gt;Project Template Enhancements&lt;/h2&gt;
&lt;h3 id="xaf-blazor-middle-tier-security"&gt;XAF Blazor + Middle Tier Security&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://marketplace.visualstudio.com/items?itemName=DevExpress.devexpress-template-kit-for-visual-studio"&gt;Template Kit&lt;/a&gt; v25.1 will include a new project template where XAF Blazor is connected to the &lt;a href="https://docs.devexpress.com/eXpressAppFramework/404389/data-security-and-safety/security-system/security-tiers/middle-tier-security-ef-core"&gt;Middle Tier Security application server&lt;/a&gt;. Much like XAF WinForms, this configuration will help XAF developers deliver more secure solutions, because the web server will not have direct access to the application database. &lt;/p&gt;&lt;p&gt;This is important for certain customers where hosting the application database on the same machine with the web server (where an XAF Blazor app is running) is a no-go due to strict security requirements.&lt;/p&gt;
&lt;h3 id="xaf-blazor-electron-net-for-windows-and-macos-linux-desktop"&gt;XAF Blazor + Electron.NET for Windows and macOS/Linux Desktop&lt;/h3&gt;
&lt;p&gt;The &lt;a href="https://marketplace.visualstudio.com/items?itemName=DevExpress.devexpress-template-kit-for-visual-studio"&gt;Template Kit&lt;/a&gt; will also include a new “hybrid” desktop app for Windows and macOS/Linux (powered by Electron.NET and XAF Blazor). An XAF Blazor app is wrapped inside a native “web view” container for the target OS and connected to our Middle Tier application server (or database directly, if allowed). When used, XAF developers can address both Windows and non-Windows support where WinForms and browser-based apps do not meet client needs.&lt;/p&gt;
&lt;p&gt;For end-users, this hybrid desktop app will feel and behave (performance-wise) no differently than Microsoft Teams, Visual Studio Code, Outlook (new), and similar hybrid apps. Let me quote &lt;a href="https://devexpress.com/kb=T1102932#781e7ba2-b038-4b83-943f-bd7c56e12216"&gt;one of our customers&lt;/a&gt; who successfully used this approach:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I use XAF Blazor to have a desktop application for macOS indeed. It is an administrative application for one-person businesses. Because this application contains normally sensitive data, I don&amp;#39;t want to host this data on servers where I am responsible for. So a good choice seems to run the application on a desktop. &lt;strong&gt;macOS users are growing in our country, so the Electron solution seems a good choice&lt;/strong&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id="xaf-blazor-and-web-api-service-antiforgery"&gt;XAF Blazor and Web API Service + AntiForgery&lt;/h3&gt;
&lt;p&gt;XAF project template code (Startup.cs) will include &lt;a href="https://learn.microsoft.com/en-us/aspnet/core/blazor/security/?view=aspnetcore-9.0&amp;amp;tabs=visual-studio#antiforgery-support"&gt;Antiforgery services and middleware&lt;/a&gt; to mitigate potential Cross-Site Request Forgery (CSRF/XSRF) attacks. This will reduce implementation costs (when compared with manual implementation).&lt;/p&gt;
&lt;h2 id="multi-tenancy-enhancements"&gt;Multi-Tenancy Enhancements&lt;/h2&gt;
&lt;p&gt;With XAF v25.1, &lt;a href="https://docs.devexpress.com/eXpressAppFramework/404436/multitenancy"&gt;our Multi-Tenancy module&lt;/a&gt; will allow you to store custom data in a shared/hosted database (for both EF Core and XPO ORM). This will be helpful when storing currency, tax, and other global application settings. For XAF developers, it should dramatically simplify code because it will no longer be necessary to set up &lt;a href="https://docs.devexpress.com/eXpressAppFramework/404322/business-model-design-orm/business-model-design-with-entity-framework-core/how-to-connect-data-models-to-different-databases"&gt;a separate Object Space Provider&lt;/a&gt; for the shared database manually.&lt;/p&gt;
&lt;p&gt;Tenants will be able to read these shared data tables, but will be unable to modify data in them (or have associations with tenant data) - only service/host UI administrators will have full CRUD capabilities. XAF developers will also have access to standard and transparent IObjectSpace APIs to query shared data (including methods like CreateObjectSpace/CreateNonSecuredObjectSpace&amp;lt;T&amp;gt;(“YourTenantName“)).&lt;/p&gt;
&lt;h2 id="web-api-service-enhancements"&gt;Web API Service Enhancements&lt;/h2&gt;
&lt;p&gt;Our &lt;a href="https://docs.devexpress.com/eXpressAppFramework/403394/backend-web-api-service"&gt;Backend Web API Service&lt;/a&gt; will introduce the following highly-requested usability features:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;OData &amp;quot;&lt;a href="http://docs.oasis-open.org/odata/odata/v4.01/odata-v4.01-part1-protocol.html#sec_CreateRelatedEntitiesWhenCreatinganE"&gt;Deep Insert&lt;/a&gt;&amp;quot; for XPO/EF Core and &amp;quot;Deep Update&amp;quot; for EF Core;&lt;/li&gt;&lt;li&gt;Concurrency Control for both EF Core and XPO ORM (currently &amp;quot;last wins&amp;quot;);&lt;/li&gt;&lt;li&gt;OData &lt;a href="https://learn.microsoft.com/en-us/odata/client/batch-operations"&gt;Batch Operations&lt;/a&gt; (aka &amp;quot;Batch Update&amp;quot; support).&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;Your Feedback Matters&lt;/h2&gt;&lt;p&gt;Just another reminder that our Roadmap v25.1 (below), &lt;a href="https://www.devexpress.com/subscriptions/whats-new/#xaf-survey" target="_blank"&gt;What&amp;#39;s New v24.2 (vote)&lt;/a&gt;, and other surveys give you the opportunity to communicate your needs/concerns and allow us to make more informed development decisions.&lt;/p&gt;&lt;div data-survey-id="fc5f2cf4-66da-4b57-9ae0-b0160f0ea199" data-survey-auth-required="false"&gt;&lt;/div&gt;&lt;img src="https://community.devexpress.com/aggbug.aspx?PostID=388221" width="1" height="1"&gt;</description>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/XAF/default.aspx">XAF</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/XPO/default.aspx">XPO</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Usability/default.aspx">Usability</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/security/default.aspx">security</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Entity+Framework/default.aspx">Entity Framework</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/OData/default.aspx">OData</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/EF/default.aspx">EF</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/restful/default.aspx">restful</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/roadmap/default.aspx">roadmap</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/asp.net+Core/default.aspx">asp.net Core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/survey/default.aspx">survey</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.net+core/default.aspx">.net core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/blazor/default.aspx">blazor</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/EF+Core/default.aspx">EF Core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.net+6/default.aspx">.net 6</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/web+api/default.aspx">web api</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/REST/default.aspx">REST</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/OpenAPI/default.aspx">OpenAPI</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Swagger/default.aspx">Swagger</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.NET/default.aspx">.NET</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Non-Windows/default.aspx">Non-Windows</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/accessibility/default.aspx">accessibility</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Fluent/default.aspx">Fluent</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/v25.1/default.aspx">v25.1</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/2025/default.aspx">2025</category>
        </item>
        <item>
            <title>XAF v24.2 EAP — Passwordless Sign-ins and MFA, Calculated Fields and Soft Deletion in EF Core, Tabbed MDI and Performance Enhancements in Blazor</title>
            <link>https://community.devexpress.com/blogs/xaf/archive/2024/10/02/xaf-v24-2-eap-passwordless-signins-and-mfa-calculated-fields-and-soft-deletion-in-ef-core-tabbed-mdi-and-performance-enhancements-in-blazor.aspx</link>
            <pubDate>Wed, 02 Oct 2024 15:03:00 GMT</pubDate>
            <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388201</guid>
            <dc:creator>Dennis Garavsky (DevExpress)</dc:creator>
            <slash:comments>0</slash:comments>
            <description>
&lt;p&gt;This post documents&amp;nbsp;&lt;strong&gt;a few&lt;/strong&gt;&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank"&gt;XAF&lt;/a&gt;-related&amp;nbsp;features we expect to ship in early December and details what’s inside our Early Access Preview build (&lt;strong&gt;for additional information on what you can expect in December, please refer to&amp;nbsp;&lt;a href="https://www.devexpress.com/go/XAF_Roadmap.aspx" target="_blank"&gt;our Year-End v2024.2 roadmap&lt;/a&gt;&lt;/strong&gt;). As you will note below, XAF-related focus areas remain Blazor, Entity Framework&amp;nbsp;Core and Security.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;If you own an active&amp;nbsp;&lt;a href="https://www.devexpress.com/subscriptions/universal.xml" target="_blank"&gt;Universal Subscription&lt;/a&gt;, feel free to download this Early Access Preview (EAP) build at your convenience. If you own an active&amp;nbsp;&lt;a href="https://www.devexpress.com/subscriptions/dxperience.xml" target="_blank"&gt;DXperience Subscription&lt;/a&gt;&amp;nbsp;and would like to learn more about our&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank"&gt;Cross-Platform .NET App UI (XAF)&lt;/a&gt;&amp;nbsp;or&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/security-web-api-service.xml" target="_blank"&gt;Web API Service&lt;/a&gt;, you can explore the features described herein by logging onto the DevExpress&amp;nbsp;&lt;a href="https://www.devexpress.com/ClientCenter/DownloadManager/" target="_blank"&gt;Download Manager&lt;/a&gt;&amp;nbsp;and installing this EAP build in trial mode. Once you do, please tell us whether these new features address your business needs. Your feedback will help us fine-tune our implementation before official launch.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(67).png" alt="" /&gt;&lt;/p&gt;


If you are using a trial and want to try these preview&amp;nbsp;features today, you can purchase a&amp;nbsp;&lt;a href="https://devexpress.com/buy"&gt;DevExpress Universal license online&lt;/a&gt;&amp;nbsp;(this will give you access to the early access preview build). If you own a non-Universal subscription and are ready to upgrade, email us at&amp;nbsp;&lt;a href="mailto:clientservices@devexpress.com"&gt;clientservices@devexpress.com&lt;/a&gt;&amp;nbsp;for upgrade pricing.



&lt;h2&gt;.NET Core / .NET Enhancements&lt;/h2&gt;


&lt;h3&gt;.NET 8, .NET Framework 4.6.2, Visual Studio 2019 are minimally supported versions for DevExpress libraries moving forward&lt;/h3&gt;


&lt;p&gt;Learn more about this global (v24.2+) change in the following &lt;a href="https://community.devexpress.com/blogs/news/archive/2024/07/08/net-net-8-and-net-framework-4-6-2-are-minimally-supported-target-frameworks-for-devexpress-libraries-in-v24-2.aspx" target="_blank" rel="noreferrer noopener"&gt;announcement&lt;/a&gt;.&lt;/p&gt;


&lt;p&gt;To simplify the migration process, the DevExpress Project Converter will attempt to re-target your XAF projects to .NET 8 automatically. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/XAFConverter.png" alt="" /&gt;&lt;br /&gt;&lt;/p&gt;


&lt;p&gt;We will also try to update 3rd party packages to the latest compatible versions, where possible (for example, System.Text.Json, Microsoft.AspNetCore.*, Microsoft.EntityFrameworkCore.*, etc.) - almost 200 known dependencies in our Directory.Packages.props file. &lt;/p&gt;


&lt;p&gt;This automation should save hours of manual effort especially for those XAF customers with large .NET Framework or .NET solutions. Of course, if your team already uses props files and &lt;a href="https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-management" target="_blank" rel="noreferrer noopener"&gt;Central Package Management (CPM)&lt;/a&gt;, then you can skip our Project Converter and update everything manually.&amp;nbsp;&lt;/p&gt;


&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(68).png" alt="" /&gt;&amp;nbsp;&lt;/p&gt;

&lt;h3&gt;Easier Upgrade to .NET from .NET Framework&lt;/h3&gt;
&lt;p&gt;Our Project Converter can now convert DevExpress assembly references in your solution or specific projects to corresponding DevExpress NuGet packages. By selecting the &amp;quot;Convert DevExpress assembly references to NuGet packages&amp;quot; option under Advanced settings, you can easily transition to NuGet-based project management.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://community.devexpress.com/blogs/winforms/eap-24-2/devexpress-project-converter.png" alt="DevExpress Project Converter v24.2" /&gt;&lt;/p&gt;
&lt;p&gt;To streamline the upgrade process, our Project Converter automatically creates backup (.bak) files for your CSPROJ and VBPROJ files. Once DevExpress assemblies are converted, complete the upgrade process by using the&amp;nbsp;&lt;a href="https://learn.microsoft.com/en-us/dotnet/core/porting/upgrade-assistant-overview" target="_blank"&gt;Microsoft .NET Upgrade Assistant&lt;/a&gt;&amp;nbsp;(to migrate your application to the most recent version of .NET).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Documentation&lt;/strong&gt;: &lt;a href="https://docs.devexpress.com/WindowsForms/405091/net-net-core-support/migrate-net-framework-app-to-net?v=24.2"&gt;Migrate a .NET Framework App to .NET&lt;/a&gt; | &lt;a href="https://docs.devexpress.com/GeneralInformation/116042/nuget/obtain-your-nuget-feed-credentials"&gt;Choose Suitable NuGet Feed&lt;/a&gt; | &lt;a href="https://docs.devexpress.com/GeneralInformation/116698/nuget/setup-visual-studios-nuget-package-manager?v=24.2" target="_blank"&gt;Install NuGet Packages in IDE&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3&gt;.NET 9 Support&lt;/h3&gt;
&lt;p&gt;XAF UI and Web API Service will fully support&amp;nbsp;&lt;a href="https://devblogs.microsoft.com/dotnet/dotnet-9-release-candidate-1-is-now-available/" target="_blank"&gt;NET 9&lt;/a&gt;&amp;nbsp;in November (v24.2.2+).&amp;nbsp;If you are already using .NET 9 RC1, replace 8.0.0 with 9.0.0 in the Model Editor config file (C:\Program Files\DevExpress 24.2\Components\Tools\eXpressAppFrameworkNetCore\Model Editor\DevExpress.ExpressApp.Design.ModelEditorServer.NetCore.v24.2.runtimeconfig.json): See&amp;nbsp;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1200937#workaround" target="_blank"&gt;T1200937 - Core - Model Editor does not work with .NET 8 projects&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;Cross-Platform Enhancements&lt;/h2&gt;


&lt;h3&gt;Security Enhancements: Passkeys and MFA Support with Microsoft Entra ID, Google and Other Authentication Providers&lt;/h3&gt;

&lt;p&gt;As you may already know, both XAF UI (Blazor and WinForms) and our Web API Service offer a &amp;quot;1-click&amp;quot; solution to incorporate modern OAuth2 authentication providers with native Single Sign-On (SSO) (such as&amp;nbsp;&lt;a href="https://www.microsoft.com/en-us/security/business/identity-access/microsoft-entra-single-sign-on" target="_blank"&gt;Microsoft Entra SSO&lt;/a&gt;), Multi-Factor Authentication (MFA), and other security features. This works for both EF Core and XPO ORM. For additional information in this regard, refer to&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/402197/data-security-and-safety/security-system/authentication/oauth-and-custom-authentication/active-directory-and-oauth2-authentication-providers-in-blazor-applications"&gt;Active Directory and OAuth2 Authentication Providers in ASP.NET Core Blazor Applications&lt;/a&gt;&amp;nbsp;and related documents.&lt;/p&gt;&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(74).png" alt="" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Passkeys uses your device lock (such as your fingerprint, face, pin or pattern) to sign in to your Microsoft, Google or other authentication provider accounts. For example, Microsoft Authenticator can be used to sign in to any Microsoft Entra ID account without using a password. Microsoft Authenticator uses key-based authentication to enable user credentials tied to a device (where the device uses a PIN or biometrics). &lt;a href="https://learn.microsoft.com/en-us/windows/security/identity-protection/hello-for-business/hello-identity-verification"&gt;Windows Hello for Business&lt;/a&gt; uses a similar technology.&lt;/p&gt;&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/entraID.png" alt="" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;With v24.2, XAF UI (Blazor and WinForms) and our Web API Service will support all Passkey-related usage scenarios. This includes restoring a forgotten password, temporarily blocking access to accounts, account recovery, face recognition login, PIN, fingerprint, OTP, QR codes,&amp;nbsp;or various authenticator apps, using a Middle Tier Application Server or simpler configurations in WinForms, etc.&lt;/p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/fingerprint.jpg" alt="" /&gt;&lt;br /&gt;

&lt;h3&gt;EF Core Calculated Fields&lt;/h3&gt;


&lt;p&gt;We implemented a simpler solution for server-side calculated fields in EF Core.&amp;nbsp;&lt;span&gt;Note that you can sort, group, or filter List View data by calculated properties in Server and InstantFeedback modes.&lt;/span&gt; Use &lt;em&gt;DevExpress.ExpressApp.DC.CalculatedAttribute&lt;/em&gt; or &lt;em&gt;DevExpress.ExpressApp.DC.PersistentAliasAttribute&lt;/em&gt; to indicate whether a property&amp;#39;s value is calculated.&amp;nbsp;The following code snippet demonstrates how to create a class with a calculated property:&amp;nbsp;&lt;/p&gt;&lt;pre&gt;&lt;code class="language-csharp"&gt;using DevExpress.ExpressApp.DC;
public class Product : BaseObject {
 // ...
 public virtual decimal Quantity { get; set; }
 public virtual decimal Price { get; set; }
 
[PersistentAlias(&amp;quot;Quantity * Price&amp;quot;)]
 // or [Calculated(&amp;quot;Quantity * Price&amp;quot;)]
 public decimal TotalPrice {
     get {  return EvaluateAlias&amp;lt;decimal&amp;gt;();  }
 }
} &lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;EF Core Soft Deletion&lt;/h3&gt;
&lt;p&gt;v24.2 supports EF Core soft deletion&amp;nbsp;(aka &lt;a href="https://docs.devexpress.com/XPO/2026/crud/deleting-persistent-objects#deferred-object-deletion" target="_blank" rel="noreferrer noopener"&gt;XPO&amp;#39;s Deferred Deletion&lt;/a&gt;) for both XAF UI and Web API Service-powered apps. &lt;/p&gt;


&lt;p&gt;With soft or deferred object deletion, the ORM marks objects as deleted and does not physically remove them from the database immediately. This technique helps avoid database exceptions when deleting objects referenced by other entities.&amp;nbsp;&lt;/p&gt;


&lt;p&gt;We have also created an automatic converter for existing database tables (to add the new GCRecord column). For additional information in this regard, please review the following:&amp;nbsp;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1247762/core-database-and-data-model-code-changes-for-xaf-ef-core-apps-to-support-soft-deferred" target="_blank" rel="noreferrer noopener"&gt;Core - Database and data model code changes for XAF EF Core apps to support Soft/Deferred Deletion&lt;/a&gt;.&amp;nbsp;&amp;nbsp;&lt;/p&gt;

&lt;h3&gt;EF Core Filtering Capabilities Are Now on Par with XPO ORM&lt;/h3&gt;


&lt;p&gt;v24.2 introduces calculated properties for EF Core in XAF (see above). This change necessitated easy access to custom IsExactType and IsInstanceOfType functions regardless of the ORM used in an application.&amp;nbsp;&lt;/p&gt;


&lt;p&gt;To achieve parity, we moved custom IsExactType and IsInstanceOfType functions from the DevExpress.Xpo assembly to the DevExpress.Data assembly (see the following ticket for additional information: &lt;a href="https://supportcenter.devexpress.com/ticket/details/t1251791/xpo-the-isexacttype-and-isinstanceoftype-custom-functions-has-been-moved-to-the" target="_blank" rel="noreferrer noopener"&gt;XPO - The IsExactType and IsInstanceOfType custom functions has been moved to the DevExpress.Data assembly&lt;/a&gt;). &amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;br /&gt;The change allows this feature&amp;nbsp;to work in EF Core.&amp;nbsp;We would also like to mention that you can use the following features in EF Core projects: &lt;a href="https://docs.devexpress.com/XPO/2650/create-a-data-model/upcasting" target="_blank" rel="noreferrer noopener"&gt;Upcasting&lt;/a&gt; and &lt;a href="https://docs.devexpress.com/XPO/8130/query-and-shape-data/free-joins" target="_blank" rel="noreferrer noopener"&gt;Free Joins&lt;/a&gt;. This makes EF Core filtering capabilities&amp;nbsp;no different from what is available in XPO ORM today.&lt;/p&gt;

&lt;h3&gt;XPO DateOnly/TimeOnly Support&amp;nbsp;&lt;/h3&gt;


&lt;p&gt;In v24.2, XAF supports DateOnly/TimeOnly in XPO connection providers for .NET apps. This enhancement benefits XAF/Reporting/Dashboards and other products since XPO is at the core of data access code internally. As part of this, we also &lt;a href="https://supportcenter.devexpress.com/ticket/details/t1251731/xpo-changed-column-mappings-for-sql-types-date-and-time" target="_blank" rel="noreferrer noopener"&gt;changed column mappings&lt;/a&gt; for SQL types Date and Time.&amp;nbsp;&amp;nbsp;&lt;/p&gt;


&lt;p&gt;For more information on DateOnly/TimeOnly enhancements at the UI level of XAF WinForms apps (in grid and other controls), please review the following articles: v24.1 (&lt;a href="https://www.devexpress.com/subscriptions/whats-new/#winforms-dateonly-support" target="_blank" rel="noreferrer noopener"&gt;WinForms,&lt;/a&gt; &lt;a href="https://www.devexpress.com/subscriptions/whats-new/#blazor-grid-dateonly-timeonly-support" target="_blank" rel="noreferrer noopener"&gt;Blazor&lt;/a&gt;), v24.2 (the links to WinForms and Blazor EAP posts).&amp;nbsp;&lt;/p&gt;

&lt;h3&gt;Performance Enhancements&amp;nbsp;&lt;/h3&gt;


&lt;p&gt;We optimized image/icon load operations across all supported platforms. We noticed improvements in application startup time of up to 2 seconds (or more in complex applications with numerous Actions [&amp;gt;500]).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Internally, we also used CriteriaCompiler instead of CriteriaEvaluator&amp;nbsp;in security Object and Member Permissions (EF Core and XPO ORM) and Calculated Fields (EF Core only). This &lt;strong&gt;cut calculation time and memory allocations in&amp;nbsp;half for specific usage&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;scenarios&lt;/strong&gt;. Optimizations are not yet finalized, but our complete implementation should be available as we near Beta 1 in November (v24.2.2+). In the meantime, you can check out a few screenshots from our labs (these changes are not yet included into this EAP):&lt;/p&gt;&lt;p&gt;
&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(69).png" alt="" style="width:1778px;height:1070px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;
&lt;/p&gt;&lt;p&gt;

&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(71).png" alt="" style="width:1778px;height:1070px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;
&lt;/p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(72).png" alt="" style="width:1778px;height:1170px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;
&lt;h3&gt;Audit Trail Enhancements&amp;nbsp;&lt;/h3&gt;


&lt;p&gt;XAF now automatically excludes all non-persistent properties from the audit trail in XPO-based applications. This enhancement can improve performance if setter methods for non-persistent properties contain extensive logic.&amp;nbsp;&lt;/p&gt;


&lt;p&gt;To update existing apps, set the static ObjectAuditProcessor.ExcludeNonPersistentFromAudit property to true. For additional&amp;nbsp;information, please review the following:&amp;nbsp;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1246233/audit-non-persistent-properties-are-excluded-from-the-audit-log-xpo" target="_blank" rel="noreferrer noopener"&gt;T1246233 - Audit - Non Persistent Properties are Excluded from the Audit Log (XPO)&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;

&lt;h3&gt;Usability Enhancements&amp;nbsp;&lt;/h3&gt;


&lt;p&gt;We added new extension methods to make it easier to create a new Object Space using XafApplication and IObjectSpaceFactory.&amp;nbsp;&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;// v24.1.3 and earlier
var os = Application.CreateObjectSpace(typeof(Person));
// v24.1.5+ and v24.2+
var os = Application.CreateObjectSpace&amp;lt;Person&amp;gt;();
&lt;/code&gt;&lt;/pre&gt;





&lt;p&gt;If you used IObjectSpaceFactory in ASP.NET Core apps (Web API Service controllers, custom Razor components, etc.), please consider the following minor&amp;nbsp;breaking change in v24.2:&amp;nbsp;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1254577/inonsecuredobjectspacefactory-and-iobjectspacefactory-classes-were-moved-to-the" target="_blank"&gt;T1254577 - INonSecuredObjectSpaceFactory and IObjectSpaceFactory classes were moved to the DevExpress.ExpressApp namespace&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;h2&gt;Artificial Intelligence (AI)&lt;/h2&gt;
&lt;p&gt;XAF Blazor and XAF WinForms-powered apps automatically derive all AI-related&amp;nbsp;features available in DevExpress components for each supported UI platforms. You can either access underlying UI controls and enable AI features as necessary (&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1256162/ai-blazor-richedit-integration-in-v24-2eap#dac3b611-43da-4f3e-8dc3-b8a52631a137" target="_blank"&gt;an example with Blazor Rich Text Editor&lt;/a&gt;) OR create custom &lt;a href="https://docs.devexpress.com/eXpressAppFramework/113610/ui-construction/using-a-custom-control-that-is-not-integrated-by-default" target="_blank"&gt;XAF Property Editors /&amp;nbsp;user controls/forms&lt;/a&gt; based on AI-powered DevExpress controls like the Chat control.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/09/18/devexpress-ai-powered-extensions-extending-text-editors-with-ai-eap-v24-2.aspx" target="_blank"&gt;DevExpress AI-powered APIs&lt;/a&gt;&amp;nbsp;allow&amp;nbsp;you to integrate the following AI services into your DevExpress-powered applications:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;OpenAI&lt;/li&gt;
&lt;li&gt;Azure OpenAI&lt;/li&gt;
&lt;li&gt;Ollama&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;AI services and DevExpress AI extensions (behaviors) follow a &amp;quot;bring your own key&amp;quot; approach. DevExpress does not provide a REST API or include built-in LLMs/SLMs. To use AI services, you need an active Azure/OpenAI subscription to obtain the&amp;nbsp;necessary REST API endpoint, key, and model deployment name. This information&amp;nbsp;must be provided at application startup to register AI clients and enable DevExpress AI-powered features in your applications.&lt;/p&gt;
&lt;p&gt;For additional information, please review the following documents: &lt;a href="https://community.devexpress.com/blogs/news/archive/2024/09/18/devexpress-ai-powered-extensions-extending-text-editors-with-ai-eap-v24-2.aspx" target="_blank"&gt;Overview&lt;/a&gt; |&amp;nbsp;&lt;a href="https://docs.devexpress.com/WindowsForms/405151/ai-powered-extensions?v=24.2" target="_blank"&gt;DevExpress AI-Powered Extensions for WinForms&lt;/a&gt;&amp;nbsp;| &lt;a href="https://community.devexpress.com/blogs/office/archive/2024/09/20/office-inspired-controls-winforms-amp-wpf-early-access-preview-v24-2-ai-powered-behaviors-and-accessibility-enhancements.aspx" target="_blank"&gt;AI-Powered Behaviors in Rich Text and Spreadsheet Editors for WinForms&lt;/a&gt; |&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/aspnet/archive/2024/09/18/new-devexpress-ai-focused-blazor-chat-control-early-access-preview-v24-2.aspx" target="_blank"&gt;AI-Powered Blazor Chat Component&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;ASP.NET Core Blazor UI&lt;/h2&gt;

&lt;h3&gt;HTML Markup Support within the&amp;nbsp;Rich Text Property Editor&amp;nbsp;&lt;/h3&gt;


&lt;p&gt;XAF Blazor v24.2 supports &lt;a href="https://docs.devexpress.com/eXpressAppFramework/400063/document-management/office-module/how-to-access-the-rich-text-editor-controls#change-the-document-storage-format" target="_blank" rel="noreferrer noopener"&gt;DocumentStorageFormat = Html&lt;/a&gt; for the&amp;nbsp;RichTextPropertyEditor. You can change this property via the Model Editor to support HTML markup instead of RTF (default).&amp;nbsp;&lt;/p&gt;

&lt;h3&gt;Default Caption or Image in Action Container with Drop-Down Menu&amp;nbsp;&lt;/h3&gt;


&lt;p&gt;In previous versions, action containers with drop-down menus required a default action which was displayed inside the container. In this instance, when the drop-down menu was opened, it displayed all actions except the default. Based on user feedback, we have changed this behavior in this release.&lt;/p&gt;


&lt;p&gt;You can now&amp;nbsp;leave the container without a default action and set a custom caption and image for the container instead. These captions and images will always be displayed regardless of which action is currently selected. In this instance, all actions added to the container are added to the drop-down menu.&amp;nbsp;&lt;/p&gt;


&lt;pre&gt;&lt;code&gt;Toolbar.AddActionContainer(&amp;quot;DropdownContainer&amp;quot;, isDropDown: true, caption: &amp;quot;Actions&amp;quot;, imageName: &amp;quot;Action_Search&amp;quot;); &lt;/code&gt;&lt;/pre&gt;


&lt;h3&gt;Tabbed MDI Enhancements&lt;/h3&gt;
&lt;p&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/DevExpress.ExpressApp.UIType#tabbedmdi" target="_blank" rel="noreferrer noopener"&gt;Tabbed MDI&lt;/a&gt; is a multiple document interface (MDI) UI metaphor found in many modern applications (including your favorite Web browser or Microsoft Outlook Web). It is a robust interface that maximizes document screen real estate, especially when working with multiple&amp;nbsp;documents, email messages, etc. Tabbed MDI is enabled in XAF Blazor and WinForms&amp;nbsp;apps by default.&lt;/p&gt;
&lt;p&gt;XAF Blazor v24.2 adds&amp;nbsp;tab context menu support (Close, Close All But This, Close All) and allows users to close a&amp;nbsp;tab by using a middle-mouse click. XAF also stores the last active tab in the Application Model and restores it when you restart the application.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(73).png" alt="" /&gt;&lt;br /&gt;&lt;/p&gt;



&lt;div class="Note"&gt;Early Access and CTP builds are provided solely for early testing purposes and are not ready for production use. This build can be installed side by side with other major versions of DevExpress products. Please backup your project and other important data before installing Early Access and CTP builds. This EAP may not include all features/products we expect to ship in our v24.1&amp;nbsp;release cycle. As its name implies, the EAP offers an early preview of what we expect to ship in two months.&lt;/div&gt;&lt;h2&gt;Your Feedback Matters!&lt;/h2&gt;&lt;p&gt;We recommend that you test the new features outlined in this post within Visual Studio 2022 using our&amp;nbsp;MainDemo.NET.EFCore&amp;nbsp;or MainDemo.NET.XPO demo (located in the following folder:&amp;nbsp;&amp;quot;&lt;strong&gt;c:\Users\Public\Documents\DevExpress Demos 24.2\Components\XAF\&lt;/strong&gt;&amp;quot;). You can also test the EAP build against your project, but please remember that this build is not ready for production use. We will keep you posted about additional features we expect to ship in 2024 (see &lt;a href="https://www.devexpress.com/go/XAF_Roadmap.aspx" target="_blank"&gt;our Year-End v2024.2 roadmap&lt;/a&gt;) as&amp;nbsp;we get closer to official release.&lt;/p&gt;&lt;p&gt;If you&amp;#39;ve had the opportunity to use the EAP build, please post your thoughts&amp;nbsp;in our roadmap survey&amp;nbsp;below OR&amp;nbsp;&lt;a href="https://www.devexpress.com/ask" target="_blank"&gt;create a Support Center ticket&lt;/a&gt;. We will happily follow up.&lt;/p&gt;&lt;div data-survey-id="8765276f-944d-49be-9154-b6826c51c8a1" data-survey-auth-required="false"&gt;&lt;/div&gt;&lt;p&gt;Thanks,&lt;br /&gt;Dennis Garavsky&lt;br /&gt;Principal Product Manager&lt;br /&gt;&lt;a href="mailto:dennis@devexpress.com" title="Email me if you have questions or suggestions"&gt;dennis@devexpress.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="https://community.devexpress.com/aggbug.aspx?PostID=388201" width="1" height="1"&gt;</description>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/XAF/default.aspx">XAF</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/XPO/default.aspx">XPO</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Usability/default.aspx">Usability</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/security/default.aspx">security</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Entity+Framework/default.aspx">Entity Framework</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/OData/default.aspx">OData</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/EF/default.aspx">EF</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/restful/default.aspx">restful</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/prerelease/default.aspx">prerelease</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/eap/default.aspx">eap</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/roadmap/default.aspx">roadmap</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/asp.net+Core/default.aspx">asp.net Core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/survey/default.aspx">survey</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.net+core/default.aspx">.net core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/blazor/default.aspx">blazor</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/EF+Core/default.aspx">EF Core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.net+6/default.aspx">.net 6</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/web+api/default.aspx">web api</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/REST/default.aspx">REST</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/OpenAPI/default.aspx">OpenAPI</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Swagger/default.aspx">Swagger</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.NET+8/default.aspx">.NET 8</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/2024/default.aspx">2024</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Non-Windows/default.aspx">Non-Windows</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/accessibility/default.aspx">accessibility</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/v24.2/default.aspx">v24.2</category>
        </item>
        <item>
            <title>XAF (Cross-Platform .NET App UI &amp; Web API Service) — Year-End Roadmap (v24.2)</title>
            <link>https://community.devexpress.com/blogs/xaf/archive/2024/07/22/xaf-cross-platform-net-app-ui-and-web-api-service-year-end-roadmap-v24-2.aspx</link>
            <pubDate>Mon, 22 Jul 2024 06:51:00 GMT</pubDate>
            <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388178</guid>
            <dc:creator>Dennis Garavsky (DevExpress)</dc:creator>
            <slash:comments>0</slash:comments>
            <description>&lt;strong&gt;&lt;span style="color:#ff0000;font-size:24px;"&gt;UPDATE:&amp;nbsp;&lt;a href="https://www.devexpress.com/subscriptions/new-2024-2.xml#xaf" target="_blank"&gt;What&amp;#39;s New in XAF (v24.2)&lt;/a&gt;&amp;nbsp;| &lt;a href="https://www.devexpress.com/go/XAF_Roadmap.aspx" target="_blank"&gt;June 2025 Roadmap (v25.1)&lt;/a&gt;&lt;/span&gt;&lt;/strong&gt;

&lt;p&gt;As always, thank you for choosing &lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank"&gt;XAF&lt;/a&gt;.&amp;nbsp;&lt;span&gt;We appreciate your support.&amp;nbsp;&lt;/span&gt;This blog post outlines some of our XAF-related development plans for the second half of 2024&amp;nbsp;(v24.2).&amp;nbsp;&lt;span&gt;Strategically, our goal is to focus on performance, overall stability/usability in this release cycle.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;If you have not heard of&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank"&gt;XAF&lt;/a&gt;&lt;span&gt;&amp;nbsp;before, XAF is a .NET application framework that helps you build powerful Office-inspired line-of-business apps with&amp;nbsp;DevExpress Blazor and WinForms UI components (using Entity Framework or&amp;nbsp;XPO ORM). Feel free to&amp;nbsp;&lt;a href="https://www.devexpress.com/support/demos/#xaf" target="_blank"&gt;review XAF demos&lt;/a&gt;&amp;nbsp;and&amp;nbsp;compare XAF with other software development methodologies &lt;a href="https://www.devexpress.com/products/net/application_framework/xaf-considerations-for-newcomers.xml" target="_blank"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;&lt;span&gt;&lt;span&gt;When new users try &lt;a href="https://community.devexpress.com/blogs/xaf/archive/2023/12/28/xaf-blazor-2023-highlights-5-unique-web-features-that-rival-powerful-windows-desktop-solutions.aspx" target="_blank"&gt;unique XAF Blazor features&lt;/a&gt;&amp;nbsp;live in our XAF Blazor demo (especially Tabbed MDI or runtime layout customizations)&lt;/span&gt;&lt;span&gt;, they often ask whether it is a WinForms app (or if they are familiar with XAF, they&amp;nbsp;cannot believe how much XAF Blazor apps and DevExpress Blazor Components have progressed over the last couple of years).&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;div class="Note"&gt;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.&amp;nbsp;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;Core/Cross-Platform&lt;/h2&gt;
&lt;p&gt;Enhancements within this category (for example, performance or security)&amp;nbsp;apply to XAF/WinForms UI, Web API Service, and to WebForms (.NET Framework).&lt;/p&gt;
&lt;h3&gt;.NET Core Enhancements&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;We will introduce &lt;strong&gt;.NET 9&lt;/strong&gt;&amp;nbsp;support for&amp;nbsp;XAF Blazor/WinForms UI v24.2 and our Web API Service v24.2&amp;nbsp;(after November 2024). We will also support the latest .NET 9 previews for v24.1 (for early adopters to test).&amp;nbsp;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;.NET 8, .NET Framework 4.6.2, Visual Studio 2019&lt;/strong&gt;&amp;nbsp;will be minimally supported versions for DevExpress libraries moving forward (v24.2+). Learn more about this global change in the following&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/07/08/net-net-8-and-net-framework-4-6-2-are-minimally-supported-target-frameworks-for-devexpress-libraries-in-v24-2.aspx" target="_blank"&gt;announcement&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;With v24.2, we will improve integration&amp;nbsp;with &lt;strong&gt;Microsoft&amp;#39;s .NET Upgrade Assistant Tool. &lt;/strong&gt;&amp;nbsp;This change will simplify migration from .NET Framework to .NET. We expect to offer&amp;nbsp;&lt;a href="https://devblogs.microsoft.com/dotnet/announcing-api-map-support-for-ua/" target="_blank"&gt;predefined mappings&lt;/a&gt;&amp;nbsp;for appropriate&amp;nbsp;DevExpress packages.&lt;/li&gt;&lt;li&gt;We expect to support XAF project and item templates for VS Code and Rider&amp;nbsp;(potentially) as part of the cross-platform DevExpress Template Gallery (our &lt;a href="https://docs.devexpress.com/eXpressAppFramework/404967/installation-upgrade-version-history/dotnet-cli-integration" target="_blank"&gt;CLI-based templates&lt;/a&gt;&lt;span&gt;&amp;nbsp;will be used under the hood).&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Source Code Builder Enhancements&lt;/h3&gt;
&lt;p&gt;We will simplify&amp;nbsp;the steps needed to&amp;nbsp;&lt;a href="https://docs.devexpress.com/GeneralInformation/403678/source-code/rebuild-assemblies-from-source-code"&gt;rebuild assemblies from source code&lt;/a&gt;&amp;nbsp;in our v24.2 release cycle:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Our source builder tool will ship in the DevExpress&amp;nbsp;Unified Component Installer.&lt;/li&gt;
&lt;li&gt;Our source builder tool will be more stable (we added more internal tests for the rebuild process on our build farm) and will require fewer steps to initiate/complete source rebuild.&lt;/li&gt;
&lt;li&gt;It will be&amp;nbsp;easier to rebuild .NET Core/.NET projects (currently, it is a manual process)&amp;nbsp;and generate corresponding NuGet packages (including localization packages).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;EF Core ORM Enhancements&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;We will add EF Core 9 ORM support for&amp;nbsp;XAF Blazor/WinForms UI and Web API Service.&lt;/li&gt;
&lt;li&gt;We will introduce&amp;nbsp;ServerView and InstantFeedbackView data access modes for&amp;nbsp;ListView, at least at the core level (additional integration for&amp;nbsp;XAF Blazor/WinForms UI may be pursued in future versions).&lt;/li&gt;
&lt;li&gt;We will implement a simpler solution for server-side calculated fields in EF Core (aka XPO&amp;#39;s PersistentAliasAttribute).&lt;/li&gt;
&lt;li&gt;We will support soft deletion for EF Core (aka XPO&amp;#39;s Deferred Deletion).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;XPO ORM Enhancements&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;We will support the latest versions of database drivers/connectors for PostreSQL, Oracle, and My SQL (and SQL Server 2024, should it be released).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;We will support DateOnly/TimeOnly in XPO connection providers for .NET apps (this enhancement will benefit XAF/Reporting/Dashboards and other products since XPO is at the core of data access code internally).&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Security Enhancements&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;We will simplify the following user management tasks for XAF-powered Blazor apps: MFA, Forgot&amp;nbsp;Password, and potentially Sign Up.&lt;/li&gt;
&lt;li&gt;We will enhance our built-in Tenant Resolvers (a part of our Multi-Tenancy module) so they work more effectively with OAuth2 providers such as Google or Microsoft Entra ID (&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1229280/multitenant-module-google-oauth-improvement" target="_blank"&gt;example&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;We will enhance XAF Blazor and Web API Service project templates to enable &lt;a href="https://learn.microsoft.com/en-us/aspnet/core/blazor/security/?view=aspnetcore-8.0#antiforgery-support" target="_blank"&gt;angiforgery protection&lt;/a&gt; by default. Even though&amp;nbsp;CSRF tokens &lt;a href="https://github.com/dotnet/aspnetcore/issues/11787#issuecomment-508000446" target="_blank"&gt;aren&amp;#39;t involved in the server-side Blazor circuit&lt;/a&gt; by default, our customers can add custom code to&amp;nbsp;XAF Blazor apps where CSRF will make sense (for instance, complex client-side code, which can consume external web services).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Performance Enhancements&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;We will refactor our internal code to use&amp;nbsp;CriteriaCompiler instead of ExpressionEvaluator by default (wherever possible). This should enhance performance  in certain implementation scenarios (Security System, Object Space, etc).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;We expect to modify default indices for Audit Trail business classes and enhance read performance for specific usage scenarios.&amp;nbsp;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;We expect to optimize Notifications Module performance when an app includes multiple scheduler appointments.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;ASP.NET Core Blazor UI&lt;/h2&gt;
&lt;p&gt;We expect to release the following XAF Blazor UI features/capabilities in our v24.2&amp;nbsp;release cycle (December&amp;nbsp;2024).&lt;/p&gt;
&lt;h3&gt;List and Property Editor Enhancements&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt;XAF Blazor UI will include a built-in TreeListEditor (powered by the DevExpress Blazor&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.devexpress.com/Blazor/404942/components/treelist" target="_blank"&gt;TreeList&lt;/a&gt;&lt;span&gt;).&amp;nbsp;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;We will support storage of HTML-formatted documents within the Rich Text Property Editor (&lt;a href="https://docs.devexpress.com/eXpressAppFramework/401210/document-management/office-module/how-to-customize-the-rich-text-editors#change-the-document-storage-format" target="_blank"&gt;learn more&lt;/a&gt;).&amp;nbsp;&lt;/li&gt;&lt;li&gt;We want to support &lt;a href="https://docs.devexpress.com/eXpressAppFramework/DevExpress.Persistent.Base.DataSourceCriteriaAttribute" target="_blank"&gt;DataSourceXXX attributes&lt;/a&gt;&amp;nbsp;for Enumeration Property Editors (much like the attributes available for Lookup and Link List Views).&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img src="https://docs.devexpress.com/Blazor/images/treelist/blazor-treelist-overview.png" alt="TreeList Overview" /&gt;&lt;/p&gt;
&lt;h3&gt;Error Handling Enhancements&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;We will extend XAF&amp;#39;s Blazor error handling engine (to closely mirror&amp;nbsp;XAF WinForms/WebForms counterparts): non-critical exceptions will not crash the entire app and redirect to an error page&amp;nbsp;but will instead be isolated in regions or notification messages. We hope to leverage ASP.NET&amp;nbsp;&lt;a href="https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/handle-errors?view=aspnetcore-8.0#error-boundaries" target="_blank"&gt;Error Boundaries&lt;/a&gt;&amp;nbsp;to address our requirements.&lt;/li&gt;
&lt;li&gt;We hope to output more useful error information to developers during debug/development (currently, it requires using web browser tools - F12).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Performance Enhancements&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;We will optimize page rendering for a variety of common Blazor-specific usage&amp;nbsp;scenarios (logon form, grid, and main menu toolbar rendering, etc.).&lt;/li&gt;&lt;li&gt;We hope to optimize tab close operations&amp;nbsp;when Tabbed MDI is enabled (to avoid execution of unnecessary logic when disposing off related Views).&lt;/li&gt;&lt;li&gt;We will support ServerView and InstantFeedbackView &lt;a href="https://docs.devexpress.com/eXpressAppFramework/113683/ui-construction/views/list-view-data-access-modes" target="_blank"&gt;data access modes&lt;/a&gt; for&amp;nbsp;ListView with EF Core, at least at the core level (additional integration for&amp;nbsp;XAF Blazor UI and DxGridListEditor with EF Core and XPO may be pursued in future versions).​&lt;/li&gt;&lt;/ul&gt;
&lt;h3&gt;Usability Enhancements&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;We will introduce tab context menus (Close, Close All But This, Close All), middle-mouse click, and potentially other usability enhancements.&lt;/li&gt;&lt;li&gt;
&lt;p&gt;We will add VisibleInCustomizationForm or similar attributes in the Application Model to hide certain properties or fields from ListView and DetailView customization forms much easier (&lt;a href="https://supportcenter.devexpress.com/ticket/details/q366279/how-to-hide-a-property-field-from-the-grid-s-column-chooser-layout-s-customization-form" target="_blank"&gt;without the need for manual code-based solutions&lt;/a&gt;).&lt;/p&gt;
&lt;/li&gt;&lt;li&gt;
&lt;p&gt;We hope to make it easier for end-users to add/remove tabs during DetailView layout customization at runtime (this is a quite complicated task, which we researched in the past, but we want to give it another try).&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img src="https://www.devexpress.com/products/net/application_framework/i/appgallery/blazor-crm-employee-details-xaf@2x.png" alt="" style="width:1440px;height:1000px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#656565;font-family:&amp;#39;Open Sans Condensed&amp;#39;, HelveticaNeue-CondensedBold, Helvetica, &amp;#39;Arial Narrow&amp;#39;, Calibri, Arial, &amp;#39;Lucida Grande&amp;#39;, sans-serif;font-size:24px;"&gt;Deployment Enhancements&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;We will publish&amp;nbsp;a few examples and demonstrate how&amp;nbsp;&lt;a href="https://learn.microsoft.com/en-us/dotnet/aspire/get-started/aspire-overview" target="_blank"&gt;.NET Aspire&lt;/a&gt;&amp;nbsp;can simplify development/deployment of XAF Blazor and Web API Service-based apps, especially for non-Windows production environments. &lt;/p&gt;&lt;p&gt;Our ultimate goal is to fully automate manual steps documented in the following help topics:&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/404614/deployment/asp-net-core-blazor/deploy-a-blazor-application-to-azure"&gt;Deploy an ASP.NET Core Blazor Server Application to Azure App Service&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/404717/deployment/asp-net-core-blazor/deploy-a-blazor-application-to-linux-with-nginx"&gt;Deploy an ASP.NET Core Blazor Server Application to Linux with Nginx&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;And Much More in Blazor Components...&lt;/h3&gt;&lt;p&gt;&lt;span&gt;For even more enhancements in XAF Blazor UI, please check out&amp;nbsp;&lt;/span&gt;&lt;a href="https://community.devexpress.com/blogs/aspnet/archive/2024/02/12/blazor-v24-1-roadmap.aspx"&gt;&lt;/a&gt;&lt;a href="https://community.devexpress.com/blogs/aspnet/archive/2024/07/22/blazor-year-end-roadmap-v24-2.aspx"&gt;Blazor — Year-End Roadmap (v24.2)&lt;/a&gt;&amp;nbsp;&lt;span&gt;&amp;nbsp;- many of these component features (not all) will be available in XAF Blazor automatically.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;

&lt;h2&gt;Your Feedback Matters&lt;/h2&gt;&lt;p&gt;Your response to the following questions will help us refine plans for our next major release:&lt;/p&gt;&lt;div data-survey-id="8765276f-944d-49be-9154-b6826c51c8a1" data-survey-auth-required="false"&gt;&lt;/div&gt;&lt;span&gt;If you have yet to review the features/capabilities introduced in our most recent major update (&lt;/span&gt;&lt;strong&gt;v24.1&lt;/strong&gt;&lt;span&gt;), please&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.devexpress.com/subscriptions/whats-new/" target="_blank"&gt;visit the following webpage&lt;/a&gt;&lt;span&gt;&amp;nbsp;and let us know what you think of this release by responding to&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.devexpress.com/subscriptions/whats-new/#xaf-survey" target="_blank"&gt;our online XAF v24.1 survey&lt;/a&gt;&lt;span&gt;.&lt;/span&gt;&lt;p&gt;Thanks,&lt;br /&gt;Dennis Garavsky&lt;br /&gt;Principal Product Manager&lt;br /&gt;&lt;a href="mailto:dennis@devexpress.com" title="Email me if you have questions or suggestions"&gt;dennis@devexpress.com&lt;/a&gt;&lt;/p&gt;&lt;img src="https://community.devexpress.com/aggbug.aspx?PostID=388178" width="1" height="1"&gt;</description>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/XAF/default.aspx">XAF</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/XPO/default.aspx">XPO</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Performance/default.aspx">Performance</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/future/default.aspx">future</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/security/default.aspx">security</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Entity+Framework/default.aspx">Entity Framework</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/OData/default.aspx">OData</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/WinForms/default.aspx">WinForms</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/roadmap/default.aspx">roadmap</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/asp.net+Core/default.aspx">asp.net Core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.net+core/default.aspx">.net core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/blazor/default.aspx">blazor</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/EF+Core/default.aspx">EF Core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/web+api/default.aspx">web api</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.NET/default.aspx">.NET</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.NET+8/default.aspx">.NET 8</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/2024/default.aspx">2024</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.NET+9/default.aspx">.NET 9</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/v24.2/default.aspx">v24.2</category>
        </item>
        <item>
            <title>XAF v24.1 EAP — Tabbed MDI, Batch Edit, Notifications, Customization Form and Accessibility for Blazor, EF Core 8 and Performance Boost for Middle Tier Server</title>
            <link>https://community.devexpress.com/blogs/xaf/archive/2024/04/18/xaf-v24-1-eap-tabbed-mdi-grid-batch-edit-notifications-module-customization-form-and-accessibility-enhancements-for-blazor-ef-core-8-and-performance-enhancements.aspx</link>
            <pubDate>Thu, 18 Apr 2024 20:04:00 GMT</pubDate>
            <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388145</guid>
            <dc:creator>Dennis Garavsky (DevExpress)</dc:creator>
            <slash:comments>0</slash:comments>
            <description>&lt;p&gt;As you may already know, we are a couple of months away from our next major update (v24.1). This post describes&amp;nbsp;&lt;strong&gt;a few&lt;/strong&gt;&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank"&gt;XAF&lt;/a&gt;-related&amp;nbsp;features we expect to ship in early June and details what’s inside our Early Access Preview build (for additional information on what you can expect, refer to&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/xaf/archive/2024/01/31/xaf-v24-1-june-2024-roadmap-cross-platform-net-app-ui-blazor-winforms-and-web-api-service.aspx" target="_blank"&gt;our June 2024.1 roadmap&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;As you will see below, XAF key focus areas will continue to remain &lt;strong&gt;Blazor, Entity Framework&amp;nbsp;Core, Security&amp;nbsp;and .NET 8&lt;/strong&gt;.&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/xaf-considerations-for-newcomers.xml" target="_blank"&gt;One of XAF’s core development pillars&lt;/a&gt;&amp;nbsp;is Low-Code/No-Code .NET application development (for Web, Desktop and APIs simultaneously).&amp;nbsp;When time to market/efficiency matters (especially in today&amp;#39;s world), XAF can help you deliver line-of-business apps in the shortest possible time using familiar RAD methodologies.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;If you own an active&amp;nbsp;&lt;a href="https://www.devexpress.com/subscriptions/universal.xml" target="_blank"&gt;Universal Subscription&lt;/a&gt;, feel free to download this Early Access Preview (EAP) build at your convenience. If you own an active&amp;nbsp;&lt;a href="https://www.devexpress.com/subscriptions/dxperience.xml" target="_blank"&gt;DXperience Subscription&lt;/a&gt;&amp;nbsp;and would like to learn more about our&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank"&gt;Cross-Platform .NET App UI (XAF)&lt;/a&gt;&amp;nbsp;or&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/security-web-api-service.xml" target="_blank"&gt;Web API Service&lt;/a&gt;, you can explore the features described herein by logging onto the DevExpress&amp;nbsp;&lt;a href="https://www.devexpress.com/ClientCenter/DownloadManager/" target="_blank"&gt;Download Manager&lt;/a&gt;&amp;nbsp;and installing this EAP build in trial mode. Once you do, please take a moment to tell us whether these new features address your business needs. Your feedback will help us fine-tune our implementation before official launch.&lt;/p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(54).png" alt="" style="width:2824px;height:676px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;&lt;div&gt;&lt;div&gt;&lt;div class="Note"&gt;If you are using a trial and want to try these preview&amp;nbsp;features today, you can purchase a&amp;nbsp;&lt;a href="https://devexpress.com/buy"&gt;DevExpress Universal license online&lt;/a&gt;&amp;nbsp;(this will give you access to the early access preview build). If you own a non-Universal subscription and are ready to upgrade, email us at&amp;nbsp;&lt;a href="mailto:clientservices@devexpress.com"&gt;clientservices@devexpress.com&lt;/a&gt;&amp;nbsp;for upgrade pricing.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;ASP.NET Core Blazor UI&lt;/h2&gt;&lt;h3&gt;Tabbed MDI Support&lt;/h3&gt;&lt;p&gt;Tabbed MDI is a multiple document interface (MDI) UI metaphor found in many modern applications (including your favorite Web browser or Microsoft Outlook Web). It is a robust interface that maximizes document screen real estate, especially when working with multiple&amp;nbsp;documents, email messages, etc.&lt;/p&gt;&lt;p&gt;Tabbed MDI is enabled in XAF WinForms apps by default, and&amp;nbsp;XAF Blazor will provide a similar user experience in v24.1. &lt;span style="background-color:#ffffff;"&gt;You can also customize Tabbed MDI in the Model Editor as follows:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="background-color:#ffffff;"&gt;Restore previously opened tabs between application runs (RestoreTabbedMdiLayout&amp;nbsp;&lt;span&gt;=&amp;nbsp;&lt;/span&gt;True by default)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color:#ffffff;"&gt;Refresh View data source on tab focus (&lt;span&gt;RefreshViewOnTabFocus =&amp;nbsp;&lt;/span&gt;False by default)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color:#ffffff;"&gt;Display or hide tab images (&lt;span&gt;ShowTabImage&lt;/span&gt;&lt;span style="color:#242424;"&gt;&amp;nbsp;= True by default&lt;/span&gt;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="background-color:#ffffff;"&gt;Display tabs at the top,&amp;nbsp;bottom, or right of the main window (TabPosition&amp;nbsp;&lt;span style="color:#242424;"&gt;= Top by default&lt;/span&gt;)&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;In addition, you can access the underlying tab control in code and configure it as needed using a Controller (in the SolutionName.Blazor project). For instance, you can load tabs on demand or simultaneously.&lt;/span&gt;&lt;/p&gt;&lt;pre&gt;&lt;code class="language-csharp"&gt;protected override void OnFrameAssigned() {
    base.OnFrameAssigned();
    Frame.TemplateChanged += Frame_TemplateChanged;
}
private void Frame_TemplateChanged(object sender, EventArgs e) {
    if(Frame.Template is ApplicationMdiWindowTemplate template) {
        template.TabsModel.RenderMode = DevExpress.Blazor.TabsRenderMode.AllTabs;
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;&lt;br /&gt;&lt;/span&gt;Since our EAP v24.1 contains &lt;a href="https://supportcenter.devexpress.com/ticket/details/t1224820/24-1-eap-tabbedmdi-feedback" target="_blank"&gt;known issues&lt;/a&gt; with Tabbed MDI (fixed in our latest builds),&amp;nbsp;we mostly ask that you to test this UI metaphor in your app for feedback purposes.&amp;nbsp;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(59).png" alt="" style="width:2970px;height:1700px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(64).png" alt="" style="width:2390px;height:1380px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;&lt;/p&gt;
&lt;h3&gt;Add New&amp;nbsp;Fields into the Customization Form of the Grid and&amp;nbsp;Layout Controls at Runtime&lt;/h3&gt;&lt;p&gt;XAF WinForms apps include an&amp;nbsp;Object Model dialog. With it, end-users can search, tick or untick data model fields (including sub-fields and collections), which are not yet displayed in the grid or layout control (as part of the Column Chooser or Customization Form).&lt;/p&gt;&lt;p&gt;Much like Microsoft Office apps, this capability allows users to fully customize&amp;nbsp;list and detail forms&amp;nbsp;(based on the structure of a data model). Again, this is helpful when developers need to address&amp;nbsp;changes to business requirements without&amp;nbsp;redeployment. For more information, refer to&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/404353/ui-construction/views/layout/view-items-layout-customization-blazor?v=24.1"&gt;Runtime Layout Customization in ASP.NET Core Blazor Applications&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;XAF Blazor provides a similar experience for both ListView and DetailView&amp;nbsp;in v24.1 (just remember&amp;nbsp;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1224818/24-1-eap-customization-form-feedback" target="_blank"&gt;this known issue&lt;/a&gt;). This feature removes the need for many UI customizations in the design-time Model Editor (inside Visual Studio) - something&amp;nbsp;many of you love in XAF WinForms UI.&amp;nbsp;Of course, you can also disable these runtime capabilities for end-users.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(58).png" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(57).png" alt="" /&gt;&lt;/p&gt;

&lt;h3&gt;Notifications&amp;nbsp;Module&lt;/h3&gt;&lt;p&gt;XAF Blazor v24.1 supports our&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/113690/event-planning-and-notifications/notifications/notifications-module-overview" target="_blank"&gt;Notifications Module&lt;/a&gt;. The module allows&amp;nbsp;you to display reminders for scheduler appointments or any custom objects (such as tasks). The detail form for&amp;nbsp;a&amp;nbsp;scheduler appointment/event&amp;nbsp;will also allow you to configure&amp;nbsp;reminders like those available in Microsoft Outlook. With the help of the Notifications Module, your&amp;nbsp;app can&amp;nbsp;display a popup window before appointment/event start times.&lt;/p&gt;&lt;p&gt;NOTE:&amp;nbsp;our Notifications module does not have to be bound to the Scheduler module: it can display notifications that originate&amp;nbsp;from anywhere. In the latter instance, your goal as a developer is to provide the notifications service with notification items and the service will process them as required.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(56).png" alt="" style="width:2970px;height:1700px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(55).png" alt="" /&gt;&lt;/p&gt;

&lt;h3&gt;Batch / Cell Edit&amp;nbsp;in Grid List&amp;nbsp;Editor&lt;/h3&gt;&lt;p&gt;Batch Edit support&amp;nbsp;officially ships in XAF Blazor v24.1 via a single option (&lt;a href="https://docs.devexpress.com/eXpressAppFramework/113249/ui-construction/views/list-view-edit-modes?v=24.1#in-place-editing-customization-the-inlineeditmode-property-1" target="_blank"&gt;InlineEditMode = Batch&lt;/a&gt;) - much like its XAF WebForms counterpart.&amp;nbsp;&lt;span&gt;At present (v23.2), XAF Blazor developers must&amp;nbsp;manually enable this option&amp;nbsp;(&lt;/span&gt;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1206051/is-available-batch-editing-for-blazor-in-xaf-apps#e90097cf-624b-4129-a109-2adb97a38078" target="_blank"&gt;learn more&lt;/a&gt;&lt;span&gt;).&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/chrome_19MGsCozq4.gif" alt="" style="width:2820px;height:1438px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;&lt;/p&gt;

&lt;h3&gt;Accessibility Enhancements and Keyboard Support&lt;/h3&gt;&lt;p&gt;Currently, XAF (UI for ASP.NET Core Blazor, WinForms, and ASP.NET WebForms)&amp;nbsp;ships with partial accessibility support mirroring those found in&amp;nbsp;corresponding DevExpress UI controls across&amp;nbsp;respective UI platforms:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://docs.devexpress.com/Blazor/404749/common-concepts/accessibility"&gt;DevExpress ASP.NET Core Blazor&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/404293/build-an-application/accessibility"&gt;DevExpress WinForms&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://docs.devexpress.com/AspNet/5294/common-concepts/accessibility-support"&gt;DevExpress ASP.NET Web Forms&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://js.devexpress.com/DevExtreme/23_2/Guide/Common/Accessibility/"&gt;DevExpress DevExtreme&lt;/a&gt;&amp;nbsp;(DevExtreme UI controls are used in XAF ASP.NET Core Blazor and ASP.NET Web Forms UI.)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;XAF Blazor also ships with its own set of UI components/elements (like property editors and action containers).&amp;nbsp;&lt;span style="background-color:#ffffff;"&gt;In v24.1, we extended accessibility support and improved&amp;nbsp;keyboard support for all&amp;nbsp;XAF Blazor UI elements (~20% of scenarios). XAF&amp;nbsp;accessibility support will also level up&amp;nbsp;automatically as&amp;nbsp;soon as we enhance accessibility in&amp;nbsp;DevExpress Blazor UI components&amp;nbsp;throughout&amp;nbsp;2024.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Our Blazor Grid&amp;#39;s keyboard navigation option also officially ships and is&amp;nbsp;enabled by default in XAF Blazor.&amp;nbsp; See also the &amp;quot;&lt;em&gt;Keyboard Support&amp;quot;&lt;/em&gt;&amp;nbsp;and &amp;quot;&lt;em&gt;Keyboard Support Enhancements and New Tab Navigation&lt;/em&gt;&amp;quot; sections in&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/aspnet/archive/2024/02/12/blazor-v24-1-roadmap.aspx"&gt;Blazor — June 2024 Roadmap (v24.1)&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;And Much More for Blazor...&lt;/h3&gt;&lt;p&gt;For even more enhancements in XAF Blazor UI, please check out&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/aspnet/archive/2024/02/12/blazor-v24-1-roadmap.aspx"&gt;&lt;/a&gt;&lt;a href="https://community.devexpress.com/blogs/aspnet/archive/2024/03/26/blazor-early-access-preview-v24-1.aspx"&gt;Blazor Component Suite — Early Access Preview (v24.1)&lt;/a&gt;&amp;nbsp;- many of these component features will be available in XAF Blazor automatically.&lt;/p&gt;&lt;h2&gt;Cross-Platform Enhancements&lt;/h2&gt;&lt;h3&gt;Migration from Newtonsoft.Json to System.Text.Json&lt;/h3&gt;&lt;p&gt;System.Text.Json library is now used to deserialize input parameters for &lt;a href="https://docs.devexpress.com/eXpressAppFramework/403394/backend-web-api-service" target="_blank"&gt;Backend Web API Service&lt;/a&gt; endpoints.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span&gt;For more information, refer to my other post&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/news/archive/2024/04/02/net-and-net-framework-migration-from-newtonsoft-json-to-system-text-json-v24-1.aspx"&gt;.NET and .NET Framework — Migration from Newtonsoft.Json to System.Text.Json (v24.1)&lt;/a&gt;&amp;nbsp;and&amp;nbsp;this&amp;nbsp;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1225165/xaf-system-text-json-library-is-used-to-deserialize-input-parameters-of-the-web-api" target="_blank"&gt;Breaking Change&lt;/a&gt;&lt;span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;h3&gt;EF Core 8 Support&lt;/h3&gt;&lt;p&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/404215/debugging-testing-and-error-handling/code-diagnostics/xaf0026?v=24.1" target="_blank"&gt;EF Core 8 support&lt;/a&gt; officially ships in&amp;nbsp;&lt;strong&gt;v24.1&amp;nbsp;&lt;/strong&gt;for&amp;nbsp;XAF&amp;nbsp;and associated&amp;nbsp;Backend Web API Service. EF Core 8&amp;nbsp;is the latest production-ready version of Entity Framework.&lt;/p&gt;&lt;p&gt;While EF Core 8&amp;nbsp;offers numerous advantages over its predecessor (performance and customization included), it also introduced a series of&amp;nbsp;breaking changes&amp;nbsp;that we will need to address (for instance, DateOnly and TimeOnly support). To solicit feedback before official release, we intentionally added preview (CTP) support of EF Core 8&amp;nbsp;in&amp;nbsp;&lt;strong&gt;v23.2.4+&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;For more information about recent EF Core updates, refer to the following Microsoft document:&amp;nbsp;&lt;a href="https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-8.0/whatsnew" target="_blank"&gt;What&amp;#39;s New in EF Core 8&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-8.0/breaking-changes" target="_blank"&gt;EF Core 8 Breaking Changes&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="https://github.com/DevExpress-Examples/XAF_Security_E4908/tree/24.1.1%2B/Benchmarks" target="_blank"&gt;Performance Benchmarks for EF Core 8 vs XPO ORM&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;Multi-Tenancy: Extend the Built-in Tenant Class with Custom Fields&lt;/h3&gt;&lt;p&gt;You can now extend the standard Tenant class&amp;nbsp;to associate additional data (for instance, module and feature license info)&amp;nbsp;with tenants stored in the application’s Host Database. Of course, you can also access custom Tenant fields in code later (from a &lt;a href="https://docs.devexpress.com/eXpressAppFramework/404667/multitenancy/multitenant-application-artchitecture?v=24.1#access-custom-tenant-fields-in-code" target="_blank"&gt;Controller&lt;/a&gt; or &lt;a href="https://docs.devexpress.com/eXpressAppFramework/404667/multitenancy/multitenant-application-artchitecture?v=24.1#from-application-builders" target="_blank"&gt;Application Builders&lt;/a&gt;). We also supported this for both EF Core and XPO ORM.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-csharp"&gt;// MySolution.Module\BusinessObjects\CustomTenant.cs
// EF Core
using DevExpress.Persistent.BaseImpl.EF.MultiTenancy;

public class CustomTenant : Tenant {
    public virtual string CustomField { get; set; }
}
// MySolution.Blazor.Server/Startup.cs (MySolution.Win/Startup.cs)
builder.AddMultiTenancy()
    .WithCustomTenantType&amp;lt;CustomTenant&amp;gt;()
    //...&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/404667/multitenancy/multitenant-application-artchitecture?v=24.1#extend-the-built-in-tenant-class-with-custom-fields" target="_blank"&gt;Documentation&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://docs.devexpress.com/eXpressAppFramework/images/multitenancy-custom-tenants.png?v=24.1" alt="Tenants List View" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;h3&gt;Cascade Deletion for Aggregated One-to-Many Collections in EF Core&lt;/h3&gt;&lt;p&gt;With v24.1, XAF&amp;#39;s Solution Wizard includes `&lt;em&gt;modelBuilder.SetOneToManyAssociationDeleteBehavior(DeleteBehavior.SetNull, DeleteBehavior.Cascade);&lt;/em&gt;` in the OnModelCreating method of EF Core-based apps. This code will&amp;nbsp;configure&amp;nbsp;DeleteBehavior.SetNull for non-aggregated One-to-Many associations and DeleteBehavior.Cascade for aggregated One-to-Many associations respectively. Previously, XAF&amp;#39;s Aggregated attribute was not considered by EF Core as it was for XPO ORM (and there might be exceptions in certain ListView scenarios).&lt;/p&gt;&lt;p&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/402958/business-model-design-orm/business-model-design-with-entity-framework-core/relationships-between-entities-in-code-and-ui?v=24.1#one-to-many-behavior-on-delete" target="_blank"&gt;Documentation&lt;/a&gt;&lt;/p&gt;&lt;h3&gt;&lt;span&gt;Bypass Security Permission&amp;nbsp;Checks for Internal Business Logic&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;In addition, it is&amp;nbsp;now possible to call the new&amp;nbsp;&lt;span style="color:#2b2b2b;"&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/DevExpress.Persistent.BaseImpl.EF.BaseObject.SetPropertyValueWithSecurityBypass--1(System.String---0)?v=24.1" target="_blank"&gt;SetPropertyValueWithSecurityBypass&lt;/a&gt;&lt;/span&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/DevExpress.Persistent.BaseImpl.EF.BaseObject.SetPropertyValueWithSecurityBypass--1(System.String---0)?v=24.1" target="_blank"&gt;&amp;nbsp;&lt;/a&gt;method&amp;nbsp;from within your BaseObject descendants to bypass security checks for certain protected properties in your internal application logic (custom base classes are also supported).&lt;/p&gt;&lt;p&gt;This capability is especially valuable to XAF developers when you wish to set service&amp;nbsp;properties like CreatedBy, ModifiedBy, CreatedOn, UpdatedOn, etc. - our Audit Trail and Model Difference modules operate using a similar mechanism.&amp;nbsp;The&amp;nbsp;SetPropertyValueWithBypassSecurity method can freely set protected properties on behalf of a restricted/regular user in code&amp;nbsp;much like an application administrator - without having to know admin&amp;nbsp;credentials&amp;nbsp;(like impersonation for service tasks).&lt;/p&gt;&lt;pre&gt;&lt;code class="language-csharp"&gt;    ApplicationUser GetCurrentUser() {
        return ObjectSpace.GetObjectByKey&amp;lt;ApplicationUser&amp;gt;(
            ObjectSpace.ServiceProvider.GetRequiredService&amp;lt;ISecurityStrategyBase&amp;gt;().UserId);
    }

    public override void OnSaving() {
        base.OnSaving();
        if (ObjectSpace.IsNewObject(this)) {
            SetPropertyValueWithSecurityBypass(nameof(CreatedBy), GetCurrentUser());
        }
        else {
            SetPropertyValueWithSecurityBypass(nameof(UpdatedBy), GetCurrentUser());
            SetPropertyValueWithSecurityBypass(nameof(UpdatedOn), DateTime.Now);
        }
    }&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;As you probably know, this is&amp;nbsp;&lt;a href="https://supportcenter.devexpress.com/ticket/details/q359904/securitystrategycomplex-how-to-modify-objects-properties-in-code-when-the-user-does-not" target="_blank"&gt;a long-requested option&lt;/a&gt;&amp;nbsp;for many XAFers - an option that prevented full&amp;nbsp;migration from Integrated Mode to Middle Tier Security (because&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/DevExpress.EntityFrameworkCore.Security.SecuredEFCoreObjectSpaceProvider-1.CreateNonsecuredObjectSpace?p=net6" target="_blank"&gt;CreateNonsecuredObjectSpace&lt;/a&gt;&amp;nbsp;and other workarounds were inconvenient). The&amp;nbsp;SetPropertyValueWithBypassSecurity also includes certain limitations like&amp;nbsp;calling this method is only supported from inside BaseObject.OnSaving (for the best security) or the bypassed property cannot update other protected properties internally. We are of the opinion that this new option will cover 80% of popular use-cases.&lt;/p&gt;&lt;h3&gt;Enhanced Performance for Middle Tier Security for WinForms Apps&lt;/h3&gt;&lt;p&gt;XAF WinForms with Middle Tier Security will execute much faster in v24.1. Two&lt;span style="background-color:#ffffff;"&gt;&amp;nbsp;of our best engineers from the Core squad, Max and Pavel, boosted performance for both EF Core 8 and XPO ORM, as compared to v23.2 (XPO ORM results are even better - a 2.5x improvement). Folks have&amp;nbsp;not finished relevant optimizations, so we will share final numbers close to the official release in June).&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="background-color:#ffffff;"&gt;The graphs below show&amp;nbsp;the current duration of batch of performance tests and also&amp;nbsp;individual tests&amp;nbsp;in 24.1 vs v23.2 for EF Core 8.&lt;/span&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(66).png" alt="" style="width:450px;height:440px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(63).png" alt="" class="small" style="border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;&lt;/p&gt;

&lt;p&gt;Along with associated performance enhancements, this was&amp;nbsp;the last step before we could enable Middle Tier Security in XAF WinForms apps in the Solution Wizard by default.&amp;nbsp;Hopefully, XAF developers will find these new capabilities&amp;nbsp;sufficient to switch to Middle Tier Security as well.&lt;/p&gt;&lt;div class="Note"&gt;Early Access and CTP builds are provided solely for early testing purposes and are not ready for production use. This build can be installed side by side with other major versions of DevExpress products. Please backup your project and other important data before installing Early Access and CTP builds. This EAP may not include all features/products we expect to ship in our v24.1&amp;nbsp;release cycle. As its name implies, the EAP offers an early preview of what we expect to ship in two months.&lt;/div&gt;&lt;h2&gt;Your Feedback Matters!&lt;/h2&gt;&lt;p&gt;We recommend that you test the new features outlined in this post within Visual Studio 2022 using our&amp;nbsp;MainDemo.NET.EFCore&amp;nbsp;or MainDemo.NET.XPO demo (from &amp;quot;&lt;strong&gt;c:\Users\Public\Documents\DevExpress Demos 24.1\Components\XAF\&lt;/strong&gt;&amp;quot;). You can also test the EAP build with your real app, but please remember that this build is not ready for production code. We hope to keep you posted about remaining features from&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/xaf/archive/2024/01/31/xaf-v24-1-june-2024-roadmap-cross-platform-net-app-ui-blazor-winforms-and-web-api-service.aspx" target="_blank"&gt;our June 2024.1 roadmap&lt;/a&gt;&amp;nbsp;as&amp;nbsp; we get closer to official release (set for June 2024).&amp;nbsp;&lt;/p&gt;&lt;p&gt;We realize alpha/beta-testing is a time-consuming process and we are grateful to those who invest time with our EAP builds.&amp;nbsp;Find the current implementation lacking flexibility? Feel we&amp;#39;ve overlooked a valuable usage scenario? Does our current implementation fail to address your business requirements?&lt;/p&gt;&lt;p&gt;Please post your thoughts&amp;nbsp;in our roadmap survey&amp;nbsp;below OR&amp;nbsp;&lt;a href="https://www.devexpress.com/ask" target="_blank"&gt;create a Support Center ticket&lt;/a&gt;. We will happily follow up and do what we can to extend the capabilities of our new products/features.&lt;/p&gt;&lt;div data-survey-id="943f13d8-d694-4a4a-ae3e-93727ec38643" data-survey-auth-required="false"&gt;&lt;/div&gt;&lt;p&gt;Thanks,&lt;br /&gt;Dennis Garavsky&lt;br /&gt;Principal Product Manager&lt;br /&gt;&lt;a href="mailto:dennis@devexpress.com" title="Email me if you have questions or suggestions"&gt;dennis@devexpress.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;img src="https://community.devexpress.com/aggbug.aspx?PostID=388145" width="1" height="1"&gt;</description>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/XAF/default.aspx">XAF</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/XPO/default.aspx">XPO</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Usability/default.aspx">Usability</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/security/default.aspx">security</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Entity+Framework/default.aspx">Entity Framework</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/OData/default.aspx">OData</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/EF/default.aspx">EF</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/restful/default.aspx">restful</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/prerelease/default.aspx">prerelease</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/eap/default.aspx">eap</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/roadmap/default.aspx">roadmap</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/asp.net+Core/default.aspx">asp.net Core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/survey/default.aspx">survey</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.net+core/default.aspx">.net core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/blazor/default.aspx">blazor</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/EF+Core/default.aspx">EF Core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.net+6/default.aspx">.net 6</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/web+api/default.aspx">web api</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/REST/default.aspx">REST</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/OpenAPI/default.aspx">OpenAPI</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Swagger/default.aspx">Swagger</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.NET+8/default.aspx">.NET 8</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/v24.1/default.aspx">v24.1</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/2024/default.aspx">2024</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Non-Windows/default.aspx">Non-Windows</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/accessibility/default.aspx">accessibility</category>
        </item>
        <item>
            <title>XAF — World Training Tour by Xari to Master DevExpress .NET Application Framework</title>
            <link>https://community.devexpress.com/blogs/xaf/archive/2024/03/25/xaf-a-world-training-tour-by-xari-to-master-devexpress-xaf.aspx</link>
            <pubDate>Mon, 25 Mar 2024 00:06:00 GMT</pubDate>
            <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388125</guid>
            <dc:creator>Dennis Garavsky (DevExpress)</dc:creator>
            <slash:comments>0</slash:comments>
            <description>&lt;p&gt;Good news for those of you interested in &lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank"&gt;DevExpress XAF&lt;/a&gt; training.&lt;/p&gt;&lt;p&gt;Microsoft and DevExpress&amp;nbsp;MVPs, Jose Columbie of&amp;nbsp;&lt;a href="https://www.xari.io/our-services/#xaftraining" target="_blank"&gt;Xari.io&lt;/a&gt;&amp;nbsp;and&amp;nbsp;Joche&amp;nbsp;Ojeda of&amp;nbsp;&lt;a href="https://www.bitframeworks.com/" target="_blank"&gt;BitFrameworks.com&lt;/a&gt;&amp;nbsp;have organized a  world training tour for&amp;nbsp;DevExpress XAF (our Cross-Platform .NET App UI and Web API Service products). &lt;/p&gt;&lt;p&gt;For more information on Xari.io and their XAF training tour, visit: &lt;strong&gt;&lt;a href="https://xari.io/xaftraining/xari-xaf-training-tour/" target="_blank"&gt;https://xari.io/xaftraining/xari-xaf-training-tour/&lt;/a&gt;&lt;/strong&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/xaf-efcore-app-builder@2x[1].png" alt="" /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(51).png" data-comparer-theme="dark" data-label-before="XAF WinForms UI" data-label-after="XAF Blazor UI" data-before-src="https://community.devexpress.com/blogs/xaf/2023/MainDemo.Win_puxspk1tmk.png" data-comparer-position="80" alt="" style="width:2904px;height:1920px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;
&lt;div class="Note"&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/113577/getting-started" style="background-color:#ffff99;"&gt;Get&amp;nbsp;Started with XAF today&lt;/a&gt;&amp;nbsp;if you want to build Office-like line-of-business (LOB) apps powered by Blazor, WinForms, or WebForms much faster than using traditional approaches. Check out XAF&amp;#39;s demos in your DevExpress installation or online at&amp;nbsp;&lt;a href="https://demos.devexpress.com/xaf/blazordemo/" target="_blank"&gt;https://demos.devexpress.com/xaf/blazordemo/&lt;/a&gt;. You can learn more about&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank"&gt;XAF benefits here&lt;/a&gt;,&amp;nbsp;and our&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/xaf-considerations-for-newcomers.xml" target="_blank"&gt;Considerations for Newcomers&lt;/a&gt;&amp;nbsp;will help you understand whether this application framework is right for your business.&lt;/div&gt;

&lt;p&gt;Thanks,&lt;br /&gt;Dennis Garavsky&lt;br /&gt;Principal Product Manager&lt;br /&gt;&lt;a title="Email me if you have questions or suggestions" href="mailto:dennis@devexpress.com?subject=Feedback%20on%20XAF%20Experience"&gt;dennis@devexpress.com&lt;/a&gt;&lt;/p&gt;&lt;img src="https://community.devexpress.com/aggbug.aspx?PostID=388125" width="1" height="1"&gt;</description>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/XAF/default.aspx">XAF</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/XPO/default.aspx">XPO</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/security/default.aspx">security</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Entity+Framework/default.aspx">Entity Framework</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/training/default.aspx">training</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/education/default.aspx">education</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/asp.net+Core/default.aspx">asp.net Core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.net+core/default.aspx">.net core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/blazor/default.aspx">blazor</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/EF+Core/default.aspx">EF Core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.net+6/default.aspx">.net 6</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/web+api/default.aspx">web api</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.NET+8/default.aspx">.NET 8</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/v24.1/default.aspx">v24.1</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/2024/default.aspx">2024</category>
        </item>
        <item>
            <title>XAF v24.1 — June 2024 Roadmap (Cross-Platform .NET App UI &amp; Web API Service)</title>
            <link>https://community.devexpress.com/blogs/xaf/archive/2024/02/07/xaf-v24-1-june-2024-roadmap-cross-platform-net-app-ui-blazor-winforms-and-web-api-service.aspx</link>
            <pubDate>Wed, 07 Feb 2024 07:38:00 GMT</pubDate>
            <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388101</guid>
            <dc:creator>Dennis Garavsky (DevExpress)</dc:creator>
            <slash:comments>0</slash:comments>
            <description>&lt;h2&gt;&lt;span style="color:#ff0000;"&gt;UPDATE:&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.devexpress.com/subscriptions/new-2024-1.xml#xaf" target="_blank" style="color:#115bc0;"&gt;What&amp;#39;s New in XAF (v24.1)&lt;/a&gt;&amp;nbsp;- please vote in the survey&amp;nbsp;|&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/xaf/archive/2024/07/22/xaf-cross-platform-net-app-ui-and-web-api-service-year-end-roadmap-v24-2.aspx" target="_blank"&gt;Year-End Roadmap (v24.2)&lt;/a&gt;&lt;/h2&gt;
&lt;p&gt;---------&lt;/p&gt;&lt;p&gt;The following list outlines features/capabilities we expect ship for  XAF’s&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank"&gt;Cross-Platform .NET App UI&lt;/a&gt;&amp;nbsp;and the DevExpress&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/403394/backend-web-api-service" target="_blank"&gt;.NET App Security &amp;amp; Web API Service&lt;/a&gt;&amp;nbsp;(expected release date: June 2024). You can also test our Early Access Preview (EAP v24.1) live and share your feedback before June:&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/xaf/archive/2024/04/18/xaf-v24-1-eap-tabbed-mdi-grid-batch-edit-notifications-module-customization-form-and-accessibility-enhancements-for-blazor-ef-core-8-and-performance-enhancements.aspx" style="background-color:#ffff99;"&gt;XAF v24.1 EAP — Tabbed MDI, Batch Edit, Notifications, Customization Form and Accessibility for Blazor, EF Core 8 and Performance Boost for Middle Tier Server&lt;/a&gt;.&amp;nbsp;&lt;span&gt;We will outline&amp;nbsp;plans for our second major release of this year (expected release date: Dec 2024) in July.&amp;nbsp;&lt;/span&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Before I detail our roadmap, please take a moment to review&amp;nbsp;&lt;strong&gt;&lt;a href="https://www.devexpress.com/subscriptions/whats-new/#xaf" target="_blank"&gt;XAF&amp;#39;s What&amp;#39;s New v23.2&lt;/a&gt;&amp;nbsp;&lt;/strong&gt;and please submit feedback using&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;strong&gt;&lt;a href="https://www.devexpress.com/subscriptions/whats-new/#xaf-survey" target="_blank" style="background-color:#ffff99;"&gt;the related survey&lt;/a&gt;&lt;/strong&gt;. What&amp;#39;s New and roadmap survey feedback gives you the&amp;nbsp;opportunity to communicate your needs/concerns and allows us to make more informed development decisions. &amp;nbsp;As always, thanks to everyone who has already submitted feedback/suggestions.&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;&lt;div class="Note"&gt;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 blog post and the features/products listed within it are subject to change. You should not rely or use this information to help make a purchase decision about Developer Express Inc products.&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;h2&gt;ASP.NET Core Blazor UI&lt;/h2&gt;
&lt;p&gt;We expect to release the following XAF Blazor UI features/capabilities in our v24.1 release cycle (June 2024).&amp;nbsp;As you will see below, key focus areas will continue to remain Security, Blazor, and EF Core.&lt;/p&gt;
&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(51).png" data-comparer-theme="dark" data-label-before="XAF WinForms UI" data-label-after="XAF Blazor UI" data-before-src="https://community.devexpress.com/blogs/xaf/2023/MainDemo.Win_puxspk1tmk.png" data-comparer-position="80" alt="" style="width:2904px;height:1920px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;
&lt;h3&gt;Accessibility Enhancements and Keyboard Support&lt;/h3&gt;
&lt;p&gt;Currently, XAF (UI for ASP.NET Core Blazor, WinForms, and ASP.NET WebForms)&amp;nbsp;ships with partial accessibility support mirroring those found in&amp;nbsp;corresponding DevExpress UI controls across&amp;nbsp;respective UI platforms:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/Blazor/404749/common-concepts/accessibility"&gt;DevExpress ASP.NET Core Blazor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/WindowsForms/404293/build-an-application/accessibility"&gt;DevExpress WinForms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.devexpress.com/AspNet/5294/common-concepts/accessibility-support"&gt;DevExpress ASP.NET Web Forms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://js.devexpress.com/DevExtreme/23_2/Guide/Common/Accessibility/"&gt;DevExpress DevExtreme&lt;/a&gt;&amp;nbsp;(DevExtreme UI controls are used in XAF ASP.NET Core Blazor and ASP.NET Web Forms UI.)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;XAF Blazor also ships with its own set of UI components/elements that do not support accessibility and&amp;nbsp;have limited keyboard support.&amp;nbsp;XAF Blazor developers must&amp;nbsp;manually&amp;nbsp;customize  built-in HTML markup via the ComponentModel.SetAttribute() method (for property editors and action containers) to add required ARIA attributes.&lt;/p&gt;
&lt;p&gt;We expect to introduce accessibility-related enhancements for  unsupported XAF Blazor components throughout&amp;nbsp;2024. More information on accessibility will be forthcoming as we get closer to our mid-year release. &lt;/p&gt;&lt;p&gt;Our Blazor Grid&amp;#39;s keyboard navigation will also officially ship and be enabled by default.&amp;nbsp; See also the &amp;quot;&lt;em&gt;Keyboard Support&amp;quot;&lt;/em&gt; and &amp;quot;&lt;em&gt;Keyboard Support Enhancements and New Tab Navigation&lt;/em&gt;&amp;quot; sections in&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/aspnet/archive/2024/02/12/blazor-v24-1-roadmap.aspx"&gt;Blazor — June 2024 Roadmap (v24.1)&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;

&lt;h3&gt;Tabbed MDI Support&lt;/h3&gt;
&lt;p&gt;Tabbed MDI is a multiple document interface (MDI) UI metaphor found in many modern applications (including your favorite Web browser or Microsoft Outlook Web). It is a robust interface that maximizes document screen real estate, especially when working with multiple&amp;nbsp;documents, email messages, etc.&lt;/p&gt;
&lt;p&gt;Tabbed MDI is enabled in XAF WinForms apps by default, and&amp;nbsp;XAF Blazor will provide a similar user experience in v24.1 (hopefully with an EAP in v23.2).&lt;/p&gt;&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/2024/tabbed-mdi-on-desktop.png" alt="" style="width:1560px;height:971px;" /&gt;&lt;/p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/2024/tabbed-mdi-on-mobile.gif" alt="" style="width:401px;height:823px;" class="small" /&gt;&lt;h3&gt;Add New&amp;nbsp;Fields into the Customization Form of the Grid and&amp;nbsp;Layout Controls at Runtime&lt;/h3&gt;
&lt;p&gt;XAF WinForms apps include an&amp;nbsp;Object Model dialog. With it, end-users can tick or untick data model fields (including sub-fields and collections), which are not yet displayed in the grid or layout control (as part of the Column Chooser or Customization Form).&lt;/p&gt;
&lt;p&gt;Much like  Microsoft Office apps, this capability allows users to fully customize&amp;nbsp;list and detail forms&amp;nbsp;(based on the structure of a data model). Again, this is helpful when developers need to address&amp;nbsp;changes to business requirements without&amp;nbsp;redeployment.&lt;/p&gt;
&lt;p&gt;XAF Blazor will provide a similar experience for both ListView and DetailView&amp;nbsp;in v24.1&amp;nbsp;(hopefully with an EAP in v23.2).&lt;/p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/2024/object-model.png" alt="" style="width:1560px;height:947px;" /&gt;

&lt;h3&gt;Notifications&amp;nbsp;Module&lt;/h3&gt;
&lt;p&gt;XAF Blazor v24.1 will support our&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/113690/event-planning-and-notifications/notifications/notifications-module-overview" target="_blank"&gt;Notifications Module&lt;/a&gt;. The module allows&amp;nbsp;you to display reminders for scheduler appointments or any custom objects (such as tasks). The detail form for&amp;nbsp;a&amp;nbsp;scheduler appointment/event&amp;nbsp;will also allow you to configure&amp;nbsp;reminders like those available in Microsoft Outlook. With the help of the Notifications Module, your&amp;nbsp;app can&amp;nbsp;display a popup window before  appointment/event start times.&lt;/p&gt;&lt;p&gt;NOTE:&amp;nbsp;&lt;span&gt;our Notifications module does not have to be bound to the Scheduler module: it can display notifications that originate&amp;nbsp;from anywhere. In the latter instance, your goal as a developer is to provide the notifications service with notification items and the service will process them as required.&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/2024/notification-module.png" alt="" style="width:550px;height:300px;" class="small" /&gt;
&lt;h3&gt;Scheduler Module - Shared/Multiple Resources&lt;/h3&gt;
&lt;p&gt;If the underlying Blazor scheduler component (&lt;a href="https://docs.devexpress.com/Blazor/DevExpress.Blazor.DxScheduler" target="_blank"&gt;DxScheduler&lt;/a&gt;) supports multiple resources for a scheduler appointment/event in v24.1 (see the &amp;quot;&lt;em&gt;Multiple Resources (Resource Sharing)&lt;/em&gt;&amp;quot; section in &lt;a href="https://community.devexpress.com/blogs/aspnet/archive/2024/02/12/blazor-v24-1-roadmap.aspx"&gt;Blazor — June 2024 Roadmap (v24.1)&lt;/a&gt;), XAF Blazor Scheduler module will allow&amp;nbsp;you to use shared resources as well. Currently, only a single resource is allowed in DxScheduler, and XAF displays a validation error message when you attempt to link multiple resources to an appointment.&lt;/p&gt;
&lt;h3&gt;Batch / Cell Edit&amp;nbsp;in Grid List&amp;nbsp;Editor&lt;/h3&gt;
&lt;p&gt;The underlying Blazor Grid component&amp;nbsp;(&lt;a href="https://docs.devexpress.com/Blazor/DevExpress.Blazor.DxGrid.EditMode#edit-cell-ctp" target="_blank"&gt;DxGrid&lt;/a&gt;) used by XAF Blazor now includes&amp;nbsp;batch and&amp;nbsp;cell edit support (&lt;a href="https://demos.devexpress.com/blazor/Grid/EditData/EditBatch" target="_blank"&gt;Online Demo&lt;/a&gt;). At present, XAF Blazor developers must&amp;nbsp;manually enable this option&amp;nbsp;(&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1206051/is-available-batch-editing-for-blazor-in-xaf-apps#e90097cf-624b-4129-a109-2adb97a38078" target="_blank"&gt;learn more&lt;/a&gt;). Batch Edit support will officially ship in XAF Blazor v24.1 via a single option (&lt;a href="https://docs.devexpress.com/eXpressAppFramework/113249/ui-construction/views/list-view-edit-modes#in-place-editing-customization-the-inlineeditmode-property" target="_blank"&gt;InlineEditMode = Batch&lt;/a&gt;) much like its XAF WebForms counterpart.&lt;/p&gt;
&lt;h3&gt;Best Fit in Grid List Editor&lt;/h3&gt;
&lt;p&gt;As you probably know, the underlying Blazor Grid used by XAF Blazor can automatically adjust column width&amp;nbsp;to fit actual cell content (&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1099604/blazor-how-to-use-columnresizemode-nextcolumn-and-apply-model-columns-width-in-percents" target="_blank"&gt;using the AutoFitColumnWidths method&lt;/a&gt;).&amp;nbsp;We have not enabled this behavior in XAF Blazor by default, because of conflicting interests of various user groups:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Some of XAF Blazor users wanted to have a Best Fit item in the context menu to apply Best Fit.&lt;/li&gt;
&lt;li&gt;Others did not like this behavior and wanted to specify column width in percentages (%) instead of pixels using the Model Editor.&lt;/li&gt;
&lt;li&gt;And a handful of our customers&amp;nbsp;wanted to specify&amp;nbsp;minimal default column width (120px or so) and did not want to deal with column width whatsoever, preferring to optionally resize columns at runtime, when necessary.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want to improve  current &amp;#39;status quo&amp;#39; behavior in v24.1, we kindly ask you to voice your opinion&amp;nbsp;&lt;strong&gt;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1099604/blazor-how-to-use-columnresizemode-nextcolumn-and-apply-model-columns-width-in-percents" target="_blank" style="background-color:#ffff99;"&gt;in the comments for&amp;nbsp;this Support Center ticket&lt;/a&gt;&lt;/strong&gt;, and describe your  expectations&amp;nbsp;for each  use-case scenario (both design-time and runtime ListView configuration). Feel free to share screenshots and  specific/actionable information. Please avoid posting &amp;quot;+1&amp;quot; or generic&amp;nbsp;information, because it will not help us develop&amp;nbsp;consensus or create the best possible solution to fully address the needs of the&amp;nbsp;majority position.&lt;/p&gt;&lt;h3&gt;Export Data from Grid List Editor to Excel when DataAccessMode = Server&amp;nbsp;&lt;/h3&gt;&lt;div&gt;Our Blazor Components v24.1 (&lt;a href="https://community.devexpress.com/blogs/aspnet/archive/2024/02/12/blazor-v24-1-roadmap.aspx" target="_blank"&gt;see their v24.1 roadmap separately&lt;/a&gt;)&amp;nbsp;will support Excel export functionality for grids bound to server-side data (for both EF Core and XPO ORM). To export data to Excel, the DevExpress Blazor Grid will display a loading indicator and download all records from a data source.&lt;/div&gt;
&lt;h3&gt;Simplified Creation of Custom Blazor Property and List Editors&lt;/h3&gt;
&lt;p&gt;Currently, XAF Blazor developers must create intermediate &lt;a href="https://docs.devexpress.com/eXpressAppFramework/402189/ui-construction/view-items-and-property-editors/property-editors/implement-a-property-editor-based-on-custom-components-blazor#component-adapter" target="_blank"&gt;Component Adapter, Renderer and other boilerplate classes&lt;/a&gt;. In v24.1, we want to reduce&amp;nbsp;boilerplate code for many popular scenarios, and make it possible to create custom Property Editors much like XAF WinForms. Our newest &lt;a href="https://github.com/DevExpress-Examples/xaf-create-multitenant-application" target="_blank"&gt;Outlook Inspired Demo app&lt;/a&gt;&amp;nbsp;contains many custom Property and List Editors, and it will be a good source of UX validation/comparison between v23.2 and v24.1 - please stay tuned.&lt;/p&gt;
&lt;h3&gt;Migration to the Native Blazor Report Viewer&lt;/h3&gt;
&lt;p&gt;In v24.1, XAF&amp;#39;s&amp;nbsp;Blazor Reporting Module will migrate from a JavaScript-based Report Viewer (&lt;a href="https://docs.devexpress.com/XtraReports/DevExpress.Blazor.Reporting.DxDocumentViewer" target="_blank"&gt;DxDocumentViewer&lt;/a&gt;) to the native Report Viewer for Blazor Server apps (&lt;a href="https://docs.devexpress.com/XtraReports/403594/web-reporting/blazor-reporting/server/blazor-report-viewer-native" target="_blank"&gt;DxReportViewer&lt;/a&gt;). We are kind of fixing a technical debt here, because the native report viewer &lt;a href="https://community.devexpress.com/blogs/reporting/archive/2021/07/27/reporting-new-native-report-viewer-for-blazor-server-available-in-v21-1.aspx" target="_blank"&gt;was introduced in 2021&lt;/a&gt;, and has a number of benefits for XAF Blazor developers:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;Support of &lt;a href="https://docs.devexpress.com/Blazor/401784/styling-and-themes/size-modes" target="_blank"&gt;Size Modes&lt;/a&gt; and all &lt;a href="https://docs.devexpress.com/Blazor/401523/styling-and-themes/themes" target="_blank"&gt;Blazor themes&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;Easier customization without JS using pure C#&lt;/li&gt;&lt;li&gt;Improved performance: Native implementation reduces load time and increases page navigation speed when compared to JavaScript wrapper based reporting tools.&lt;/li&gt;&lt;/ul&gt;&lt;h3&gt;And Much More...&lt;/h3&gt;&lt;p&gt;For even more enhancements in XAF Blazor UI, please check out&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/aspnet/archive/2024/02/12/blazor-v24-1-roadmap.aspx"&gt;Blazor — June 2024 Roadmap (v24.1)&lt;/a&gt;&amp;nbsp;- many of these component features will be available in XAF Blazor automatically.&lt;/p&gt;
&lt;h2&gt;Security Enhancements&lt;/h2&gt;
&lt;h3&gt;Single Sign-On (SSO) Support&lt;/h3&gt;
&lt;p&gt;Today, modern XAF Blazor and WinForms apps are integrated with many external&amp;nbsp;systems within organizations. For instance, if an organization uses&amp;nbsp;Microsoft 365, XAF apps are often available at &lt;a href="https://myapps.microsoft.com/" target="_blank"&gt;https://myapps.microsoft.com/&lt;/a&gt;&amp;nbsp;among many other apps within this organization.&amp;nbsp;Since XAF Blazor and WinForms&amp;nbsp;.NET 6+ apps (both XPO and EF Core-based) support Microsoft Entra ID and other &lt;a href="https://docs.devexpress.com/eXpressAppFramework/404648/data-security-and-safety/security-system/authentication/oauth-and-custom-authentication" target="_blank"&gt;OAuth2 providers&lt;/a&gt;,  organizations want/prefer XAF apps to share the same login details or authentication cookies&amp;nbsp;with  existing systems/services such as Microsoft Entra Single Sign-On (SSO). In v24.1, XAF apps will support SSO natively.&lt;/p&gt;
&lt;p&gt;Said differently, organizations require the following: When a user is already authenticated within the&amp;nbsp;organization (for instance, using Microsoft 365), XAF apps must seamlessly work with&amp;nbsp;SSO. Currently, XAF developers have to&amp;nbsp;implement custom solutions to modify&amp;nbsp;XAF’s login form&amp;nbsp;and authentication behavior to support&amp;nbsp;SSO. Important SSO scenarios include, but are not limited to the following:&lt;/p&gt;
&lt;div&gt;
&lt;ol&gt;
&lt;li&gt;If a user is NOT logged in within the organization, then XAF apps display a standard OAuth2/SSO provider logon form (just like Teams, Word or Outlook normally does for Microsoft 365). If a user was forced to sign out by administrators, then XAF apps&amp;nbsp;should display the standard logon form as well.&lt;/li&gt;
&lt;li&gt;If a user is logged in within the organization (it can be another non-XAF app), then no&amp;nbsp;XAF login form is displayed for the&amp;nbsp;user and focus moves&amp;nbsp;directly to the XAF app UI&amp;nbsp;(by a link from an organization&amp;#39;s `Apps dashboard` or via other methods). The&amp;nbsp;logon procedure in an XAF app proceeds automatically behind the scenes (via API calls). XAF users should NOT be forced to explicitly press the “Login with Microsoft” in this instance, because SSO will &amp;quot;just work&amp;quot; as expected.&lt;/li&gt;
&lt;li&gt;If a user within the organization needs to undergo additional security checks after a user is already logged on (for instance, reconfirm  MFA information via the&amp;nbsp;phone after 30-60 days), then XAF apps must provide a clear and understandable standard OAuth2 provider UI and disallow any operations within XAF UI.&amp;nbsp;For instance, Teams, Word or Outlook display modal dialogs to reconfirm your login details, before users can access and use these Microsoft 365 apps again.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;h3&gt;Support of ASP.NET Core Identity and Other External Permission Providers and Storages&lt;/h3&gt;
&lt;p dir="auto"&gt;With v24.1, you can enable  standard&amp;nbsp;&lt;a title="‌" href="https://learn.microsoft.com/en-us/aspnet/core/security/authentication/identity?view=aspnetcore-8.0&amp;amp;tabs=visual-studio" target="_blank" rel="noreferrer ugc nofollow"&gt;ASP.NET Core Identity&lt;/a&gt;&amp;nbsp;framework capabilities in your XAF Blazor and WinForms apps powered by .NET 6+ and Entity Framework Core. This includes&amp;nbsp;seamless integration of&amp;nbsp;Microsoft.AspNetCore.Identity.EntityFrameworkCore&amp;nbsp;and database-specific Identity packages like&amp;nbsp;Microsoft.EntityFrameworkCore.SqlServer.&lt;/p&gt;
&lt;p dir="auto"&gt;If you enable this opt-in feature in XAF’s Solution Wizard, your XAF project will generate&amp;nbsp;`&lt;em&gt;public class ApplicationUser : IdentityUser { /*...* /}&lt;/em&gt;` along with a preconfigured DbContext - both are&amp;nbsp;integrated with XAF’s security system for authentication and authorization (role-based access control or RBAC). The link between XAF’s RBAC (&lt;a title="‌" href="https://docs.devexpress.com/eXpressAppFramework/404633/data-security-and-safety/security-system/security-object-model/type-object-and-member-permissions" target="_blank" rel="noreferrer ugc nofollow"&gt;type, record, and field-level permissions&lt;/a&gt;) is established through the generic&amp;nbsp;&lt;a title="‌" href="https://learn.microsoft.com/en-us/aspnet/core/security/authentication/customize-identity-model?view=aspnetcore-8.0#model-generic-types" target="_blank" rel="noreferrer ugc nofollow"&gt;IdentityRole&lt;/a&gt;&amp;nbsp;and other EF Core data model classes, which are parts of the Identity data model. This Identity data model is mapped to the underlying databases with EF Core.&lt;/p&gt;
&lt;p dir="auto"&gt;In addition to the Identity model and database storage, XAF customers will experience the following benefits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Automatically access all  standard Identity features such as Single Sign On (SSO), endpoints to register new users (&lt;a title="‌" href="https://devblogs.microsoft.com/dotnet/whats-new-with-identity-in-dotnet-8/" target="_blank" rel="noreferrer ugc nofollow"&gt;example&lt;/a&gt;), restore password, and other&amp;nbsp;Microsoft implementations (or future .NET implementations).&amp;nbsp;&lt;/li&gt;
&lt;li&gt;XAF-specific permissions are serialized as JSON, and are stored in  IdentityRole-related tables. For advanced scenarios, XAF developers can implement a custom permission provider, for instance, to synchronize user permissions and roles with an external service instead of the Identity database (technically you  need to pass JSON between your XAF app and external endpoints).&lt;/li&gt;
&lt;li&gt;The amount of security configuration code in your XAF project will also be minimized:&amp;nbsp;&lt;code&gt;builder.Services.AddIdentityCore&amp;lt;ApplicationUser&amp;gt;() .AddEntityFrameworkStores&amp;lt;AppDbContext&amp;gt;() .AddApiEndpoints();&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;If you already have external projects, which used EF Core and Identity, then XAF’s integration will become much easier as well. It will be easier to add developers to an XAF-powered project&amp;nbsp;as well, because EF Core and&amp;nbsp;&lt;a title="‌" href="http://asp.net/" target="_blank" rel="noreferrer ugc nofollow"&gt;ASP.NET&lt;/a&gt;&amp;nbsp;Core Identity frameworks are used by millions of .NET developers.&lt;/li&gt;
&lt;li&gt;XAF will continue generating its standard logon and CRUD UI screens for  Identity users and roles, and allow you to edit XAF’s permissions for these roles.&lt;/li&gt;
&lt;li&gt;You can also refer to your ApplicationUser class in other data models (for instance, to implement the CreatedBy or ModifiedBy properties). Standard criteria functions such as&amp;nbsp;&lt;a title="‌" href="https://docs.devexpress.com/eXpressAppFramework/113307/filtering/in-list-view/function-criteria-operators" target="_blank" rel="noreferrer ugc nofollow"&gt;CurrentUserId, IsUserInRole&lt;/a&gt;&amp;nbsp;and others will function as well.&lt;/li&gt;
&lt;/ul&gt;
&lt;img src="https://community.devexpress.com:443/blogs/xaf/2024/identity-efcore.png" alt="small" style="width:352px;height:567px;" class="small" /&gt;
&lt;h3&gt;Middle Tier Security for WinForms Apps: Multi-Tenancy and OAuth2 Support&amp;nbsp;&lt;/h3&gt;
&lt;p&gt;In v24.1, XAF WinForms apps (.NET 6+)&amp;nbsp;with Middle Tier Security will natively support &lt;a href="https://docs.devexpress.com/eXpressAppFramework/404648/data-security-and-safety/security-system/authentication/oauth-and-custom-authentication" target="_blank"&gt;OAuth2 providers&lt;/a&gt; and &lt;a href="https://docs.devexpress.com/eXpressAppFramework/404436/multitenancy" target="_blank"&gt;Multi-Tenancy&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;As we described in our&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/404691/security-considerations/general-security-considerations#data-store-protection" target="_blank"&gt;Security Considerations&lt;/a&gt;&amp;nbsp;document,&amp;nbsp;Windows desktop apps can better meet enterprise security standards with our Middle Tier application server. With our solution, EF Core or XPO developers can retain their standard DbContext or Session and initiate remote connections to a data store from any .NET client (like XAF WinForms or non-XAF apps). This capability is critical within certain environments/business apps (those that cannot maintain direct database connections because of security considerations).&lt;/p&gt;&lt;p&gt;I want to stress an important point: Non-XAF EF Core&amp;nbsp;or XPO developers can benefit from our Middle Tier application server and&amp;nbsp;preserve&amp;nbsp;DbContext or Session with their entity data model (&lt;a href="https://docs.devexpress.com/eXpressAppFramework/404398/data-security-and-safety/security-system/security-tiers/middle-tier-security-ef-core/connect-to-the-efcore-middle-tier-service-from-non-xaf-applications" target="_blank"&gt;learn more&lt;/a&gt;).&amp;nbsp;&lt;strong&gt;This is especially critical&amp;nbsp;for many desktop .NET developers (WinForms, WPF, WinUI, etc.), who are now required to&amp;nbsp;meet higher security standards.&amp;nbsp;&lt;/strong&gt;In a nutshell, these developers need to either retrofit/modernize their &amp;quot;fat clients&amp;quot; for Windows (#1)&amp;nbsp;or redo everything from scratch&amp;nbsp;using modern Web technologies and Cloud services (#2).&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;Our Middle Tier Security allows you to choose the&amp;nbsp;&amp;quot;easier&amp;quot; and potentially more&amp;nbsp;reliable route (#1), and to &amp;quot;replace&amp;quot;&amp;nbsp;direct database connections with middleware. Review the following code snippet for more information in this regard:&lt;/p&gt;
&lt;pre&gt;&lt;code class="language-csharp" data-line="3-4, 8"&gt;var httpRemoteRepository = new HttpRemoteRepository(httpClient, typeof(EFCoreDbContext).FullName);
var optionsBuilder = new DbContextOptionsBuilder&amp;lt;EFCoreDbContext&amp;gt;();
optionsBuilder.UseMiddleTier(opt =&amp;gt;
    opt.UseRemoteRepository(httpRemoteRepository));
optionsBuilder.UseChangeTrackingProxies();
optionsBuilder.UseLazyLoadingProxies();
var dbContextOptions = optionsBuilder.Options;
var dbContext = new EFCoreDbContext(dbContextOptions);
var users = dbContext.Employees.ToList();&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Middle Tier Security for WinForms Apps:&amp;nbsp;&lt;span&gt;Enhanced Performance and Usability&lt;/span&gt;&lt;/h3&gt;&lt;p&gt;XAF WinForms with Middle Tier Security will execute much faster in v24.1&amp;nbsp;(we will share exact numbers close to the official release in June). &lt;/p&gt;&lt;p&gt;In addition, it will now be possible to call the new SetPropertyValueWithBypassSecurity method&amp;nbsp;from within your BaseObject descendants  to bypass security checks for certain protected properties in  your internal application logic (custom base classes are also supported). &lt;/p&gt;&lt;p&gt;This capability is especially valuable to XAF developers when you wish to set service&amp;nbsp;properties like CreatedBy, ModifiedBy, CreatedOn, UpdatedOn, etc. - our Audit Trail and Model Difference modules operate using a similar mechanism.&amp;nbsp;The&amp;nbsp;SetPropertyValueWithBypassSecurity method can freely set protected properties on behalf of a restricted/regular user in code&amp;nbsp;much like an application administrator - without having to know admin&amp;nbsp;credentials &lt;span&gt;(like impersonation for service tasks)&lt;/span&gt;.&lt;/p&gt;&lt;pre&gt;&lt;code class="language-csharp"&gt;public override void OnSaving() {
    if (ObjectSpace.IsNewObject(this)) {
        SetPropertyValueWithBypassSecurity(nameof(CreatedBy), GetCurrentUser());
    }
    else {
        SetPropertyValueWithBypassSecurity(nameof(UpdatedBy), GetCurrentUser());
        SetPropertyValueWithBypassSecurity(nameof(UpdatedOn), DateTime.Now);
    }
    if (!IsRunningOnMiddleTierServer()) {
        // ...
    }
}&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;span&gt;As you probably know, this is &lt;a href="https://supportcenter.devexpress.com/ticket/details/q359904/securitystrategycomplex-how-to-modify-objects-properties-in-code-when-the-user-does-not" target="_blank"&gt;a long-requested option&lt;/a&gt; for many XAFers - an option that prevented full&amp;nbsp;migration  from Integrated Mode to Middle Tier Security  (&lt;/span&gt;&lt;span&gt;because&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/DevExpress.EntityFrameworkCore.Security.SecuredEFCoreObjectSpaceProvider-1.CreateNonsecuredObjectSpace?p=net6" target="_blank"&gt;CreateNonsecuredObjectSpace&lt;/a&gt;&lt;span&gt;&amp;nbsp;and other workarounds were inconvenient). The&amp;nbsp;SetPropertyValueWithBypassSecurity also includes certain limitations like&amp;nbsp;calling this method is only supported from inside BaseObject.OnSaving (for the best security) or the bypassed property  cannot update other protected properties internally. We are of the opinion that this new option will cover 80% of popular use-cases. Along with associated performance enhancements, t&lt;/span&gt;his was&amp;nbsp;the last step before we could enable Middle Tier Security in XAF WinForms apps in the Solution Wizard by default.&amp;nbsp;Hopefully, XAF developers will find these new capabilities&amp;nbsp;sufficient to switch to Middle Tier Security as well.&lt;/p&gt;&lt;h2&gt;Cross-Platform Enhancements&lt;/h2&gt;&lt;p&gt;Before I move onto cross-platform enhancements, a quick reminder…XAF is fully extendable framework/constructor. You can incorporate Blazor and DevExtreme UI components, and by extension, customize XAF’s default UI today:&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/403277/support-qa-troubleshooting/frequently-asked-questions-blazor-faq" target="_blank"&gt;Blazor UI (FAQ)&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/xaf-considerations-for-newcomers.xml#advanced-ui-customization" target="_blank"&gt;More customization tips&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;h3&gt;Command Line Interface (CLI) Solution Wizard Templates&amp;nbsp;&lt;/h3&gt;&lt;p&gt;XAF v24.1 will allow you to use the&amp;nbsp;&lt;a href="https://learn.microsoft.com/en-us/dotnet/core/tools/" target="_blank"&gt;.NET command line interface (CLI)&lt;/a&gt;&amp;nbsp;or the `dotnet` tool to quickly&amp;nbsp;create XAF Blazor and WinForms apps from the console (without using XAF&amp;#39;s Solution Wizard). This will be similar to the DevExpress Reports implementation:&amp;nbsp;&lt;a href="https://docs.devexpress.com/XtraReports/404160/web-reporting/blazor-reporting/get-started/use-cli-templates"&gt;Use .NET CLI Templates&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;This capability will be valuable for XAF developers using Microsoft Visual Studio Code (VS Code) or JetBrains Rider&amp;nbsp;in both Windows and non-Windows development environments (like Linux or MacOS). Previously, these users had to first create XAF projects in Visual Studio for Windows using the Solution Wizard.&lt;/p&gt;&lt;p&gt;Since you will be able to&amp;nbsp;create and modify&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/reporting/archive/2023/10/30/reporting-create-and-modify-devexpress-reports-in-vscode-on-macos-and-linux-ctp.aspx" target="_blank"&gt;DevExpress Reports in VS Code&amp;nbsp;on macOS and Linux&lt;/a&gt;, the only missing puzzle for non-Windows XAF development is a convenient way to modify the Application Model. While the Model Editor is available only in Visual Studio for Windows, plenty of&amp;nbsp;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1206756/xaf-linux-mac-development-support" target="_blank"&gt;code-based options&lt;/a&gt;&amp;nbsp;exist and&amp;nbsp;are actively&amp;nbsp;used by some XAF developers. Notwithstanding the visual capabilities of the Model Editor, XAF Blazor UI also includes great runtime customization capabilities much like in XAF WinForms. These capabilities address&amp;nbsp;many popular Application Model customization&amp;nbsp;scenarios. For more information, refer to the following post:&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/xaf/archive/2023/12/28/xaf-blazor-2023-highlights-5-unique-web-features-that-rival-powerful-windows-desktop-solutions.aspx" target="_blank"&gt;XAF (Blazor UI) 2023 Highlights — 5 Unique Web Features Designed to Rival Windows Desktop Solutions&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;h3&gt;Automatic Code Error Diagnostics&lt;/h3&gt;&lt;p&gt;We expect to add 5-10 new automatic&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/403389/debugging-testing-and-error-handling/code-diagnostics" target="_blank"&gt;Code Diagnostics&lt;/a&gt;.&amp;nbsp;We hope this will save you time in Visual Studio or validate build quality using internal CI/CD workflows. If you have not yet enabled these pre-built code &amp;amp; project error diagnostics, we strongly recommend that you do so for your .NET 6+ projects.&lt;/p&gt;&lt;h3&gt;Web API Service&amp;nbsp;for XAF &amp;amp; Non-XAF UI Clients (Powered by EF Core &amp;amp; XPO ORM)&lt;/h3&gt;&lt;p&gt;In v24.1, our Web API Service will support&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/404436/multitenancy" target="_blank"&gt;Multi-Tenancy&lt;/a&gt;&amp;nbsp;for both EF Core and XPO ORM.&lt;/p&gt;&lt;p&gt;As you may already know, we officially released our&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/403394/backend-web-api-service" target="_blank"&gt;Backend Web API Service&lt;/a&gt;&amp;nbsp;in mid-2022 and have enhanced&amp;nbsp;its capabilities and docs ever since. Our Web API Service has both&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/security-web-api-service.xml" target="_blank"&gt;FREE (basic&amp;nbsp;CRUD)&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/404176/backend-web-api-service/obtain-a-report-from-a-web-api-controller-endpoint" target="_blank"&gt;paid features&lt;/a&gt;&amp;nbsp;(such as reporting,&amp;nbsp;audit trail, validation, file attachments, localization, etc). We also distribute many demo applications illustrating the use of free and paid APIs with&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/news/archive/2023/03/29/authorize-ef-core-crud-operations-and-download-reports-in-net-maui-with-odata-web-api.aspx" target="_blank"&gt;.NET MAUI&lt;/a&gt;,&amp;nbsp;&lt;a href="https://www.devexpress.com/go/XAF_Security_NonXAF_Blazor_WebAssembly.aspx" target="_blank"&gt;Blazor WebAssembly&lt;/a&gt;,&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/news/archive/2023/04/11/consume-the-devexpress-backend-web-api-from-javascript-with-svelte-part-1.aspx" target="_blank"&gt;JavaScript&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://go.devexpress.com/XAF_Security_NonXAF_Series.aspx" target="_blank"&gt;even more&lt;/a&gt;&amp;nbsp;(by paid features, I simply mean you must own a DevExpress Universal Subscription license).&lt;/p&gt;&lt;p&gt;To learn more about our Web API Service and determine whether it can be of value within your organization, please review the following blog post:&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/news/archive/2022/10/17/common-questions-about-the-new-devexpress-web-api-service-powered-by-entity-framework-and-xpo-orm.aspx"&gt;Common Questions about the New DevExpress Web API Service (powered by Entity Framework and XPO ORM)&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;Entity Framework Core 8&lt;/h3&gt;&lt;p&gt;EF Core 8 support will officially ship in&amp;nbsp;&lt;strong&gt;v24.1&amp;nbsp;&lt;/strong&gt;for&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank"&gt;XAF&lt;/a&gt;&amp;nbsp;and associated&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/403394/backend-web-api-service"&gt;Backend Web API Service&lt;/a&gt;. EF Core 8&amp;nbsp;is the latest version of Entity Framework.&lt;/p&gt;&lt;p&gt;While EF Core 8&amp;nbsp;offers numerous advantages over its predecessor (performance and customization included), it also introduced a series of&amp;nbsp;breaking changes&amp;nbsp;that we will need to address. To solicit feedback before official release in 4 months, we intentionally added preview (CTP) support of EF Core 8&amp;nbsp;in&amp;nbsp;&lt;strong&gt;v23.2.4+&lt;/strong&gt;.&amp;nbsp;&lt;/p&gt;&lt;p&gt;For more information about recent EF Core updates, refer to the following Microsoft document:&amp;nbsp;&lt;a href="https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-8.0/whatsnew" target="_blank"&gt;What&amp;#39;s New in EF Core 8&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-8.0/breaking-changes" target="_blank"&gt;EF Core 8 Breaking Changes&lt;/a&gt;&amp;nbsp;|&amp;nbsp;&lt;a href="https://github.com/DevExpress-Examples/XAF_Security_E4908/tree/24.1.1%2B/Benchmarks" target="_blank"&gt;Performance Benchmarks for EF Core 8 vs XPO ORM&lt;/a&gt;.&lt;/p&gt;&lt;h3&gt;Support of New .NET DateOnly and TimeOnly Types for Entity Framework&amp;nbsp;Core 8 and Blazor/WinForms UI&lt;/h3&gt;&lt;p&gt;As you probably read in the EF Core 8 breaking changes above,&amp;nbsp;&lt;a href="https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-8.0/breaking-changes#sqlserver-date-time-only" target="_blank"&gt;SQL Server date and time now scaffold to .NET DateOnly and TimeOnly&lt;/a&gt;. XAF Blazor and WinForms apps for .NET 6+ will update associated Date and Time Property Editors to support the new .NET types accordingly. The underlying Blazor and WinForms grid components will support operations with DateOnly/TimeOnly (sorting, grouping, filtering, etc.) - as will Criteria Language, Server Mode, and other underlying data access components for EF Core.&lt;/p&gt;&lt;h3&gt;Cascade Deletion for Aggregated One-to-Many Collections in EF Core&lt;/h3&gt;&lt;p&gt;With v24.1, XAF&amp;#39;s Solution Wizard will include&amp;nbsp;`&lt;em&gt;modelBuilder.SetOneToManyAssociationDeleteBehavior(DeleteBehavior.SetNull, DeleteBehavior.Cascade);&lt;/em&gt;` in the OnModelCreating method of EF Core-based apps. This code will&amp;nbsp;configure&amp;nbsp;DeleteBehavior.SetNull for non-aggregated One-to-Many associations and DeleteBehavior.Cascade for aggregated One-to-Many associations respectively. Previously, XAF&amp;#39;s Aggregated attribute was not considered by EF Core as it was for XPO ORM (and there might be exceptions in certain ListView scenarios).&lt;/p&gt;&lt;h2&gt;Your Feedback Matters&lt;/h2&gt;&lt;p&gt;Just another reminder that our Roadmap v24.1,&amp;nbsp;&lt;span&gt;&lt;a href="https://www.devexpress.com/subscriptions/whats-new/#xaf-survey" target="_blank" style="background-color:#ffff99;"&gt;What&amp;#39;s New v23.2&lt;/a&gt;, and other surveys give&amp;nbsp;you the&amp;nbsp;opportunity to communicate your needs/concerns and allow&amp;nbsp;us to make more informed development decisions.&lt;/span&gt;&lt;/p&gt;&lt;div data-survey-id="943f13d8-d694-4a4a-ae3e-93727ec38643" data-survey-auth-required="false"&gt;&lt;/div&gt;&lt;p&gt;Thanks,&lt;br /&gt;Dennis Garavsky&lt;br /&gt;Principal Product Manager&lt;br /&gt;&lt;a href="mailto:dennis@devexpress.com" title="Email me if you have questions or suggestions"&gt;dennis@devexpress.com&lt;/a&gt;&lt;/p&gt;&lt;img src="https://community.devexpress.com/aggbug.aspx?PostID=388101" width="1" height="1"&gt;</description>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/XAF/default.aspx">XAF</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/XPO/default.aspx">XPO</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Usability/default.aspx">Usability</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/security/default.aspx">security</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Entity+Framework/default.aspx">Entity Framework</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/OData/default.aspx">OData</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/EF/default.aspx">EF</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/restful/default.aspx">restful</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/roadmap/default.aspx">roadmap</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/asp.net+Core/default.aspx">asp.net Core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/survey/default.aspx">survey</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.net+core/default.aspx">.net core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/blazor/default.aspx">blazor</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/EF+Core/default.aspx">EF Core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.net+6/default.aspx">.net 6</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/web+api/default.aspx">web api</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/REST/default.aspx">REST</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/OpenAPI/default.aspx">OpenAPI</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Swagger/default.aspx">Swagger</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.NET+8/default.aspx">.NET 8</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/v24.1/default.aspx">v24.1</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/2024/default.aspx">2024</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Non-Windows/default.aspx">Non-Windows</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/accessibility/default.aspx">accessibility</category>
        </item>
        <item>
            <title>XAF — Entity Framework Core 8 Support and Updated Performance Benchmarks for .NET 8</title>
            <link>https://community.devexpress.com/blogs/xaf/archive/2024/02/02/xaf-cross-platform-net-app-ui-amp-web-api-entity-framework-core-8-support-and-updated-performance-benchmarks-for-net-8.aspx</link>
            <pubDate>Fri, 02 Feb 2024 21:56:00 GMT</pubDate>
            <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388102</guid>
            <dc:creator>Dennis Garavsky (DevExpress)</dc:creator>
            <slash:comments>0</slash:comments>
            <description>&lt;p&gt;Great news for customers using Entity Framework Core (EF Core): &lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank"&gt;XAF&lt;/a&gt; &lt;strong&gt;v23.2.4+&lt;/strong&gt; and associated &lt;a href="https://docs.devexpress.com/eXpressAppFramework/403394/backend-web-api-service" id="OWA16ba00dc-bba6-df6e-b155-3ec907715220"&gt;Backend Web API Service&lt;/a&gt; include preview (CTP) support of EF Core 8. We intentionally added support for EF Core 8 in v23.2.4+ to solicit feedback before official release in 4 months (EF Core 8 support will officially ship in &lt;strong&gt;v24.1&lt;/strong&gt;).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;We also updated our &lt;a href="https://github.com/DevExpress-Examples/XAF_Security_E4908/tree/24.1.1%2B/Benchmarks" target="_blank"&gt;performance benchmarks for EF Core 8 vs XPO ORM&lt;/a&gt;. Kudos to Microsoft with &lt;strong&gt;.NET 8&lt;/strong&gt; &lt;strong&gt;-&lt;/strong&gt; &lt;strong&gt;noticeable speed enhancements&lt;/strong&gt; as compared to .NET 6-7 (and older EF Core versions). For more information about recent EF Core updates, refer to the following Microsoft document: &lt;a href="https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-8.0/whatsnew" target="_blank"&gt;What&amp;#39;s New in EF Core 8&lt;/a&gt;.&lt;/p&gt;&lt;div data-survey-id="ee6d2982-0b85-406f-8ea1-a1dc551db714" data-survey-auth-required="false"&gt;&lt;/div&gt;

&lt;h2&gt;Getting Started with XAF&lt;/h2&gt;
&lt;p&gt;If you have not heard of &lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank"&gt;XAF&lt;/a&gt; before, XAF is a .NET application framework that helps you build powerful Office-inspired line-of-business apps with&amp;nbsp;DevExpress Blazor and WinForms UI components (using Entity Framework or&amp;nbsp;XPO ORM). We often call XAF the &amp;quot;&lt;em&gt;Fastest App UI Builder for EF Core ORM&lt;/em&gt;&amp;quot;, because it allows&amp;nbsp;you to progress&amp;nbsp;from a C# entity class to powerful Web, Desktop, and Mobile UI forms in minutes using its&amp;nbsp;integrated &lt;a href="https://docs.devexpress.com/eXpressAppFramework/113624/installation-upgrade-version-history/visual-studio-integration/solution-wizard" target="_blank"&gt;Solution Wizard&lt;/a&gt; and&amp;nbsp;built-in  modules such as Validation, Reporting, Scheduler, Office, Dashboards, etc. &lt;/p&gt;&lt;p&gt;For complex enterprise-level usage scenarios, XAF ships the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/404436/multitenancy"&gt;Multi-Tenancy&lt;/a&gt;, &lt;a href="https://docs.devexpress.com/eXpressAppFramework/112782/data-security-and-safety/audit-trail-module-overview" target="_blank"&gt;Audit Trail&lt;/a&gt;,&lt;span&gt;&amp;nbsp;and &lt;a href="https://docs.devexpress.com/eXpressAppFramework/113366/data-security-and-safety/security-system" target="_blank"&gt;Security System&lt;/a&gt; modules. Built-in security features include:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span&gt;&lt;strong&gt;Role-based access control (RBAC)&lt;/strong&gt; including type, record, and field-level permissions (&lt;/span&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/404633/data-security-and-safety/security-system/security-object-model/type-object-and-member-permissions" target="_blank"&gt;learn more&lt;/a&gt;&lt;span&gt;). You can  manage users and roles at runtime using XAF&amp;#39;s administrative UI/ portal&amp;nbsp;for&amp;nbsp;Blazor,&amp;nbsp;WinForms, and WebForms (or in code manually).&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Flexible authentication strategies&lt;/strong&gt; including &lt;span&gt;&lt;span&gt;Microsoft Entra ID (former Azure Active Directory), Google, and other&amp;nbsp;OAuth2 providers &lt;/span&gt;&lt;span&gt;(&lt;/span&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/119064/data-security-and-safety/security-system/authentication" target="_blank"&gt;learn more&lt;/a&gt;&lt;span&gt;).&lt;/span&gt; &lt;span&gt;The XAF login form automatically renders UI controls based on authentication settings you specified in the Solution Wizard (or in code manually). &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span&gt; &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Middle Tier application server&lt;/strong&gt;&amp;nbsp;for modern desktop, web and mobile apps (&lt;a href="https://docs.devexpress.com/eXpressAppFramework/404389/data-security-and-safety/security-system/security-tiers/middle-tier-security-ef-core" target="_blank"&gt;learn more&lt;/a&gt;).&amp;nbsp;&lt;span&gt;&lt;span&gt;EF Core developers can retain their&amp;nbsp;standard&amp;nbsp;DbContext&amp;nbsp;and initiate remote connections to a data store from any .NET client (like&amp;nbsp;XAF WinForms or even&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/404398/data-security-and-safety/security-system/non-xaf/connect-to-the-efcore-middle-tier-service-from-non-xaf-applications" target="_blank"&gt;non-XAF apps&lt;/a&gt;). This capability is critical within certain&amp;nbsp;environments/business apps (those that cannot maintain direct database connections because of &lt;a href="https://docs.devexpress.com/eXpressAppFramework/404691/security-considerations/general-security-considerations#data-store-protection" target="_blank"&gt;security considerations&lt;/a&gt;).&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;


&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/xaf-efcore-app-builder@2x[1].png" alt="" style="width:1500px;height:952px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;&lt;/p&gt;
&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(51).png" data-comparer-theme="dark" data-label-before="XAF WinForms UI" data-label-after="XAF Blazor UI" data-before-src="https://community.devexpress.com/blogs/xaf/2023/MainDemo.Win_puxspk1tmk.png" data-comparer-position="80" alt="" style="width:2904px;height:1920px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;

&lt;div class="Note"&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/113577/getting-started" style="background-color:#ffff99;"&gt;Get&amp;nbsp;Started with XAF today&lt;/a&gt;&amp;nbsp;if you want to build Office-like line-of-business (LOB) apps powered by Blazor, WinForms, or WebForms much faster than using traditional approaches. Check out XAF&amp;#39;s demos in your DevExpress installation or online at&amp;nbsp;&lt;a href="https://demos.devexpress.com/xaf/blazordemo/" target="_blank"&gt;https://demos.devexpress.com/xaf/blazordemo/&lt;/a&gt;. You can learn more about&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank"&gt;XAF benefits here&lt;/a&gt;,&amp;nbsp;and our&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/xaf-considerations-for-newcomers.xml" target="_blank"&gt;Considerations for Newcomers&lt;/a&gt;&amp;nbsp;will help you understand whether this application framework is right for your business.&lt;/div&gt;
&lt;p&gt;Thanks,&lt;br /&gt;Dennis Garavsky&lt;br /&gt;Principal Product Manager&lt;br /&gt;&lt;a title="Email me if you have questions or suggestions" href="mailto:dennis@devexpress.com?subject=Feedback%20on%20XAF%20Experience"&gt;dennis@devexpress.com&lt;/a&gt;&lt;/p&gt;&lt;img src="https://community.devexpress.com/aggbug.aspx?PostID=388102" width="1" height="1"&gt;</description>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/XAF/default.aspx">XAF</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/XPO/default.aspx">XPO</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Performance/default.aspx">Performance</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/future/default.aspx">future</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/security/default.aspx">security</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Entity+Framework/default.aspx">Entity Framework</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/WinForms/default.aspx">WinForms</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/roadmap/default.aspx">roadmap</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/asp.net+Core/default.aspx">asp.net Core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.net+core/default.aspx">.net core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/blazor/default.aspx">blazor</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/EF+Core/default.aspx">EF Core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.net+6/default.aspx">.net 6</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/web+api/default.aspx">web api</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.NET+8/default.aspx">.NET 8</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/2024/default.aspx">2024</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/benchmarks/default.aspx">benchmarks</category>
        </item>
        <item>
            <title>XAF Blazor &amp; WinForms UI — .NET 8, Built-in Security and Multi-Tenancy Support, Integration of Custom Components, UI Customizations (v23.2)</title>
            <link>https://community.devexpress.com/blogs/xaf/archive/2024/01/19/xaf-blazor-and-winforms-ui-net-8-built-in-security-and-multi-tenancy-support-integration-of-custom-components-heavy-ui-customizations-v23-2.aspx</link>
            <pubDate>Fri, 19 Jan 2024 10:08:00 GMT</pubDate>
            <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388086</guid>
            <dc:creator>Dennis Garavsky (DevExpress)</dc:creator>
            <slash:comments>0</slash:comments>
            <description>&lt;p&gt;As you probably know, our WinForms products ship with a custom Outlook-inspired app. You can review this app&amp;nbsp;using the DevExpress Demo Center v23.2 (under the WinForms category), if you download and run our Unified Component Installer (&lt;a href="https://www.devexpress.com/Products/Try/" target="_blank"&gt;Trial&lt;/a&gt;/&lt;a href="https://www.devexpress.com/ClientCenter/DownloadManager/" target="_blank"&gt;Paid&lt;/a&gt;). The app features many of our&amp;nbsp;WinForms control, including but not limited to reports, charts, pivot grids, maps, rich text editors, data grids with master-detail and layout views, etc.&lt;/p&gt;
&lt;p&gt;Until recently, we have not offered a showcase demo of a similar complexity for &lt;a href="https://www.devexpress.com/xaf" target="_blank"&gt;XAF&lt;/a&gt;,&amp;nbsp;our Cross-Platform .NET App UI framework.&lt;/p&gt;&lt;div class="Note"&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/113577/getting-started" style="background-color:#ffff99;"&gt;Get&amp;nbsp;Started with XAF today&lt;/a&gt;&lt;span&gt;&amp;nbsp;if you want to build Office-like line-of-business (LOB) apps powered by Blazor, WinForms, or WebForms much faster than using traditional approaches. Check out XAF&amp;#39;s demos in your DevExpress installation or online at&amp;nbsp;&lt;/span&gt;&lt;a href="https://demos.devexpress.com/xaf/blazordemo/" target="_blank"&gt;https://demos.devexpress.com/xaf/blazordemo/&lt;/a&gt;&lt;span&gt;. You can learn more about&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank"&gt;XAF benefits here&lt;/a&gt;&lt;span&gt;,&amp;nbsp;and our&amp;nbsp;&lt;/span&gt;&lt;a href="https://www.devexpress.com/products/net/application_framework/xaf-considerations-for-newcomers.xml" target="_blank"&gt;Considerations for Newcomers&lt;/a&gt;&lt;span&gt;&amp;nbsp;will help you understand whether this application framework is right for your business.&lt;/span&gt;&lt;/div&gt;
&lt;img style="width:3446px;height:2006px;border:1px solid #c0c0c0;" src="https://community.devexpress.com:443/blogs/xaf/image(52).png" alt="" /&gt;
&lt;h2&gt;XAF&amp;#39;s Outlook-inspired Demo App&lt;/h2&gt;
&lt;p&gt;For our v23.2 release, we replicated our WinForms Outlook-inspired demo app using XAF&amp;#39;s WinForms UI (&lt;strong&gt;&lt;a href="https://github.com/DevExpress-Examples/xaf-create-multitenant-application" target="_blank" style="background-color:#ffff99;"&gt;view it on GitHub&lt;/a&gt;&lt;/strong&gt;). We also&amp;nbsp;added a Blazor counterpart to the XAF WinForms demo (replicating the same screens using our&amp;nbsp;&lt;a href="https://www.devexpress.com/blazor/" target="_blank"&gt;Blazor&lt;/a&gt;&amp;nbsp;and &lt;a href="https://js.devexpress.com/" target="_blank"&gt;JavaScript (DevExtreme)&lt;/a&gt;&amp;nbsp;UI components). If you read my recent post (&lt;a href="https://community.devexpress.com/blogs/xaf/archive/2023/12/28/xaf-blazor-2023-highlights-5-unique-web-features-that-rival-powerful-windows-desktop-solutions.aspx"&gt;XAF (Blazor UI) 2023 Highlights — 5 Unique Web Features Designed to Rival Windows Desktop Solutions&lt;/a&gt;), you&amp;#39;ll note that XAF Blazor and its underlying components&amp;nbsp;are production-ready and can deliver many of the same capabilities as XAF&amp;nbsp;WinForms for typical line-of-business apps.&lt;/p&gt;
&lt;p&gt;In addition to replicating functionality found in its WinForms only counterpart, XAF&amp;#39;s new Outlook-inspired demo includes the following unique features/capabilities:&lt;/p&gt;
&lt;p&gt;1. Built-in &lt;a href="https://docs.devexpress.com/eXpressAppFramework/404436/multitenancy"&gt;Multi-Tenancy&lt;/a&gt; support for complex enterprise-level usage scenarios (XAF&amp;#39;s Multi-Tenancy module was first introduced in our v23.2 release cycle).&lt;/p&gt;
&lt;p&gt;2. Built-in security features, including but not limited to role-based access control (RBAC) with flexible authentication strategies including type, record, and field-level permissions (&lt;a href="https://docs.devexpress.com/eXpressAppFramework/404633/data-security-and-safety/security-system/security-object-model/type-object-and-member-permissions" target="_blank"&gt;learn more&lt;/a&gt;). A quick aside: We wanted to use our &lt;a href="https://docs.devexpress.com/eXpressAppFramework/404389/data-security-and-safety/security-system/security-tiers/middle-tier-security-ef-core" target="_blank"&gt;Middle Tier application server&lt;/a&gt; (powered by EF Core)&amp;nbsp;for the WinForms portion of the demo, but decided to skip it for the sake of simplicity. Such enterprise-level features are critical in modern desktop apps, so we will likely incorporate Middle Tier Security in this demo for&amp;nbsp;v24.1.&lt;/p&gt;
&lt;p&gt;3. Comprehensive set of runtime UI customization options (for developers and end-users alike):&amp;nbsp;XAF&amp;nbsp;(both Blazor and WinForms UI) allows you to address changes to business requirements without redeployment. Want to rearrange grid columns/detail form editors, or&amp;nbsp;create/remove&amp;nbsp;layout groups/tabs&amp;nbsp;directly&amp;nbsp;in your web browser? Customizations such as these are straightforward for XAF-powered apps&amp;nbsp;(&lt;a href="https://docs.devexpress.com/eXpressAppFramework/404353/ui-construction/views/layout/view-items-layout-customization-blazor" target="_blank"&gt;learn more&lt;/a&gt;).&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="https://www.devexpress.com/subscriptions/i/23.2/23.2-xaf-common-multi-tenancy-module-for-blazor-and-winforms.png" alt="Multi-Tenancy Module for Blazor and WinForms" /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h2&gt;Custom UI Components: XAF&amp;#39;s Inherent Extensibility&lt;/h2&gt;
&lt;p&gt;The myth that XAF is &amp;quot;inflexible&amp;quot; is just that - a myth. Thanks&amp;nbsp;to thousands of XAF customers who have delivered thousands of production apps of varying complexity over the last 15 years, we know that XAF is more than capable of addressing complex enterprise usage scenarios (for proof, check out&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank"&gt;customer case-studies&lt;/a&gt;, &lt;a href="https://www.devexpress.com/products/net/application_framework/xaf-considerations-for-newcomers.xml" target="_blank"&gt;XAF landing page for newcomers&lt;/a&gt;, hundreds of user reviews on G2, Visual Studio marketplace, DevExpress.com itself; thousands of Support Center tickets,&amp;nbsp;or even from&amp;nbsp;living legends dominating their home markets with XAF-based apps like &lt;a href="https://www.prakom.net/" target="_blank"&gt;https://www.prakom.net/&lt;/a&gt;. Our new XAF&amp;nbsp;demo is another example that shatters this myth.&lt;/p&gt;
&lt;p&gt;To help XAF newcomers learn common UI customization techniques faster, we also published a detailed readme on how to accomplish the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create&amp;nbsp;custom Property and List Editors, or other View Item types/templates (&lt;a href="https://docs.devexpress.com/eXpressAppFramework/403277/support-qa-troubleshooting/frequently-asked-questions-blazor-faq#integrate-custom-ui-components" target="_blank"&gt;documentation&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;Build&amp;nbsp;custom Razor components from scratch or integrate&amp;nbsp;standard and third-party Blazor and JavaScript components;&lt;/li&gt;
&lt;li&gt;Organize your solution structure/folders for Blazor and WinForms at the same time and share/reuse code between platforms.&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="Note"&gt;Initially, we also wanted to describe how to write unit, functional (e2e) and integration tests for both UI platforms and run them on Azure (critical for many enterprise-level teams/apps).&amp;nbsp;This would have increased the length of the readme by more than 10 pages, so we skipped this for now. We may still describe this topic&amp;nbsp;in detail later, should user demand exist - please let us know in the DevExpress Support Center. In the meantime, explore our tests in&amp;nbsp;&lt;a href="https://github.com/DevExpress-Examples/xaf-create-multitenant-application/tree/23.2.3%2B/CS/Tests" target="_blank"&gt;this demo folder&lt;/a&gt; at your convenience.&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/DevExpress-Examples/xaf-create-multitenant-application" target="_blank" style="background-color:#ffff99;"&gt;This GitHub repro&lt;/a&gt;&amp;nbsp;illustrates (through code examples) how to implement certain features, which may be temporarily missing in our Blazor Components or XAF Blazor UI itself. For instance, want fancy maps, grid card views or tricky chart integrations, which may not make it into a standard delivery due to limited use by all XAF customers? Simple - follow our lead, just copy or learn from code by example.&lt;/p&gt;
&lt;p&gt;&lt;img src="https://github.com/DevExpress-Examples/xaf-create-multitenant-application/raw/23.2.3%2B/Images/ShowInDocumentIcon.png" alt="Modified ShowInDocumentAction Icon" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://github.com/DevExpress-Examples/xaf-create-multitenant-application/raw/23.2.3%2B/Images/WatermarkReport.png" alt="Watermarked Report" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://github.com/DevExpress-Examples/xaf-create-multitenant-application/raw/23.2.3%2B/Images/CardViews.png" alt="" /&gt;&lt;/p&gt;
&lt;h2&gt;Your Feedback Matters!&lt;/h2&gt;
&lt;p&gt;As always, you are more than welcome to share your feedback&amp;nbsp;about&amp;nbsp;XAF&amp;#39;s Multi-Tenancy module, Blazor/WinForms UI, EF Core, Middle Tier Security, Web API Service, and more via the DevExpress Support Center or the survey below.&lt;/p&gt;
&lt;div data-survey-id="d2ee2fa1-b1f6-4e5a-9815-2a680e9d4b4e" data-survey-auth-required="true"&gt;&lt;/div&gt;
&lt;p&gt;&lt;span&gt;&lt;span&gt;Thanks,&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Dennis Garavsky&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Principal Product Manager&lt;/span&gt;&lt;br /&gt;&lt;a title="Email me if you have questions or suggestions" href="mailto:dennis@devexpress.com?subject=Feedback%20on%20XAF%20Experience"&gt;dennis@devexpress.com&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;img src="https://community.devexpress.com/aggbug.aspx?PostID=388086" width="1" height="1"&gt;</description>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/XAF/default.aspx">XAF</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/LOB/default.aspx">LOB</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/security/default.aspx">security</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Web/default.aspx">Web</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/WinForms/default.aspx">WinForms</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/windows/default.aspx">windows</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/JavaScript/default.aspx">JavaScript</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/asp.net+Core/default.aspx">asp.net Core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.net+core/default.aspx">.net core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/RBAC/default.aspx">RBAC</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/blazor/default.aspx">blazor</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.NET/default.aspx">.NET</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/.NET+8/default.aspx">.NET 8</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/rad/default.aspx">rad</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/productivity/default.aspx">productivity</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/demo/default.aspx">demo</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/multitenancy/default.aspx">multitenancy</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/saas/default.aspx">saas</category>
        </item>
        <item>
            <title>XAF (Blazor UI) 2023 Highlights — 5 Unique Web Features Designed to Rival Windows Desktop Solutions</title>
            <link>https://community.devexpress.com/blogs/xaf/archive/2023/12/28/xaf-blazor-2023-highlights-5-unique-web-features-that-rival-powerful-windows-desktop-solutions.aspx</link>
            <pubDate>Thu, 28 Dec 2023 02:08:00 GMT</pubDate>
            <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388081</guid>
            <dc:creator>Dennis Garavsky (DevExpress)</dc:creator>
            <slash:comments>0</slash:comments>
            <description>&lt;p&gt;In this last post of 2023, I want to highlight a few Cross-Platform .NET App UI (XAF)-related features we added or improved in 2023.&amp;nbsp;&lt;span&gt;When new users view screenshots of these unique XAF Blazor features or try them live in our&amp;nbsp;&lt;/span&gt;&lt;a href="https://demos.devexpress.com/xaf/blazordemo/" target="_blank" style="background-color:#ffff99;"&gt;XAF Blazor demo&lt;/a&gt;&lt;span&gt;, they often ask whether it is a WinForms app (or if they are familiar with XAF, they&amp;nbsp;cannot believe how much XAF Blazor apps have progressed over the last couple of years).&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;If you have not heard of &lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank"&gt;XAF&lt;/a&gt; before, XAF is a .NET application framework that helps you build powerful Office-inspired line-of-business apps with&amp;nbsp;DevExpress Blazor and WinForms UI components (using Entity Framework or&amp;nbsp;XPO ORM). We often call XAF the &amp;quot;&lt;em&gt;Fastest App UI Builder for EF Core ORM&lt;/em&gt;&amp;quot;, because it allows&amp;nbsp;you to progress&amp;nbsp;from a C# entity class to powerful Web, Desktop, and Mobile UI forms in minutes using its&amp;nbsp;integrated &lt;a href="https://docs.devexpress.com/eXpressAppFramework/113624/installation-upgrade-version-history/visual-studio-integration/solution-wizard" target="_blank"&gt;Solution Wizard&lt;/a&gt; and&amp;nbsp;built-in  modules such as Audit Trail, Validation, Reporting, Scheduler, or&amp;nbsp;Security System.&lt;/p&gt;&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/xaf-efcore-app-builder@2x[1].png" alt="" style="width:1500px;height:952px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;&lt;/p&gt;
&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(51).png" data-comparer-theme="dark" data-label-before="XAF WinForms UI" data-label-after="XAF Blazor UI" data-before-src="https://community.devexpress.com/blogs/xaf/2023/MainDemo.Win_puxspk1tmk.png" data-comparer-position="80" alt="" style="width:2904px;height:1920px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;
&lt;div class="Note"&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/113577/getting-started" style="background-color:#ffff99;"&gt;Get&amp;nbsp;Started with XAF today&lt;/a&gt;&amp;nbsp;if you want to build Office-like line-of-business (LOB) apps powered by Blazor, WinForms, or WebForms much faster than using traditional approaches. Check out XAF&amp;#39;s demos in your DevExpress installation or online at&amp;nbsp;&lt;a href="https://demos.devexpress.com/xaf/blazordemo/" target="_blank"&gt;https://demos.devexpress.com/xaf/blazordemo/&lt;/a&gt;. You can learn more about&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank"&gt;XAF benefits here&lt;/a&gt;,&amp;nbsp;and our&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/xaf-considerations-for-newcomers.xml" target="_blank"&gt;Considerations for Newcomers&lt;/a&gt;&amp;nbsp;will help you understand whether this application framework is right for your business.&lt;br /&gt;&lt;/div&gt;

&lt;h2&gt;Unique Feature #1:&amp;nbsp;End-User/Runtime&amp;nbsp;Layout Customization within Detail Forms&lt;/h2&gt;&lt;p&gt;With this  UI/UX option, XAF Blazor&amp;nbsp;users can create and manage their own UI  directly in the Web browser. UI customization (for both developers and users) can be a time saver - customizable Web apps can address changing business requirements without the need for redeployment.&amp;nbsp;As you would expect, you can disable these advanced customization capabilities for specific users. Use the&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/DevExpress.ExpressApp.Model.IModelLayoutManagerOptions.CustomizationEnabled?v=23.1" target="_blank" rel="noopener"&gt;CustomizationEnabled&lt;/a&gt;&amp;nbsp;property in the Model Editor or in&amp;nbsp;code.&amp;nbsp;&lt;/p&gt;&lt;p&gt;This is a XAF-specific feature, which is unavailable in DevExpress Blazor UI components by default. This feature mirrors functionality found in&amp;nbsp;the DevExpress WinForms Layout Control.&lt;/p&gt;&lt;p&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/404353/ui-construction/views/layout/view-items-layout-customization-blazor?v=23.1" target="_blank" rel="noopener"&gt;Documentation&lt;/a&gt;&lt;/p&gt;&lt;img src="https://www.devexpress.com/subscriptions/i/23.1/23-1-xaf-blazor-form-layout-customization@2x.gif" alt="" style="width:1998px;height:1178px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;

&lt;h2&gt;Unique Feature #2: End-User/Runtime&amp;nbsp;Grid Customization in List&amp;nbsp;Forms&lt;/h2&gt;&lt;p&gt;XAF Blazor ships with a&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/DevExpress.ExpressApp.Actions.ActionBase.Category?v=23.2#how-to-add-an-action-to-a-context-menu-or-command-column" target="_blank" rel="noopener"&gt;Context menu&lt;/a&gt;&amp;nbsp;for grid headers and rows (just like its WinForms/WebForms counterparts). Column Chooser, Hide Column, Group by Column, Show Auto Filter Row, Filter Editor, or&amp;nbsp;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/113679/ui-construction/views/layout/list-view-columns-customization?v=23.2#aspnet-core-blazor" target="_blank" rel="noopener"&gt;Reset View Settings&lt;/a&gt;&amp;nbsp;commands are available within the menu. Grid rows ship with New, Clone, Delete, Export To, and other menu items.&amp;nbsp;&lt;/p&gt;&lt;p&gt;This is a XAF-specific feature, which is unavailable in DevExpress Blazor Components by default (you can implement this functionality using DxContextMenu). This feature mirrors functionality found in the DevExpress WinForms Grid Control.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/113679/ui-construction/views/layout/list-view-columns-customization#runtime-customization" target="_blank"&gt;Documentation&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a href="https://supportcenter.devexpress.com/ticket/details/t1207487/" target="_blank"&gt;Breaking Change in v23.2&lt;/a&gt;&lt;/p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/grid_list_editor_enhancements_1_context_menu@2x[1].png" alt="" style="width:1600px;height:1101px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;&lt;img src="https://docs.devexpress.com/eXpressAppFramework/images/blazor-reset-view-settings-action.png" alt="XAF ASP.NET Core Blazor Reset View Settings in List View, DevExpress" style="width:902px;height:506px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;

&lt;h2&gt;Unique Feature #3:&amp;nbsp;Advanced Filter Builder to Shape Data within&amp;nbsp;List and Detail Forms&lt;/h2&gt;
&lt;p&gt;XAF integrates a JavaScript-based Data Filtering UI (Filter Criteria Editor), first introduced in our&amp;nbsp;&lt;a href="https://www.devexpress.com/subscriptions/reporting/"&gt;Web Reporting&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/dashboard/"&gt;BI Dashboard&lt;/a&gt;&amp;nbsp;products. This filter builder&amp;nbsp;supports popular criteria language options based on reference, collection, and scalar/value type properties (such as strings, numbers, etc). Filter UI helps address advanced  usage scenarios&amp;nbsp;and augments&amp;nbsp;our Blazor Grid&amp;#39;s&amp;nbsp;Auto Filter Row, Find Panel, or&amp;nbsp;Column Header Filter options. XAF&amp;#39;s&amp;nbsp;Filter Builder also helps application administrators/developers configure field and record-level &lt;a href="https://docs.devexpress.com/eXpressAppFramework/113366/data-security-and-safety/security-system#object-permissions" target="_blank"&gt;security permissions&lt;/a&gt; for user roles (as part of XAF&amp;#39;s Security System and its account management UI).&amp;nbsp;&lt;/p&gt;&lt;p&gt;This is a XAF-specific feature, which is unavailable in DevExpress Blazor Components (you cannot implement this functionality on your own easily). This feature mirrors functionality found in the DevExpress WinForms Filter Control.&lt;/p&gt;&lt;p&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/112652/filtering/in-list-view/how-to-filter-list-views-on-the-ui-specific-level" target="_blank"&gt;Documentation&lt;/a&gt;&lt;/p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/23-1-xaf-blazor-filter-editor@2x[1].png" alt="" style="width:1998px;height:1088px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;

&lt;h2&gt;Unique Feature #4:&amp;nbsp;Master-Detail Mode Splitter for List Forms&lt;/h2&gt;&lt;p&gt;In XAF Blazor, end-users can use this&amp;nbsp;splitter to resize side-by-side master and detail views much like the UI metaphor used in&amp;nbsp;Microsoft Outlook (compact view).&amp;nbsp;&lt;span&gt;Splitter position is saved in the Application Model &lt;/span&gt;&lt;span&gt; (&lt;/span&gt;end-user settings&lt;span&gt;&amp;nbsp;are stored in the database by default when the Security System is enabled).&lt;/span&gt;&lt;/p&gt;&lt;p&gt;This is a XAF-specific feature, which is unavailable in DevExpress Blazor UI components by default. This feature mirrors functionality found in the DevExpress WinForms Layout Control.&lt;/p&gt;&lt;p&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/113249/ui-construction/views/list-view-edit-modes#set-list-and-detail-view-size-in-split-layout" target="_blank"&gt;Documentation&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/splitter_in_master_detail_mode@2x[1].png" alt="" style="width:1924px;height:1268px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;&lt;/p&gt;

&lt;h2&gt;Unique Feature #5: Built-in OAuth2 Authentication Provider Support (Microsoft, Google, etc.)&lt;/h2&gt;
&lt;p&gt;XAF Blazor as well as its&amp;nbsp;backend &lt;a href="https://docs.devexpress.com/eXpressAppFramework/403394/backend-web-api-service" target="_blank"&gt;Web API Service&lt;/a&gt;&amp;nbsp;support&amp;nbsp;various&amp;nbsp;OAuth2 authentication providers: Windows, Microsoft Entra ID (former Azure Active Directory), Google, GitHub, and others. The XAF Blazor login form automatically renders UI controls based on authentication settings you specified in the &lt;a href="https://docs.devexpress.com/eXpressAppFramework/113624/installation-upgrade-version-history/visual-studio-integration/solution-wizard" target="_blank"&gt;Solution Wizard&lt;/a&gt;&amp;nbsp;(or in code manually). XAF Blazor  also includes  &lt;a href="https://docs.devexpress.com/eXpressAppFramework/DevExpress.ExpressApp.Security.ISecurityUserLockout?v=23.2" target="_blank"&gt;&amp;quot;Brute Force&amp;quot; attack protection&lt;/a&gt;&amp;nbsp;designed to limit&amp;nbsp;unauthorized login attempts.&lt;/p&gt;&lt;p&gt;This is a XAF-specific feature, which is unavailable in DevExpress Blazor Components by default.&lt;/p&gt;&lt;p&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/402197/data-security-and-safety/security-system/authentication/oauth-and-custom-authentication/active-directory-and-oauth2-authentication-providers-in-blazor-applications" target="_blank"&gt;Documentation&lt;/a&gt;&amp;nbsp; &lt;a href="https://docs.devexpress.com/eXpressAppFramework/404691/security-considerations/general-security-considerations" target="_blank"&gt;General Security Considerations&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://docs.devexpress.com/eXpressAppFramework/images/ExternalAuthenticationBlazor.png" alt="Extended Logon Window in an XAF ASP.NET Core Blazor Application, DevExpress" style="width:659px;height:532px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/xaf_brute_force_attack_protection@2x[1].png" alt="" style="width:836px;height:850px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;&lt;/p&gt;

&lt;h2&gt;Expected Enhancements for 2024: Bringing XAF Blazor Closer to Windows Desktop Apps&lt;/h2&gt;
&lt;p&gt;In addition to expected enhancements in 2024 like complete Notifications Module or EF Core 8 support, batch/cell-editing within&amp;nbsp;DxGridListEditor, accessibility&amp;nbsp;(a11y)&amp;nbsp;and performance enhancements, I wanted to share a few bonus features, which are already&amp;nbsp;in the works.&lt;/p&gt;

&lt;h3&gt;Tabbed MDI Support&lt;/h3&gt;&lt;p&gt;Tabbed MDI is a type of multiple document interface (MDI) found in most modern applications (for instance, your favorite Web browser or Microsoft Outlook Web). It is a robust interface that maximizes document screen real estate usage, especially when you have dozens of documents, email messages, etc. &lt;/p&gt;&lt;p&gt;Tabbed MDI is enabled in XAF WinForms apps by default, and&amp;nbsp; XAF Blazor will provide a similar user experience in v24.1 (hopefully with a EAP in v23.2).&lt;/p&gt;&lt;p&gt;
&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(50).png" alt="" style="width:1710px;height:1184px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;&lt;/p&gt;&lt;p&gt;
&lt;img src="https://community.devexpress.com:443/blogs/xaf/2023/tabbed-mdi-on-mobile.gif" alt="" style="width:450px;height:835px;border-width:1px;border-color:#c0c0c0;border-style:solid;" /&gt;&lt;/p&gt;

&lt;h3&gt;Add New&amp;nbsp;Fields into the Customization Form of the Grid and&amp;nbsp;Layout Controls at Runtime&lt;/h3&gt;
&lt;p&gt;XAF WinForms apps include an&amp;nbsp;Object Model dialog. With it, end-users can tick or untick data model fields (including sub-fields and collections), which are not yet displayed in the grid or layout control (as part of the Column Chooser or Customization Form).&lt;/p&gt;&lt;p&gt;Much like in Microsoft Office apps, this capability allows users to fully customize&amp;nbsp;list and detail forms&amp;nbsp;(based on the structure of your data model). Again, this is helpful when developers need to address&amp;nbsp;changes to business requirements without&amp;nbsp;redeployment.&amp;nbsp;&lt;/p&gt;&lt;p&gt;XAF Blazor will provide a similar experience in v24.1&amp;nbsp;&lt;span&gt;(hopefully with a EAP in v23.2).&lt;/span&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img src="https://community.devexpress.com:443/blogs/xaf/image(49).png" alt="" /&gt;&lt;/p&gt;

&lt;h2&gt;Your Feedback Matters!&lt;/h2&gt;&lt;p&gt;Please, review the description of new XAF-related features in &lt;a href="https://www.devexpress.com/subscriptions/new-2023-2.xml#xaf" target="_blank" style="background-color:#ffff99;"&gt;What&amp;#39;s New v23.2&lt;/a&gt;&amp;nbsp;and leave your feedback at the end of the section:&amp;nbsp;&lt;a href="https://www.devexpress.com/subscriptions/new-2023-2.xml#xaf-survey"&gt;Go to the survey now.&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks,&lt;br /&gt;Dennis Garavsky&lt;br /&gt;Principal Product Manager&lt;br /&gt;&lt;a title="Email me if you have questions or suggestions" href="mailto:dennis@devexpress.com?subject=Feedback%20on%20XAF%20Experience"&gt;dennis@devexpress.com&lt;/a&gt;&lt;/p&gt;&lt;img src="https://community.devexpress.com/aggbug.aspx?PostID=388081" width="1" height="1"&gt;</description>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/XAF/default.aspx">XAF</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/ASP.NET/default.aspx">ASP.NET</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Usability/default.aspx">Usability</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/LOB/default.aspx">LOB</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Web/default.aspx">Web</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/customization/default.aspx">customization</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Featured/default.aspx">Featured</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/asp.net+Core/default.aspx">asp.net Core</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/blazor/default.aspx">blazor</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/2023/default.aspx">2023</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/rad/default.aspx">rad</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/productivity/default.aspx">productivity</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/v24.1/default.aspx">v24.1</category>
        </item>
        <item>
            <title>XAF (WinForms UI) — Case Study by ASTGD: A Complete Medical Management System</title>
            <link>https://community.devexpress.com/blogs/xaf/archive/2023/12/28/xaf-case-study-by-astgd-a-complete-medical-management-system.aspx</link>
            <pubDate>Thu, 28 Dec 2023 00:00:00 GMT</pubDate>
            <guid isPermaLink="false">bd716303-653c-428d-8b8a-a7d998cde032:388080</guid>
            <dc:creator>Dennis Garavsky (DevExpress)</dc:creator>
            <slash:comments>0</slash:comments>
            <description>&lt;p&gt;Meet Minhazul Islam, a managing director of&amp;nbsp;&lt;a href="https://astgd.com/" target="_blank"&gt;ASTGD&lt;/a&gt;&amp;nbsp;(an IT company in Bangladesh) who has been using our&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank" style="background-color:#ffff99;"&gt;Cross-Platform .NET App UI (XAF)&lt;/a&gt;&amp;nbsp;since 2013.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;img src="https://www.devexpress.com/AboutUs/Testimonials/astgd/i/managing-director.png" alt="Managing Director" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;We recently published a case study about their  hospital management system (&lt;a href="https://astgd.com/medical-management" target="_blank"&gt;MediManage Pro&lt;/a&gt;)&amp;nbsp;powered by XAF -&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/controls/winforms/" target="_blank"&gt;DevExpress WinForms UI&lt;/a&gt;&amp;nbsp;and &lt;a href="https://www.devexpress.com/subscriptions/reporting/" target="_blank"&gt;Reporting&lt;/a&gt; components. Here is how ASTGD developers described their product:&lt;/p&gt;&lt;blockquote&gt;MediManage Pro is a comprehensive medical management system designed to automate the operations of hospitals, clinics, or diagnostic centers. This fully customizable enterprise solution offers a wide range of functionalities to streamline various aspects of healthcare management. Barind Medical College &amp;amp; Hospital Ltd. (bmc.edu.bd), a renowned medical college was looking for a complete software solution that can serve the needs of healthcare facilities looking to improve their administrative and operational efficiency. ASTGD proposed a custom solution and later ASTGD built this complete hospital management system. &lt;/blockquote&gt;&lt;p&gt;&lt;img src="https://www.devexpress.com/AboutUs/Testimonials/astgd/i/screen-patient-records.png" alt="Patient Records - MediManage Pro, DevExpress Case-Study" /&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;And here’s what&amp;nbsp;Minhazul Islam&amp;nbsp;said about XAF&amp;#39;s primary benefits:&lt;/p&gt;

&lt;blockquote&gt;The project timeline was very limited compared to its vastness. ASTGD needed a solution that can provide cutting edge error free solution in less time. DevExpress XAF is a low code application framework that is also ORM based and provides some crucial built in modules that comes handy while developing this kind of applications. Despite all these ASTGD chose XAF for two main reasons:&lt;br /&gt;- XAF provides automated UI and model editor provides capability to easily customize UI.&lt;br /&gt;- XAF comes with built in security modules that provides roles and user-based permission and it is easy to implement/modify/customize.
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://www.devexpress.com/AboutUs/Testimonials/astgd/" target="_blank" style="background-color:#ffff99;"&gt;Read the full article&lt;/a&gt;&amp;nbsp;to learn why ASTGD chose XAF&amp;nbsp;for&amp;nbsp;Windows&amp;nbsp;project development and&amp;nbsp;what they liked about our tools.&amp;nbsp;&lt;/p&gt;&lt;div class="Note"&gt;&lt;a href="https://docs.devexpress.com/eXpressAppFramework/113577/getting-started" style="background-color:#ffff99;"&gt;Get&amp;nbsp;Started with XAF today&lt;/a&gt;&amp;nbsp;if you want to build Office-like line-of-business (LOB) apps powered by Blazor, WinForms, or WebForms much faster than using traditional approaches. Check out XAF&amp;#39;s demos in your DevExpress installation or online at&amp;nbsp;&lt;a href="https://demos.devexpress.com/xaf/blazordemo/" target="_blank"&gt;https://demos.devexpress.com/xaf/blazordemo/&lt;/a&gt;. You can learn more about&amp;nbsp;&lt;a href="https://www.devexpress.com/products/net/application_framework/" target="_blank"&gt;XAF benefits here&lt;/a&gt;,&amp;nbsp;and our &lt;a href="https://www.devexpress.com/products/net/application_framework/xaf-considerations-for-newcomers.xml" target="_blank"&gt;Considerations for Newcomers&lt;/a&gt;&amp;nbsp;will help you understand whether this application framework is right for your business.&lt;br /&gt;&lt;/div&gt;&lt;h2&gt;Do You Have a Story to Share?&lt;/h2&gt;&lt;p&gt;We&amp;#39;d love to publish your story on our website. It doesn’t matter if the project is big or small, or which DevExpress tools you used. Fill out this simple&amp;nbsp;&lt;a href="https://community.devexpress.com/blogs/xaf/social/Developer_Express_General_Case_Study_Template.docx" target="_blank"&gt;case&amp;nbsp;study form&lt;/a&gt;&amp;nbsp;and email us at&amp;nbsp;&lt;a href="mailto:clientservices@devexpress.com"&gt;clientservices@devexpress.com&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Thanks,&lt;br /&gt;Dennis Garavsky&lt;br /&gt;Principal Product Manager&lt;br /&gt;&lt;a title="Email me if you have questions or suggestions" href="mailto:dennis@devexpress.com?subject=Feedback%20on%20Installation-NuGet%20Experience"&gt;dennis@devexpress.com&lt;/a&gt;&amp;nbsp;&lt;/p&gt;&lt;img src="https://community.devexpress.com/aggbug.aspx?PostID=388080" width="1" height="1"&gt;</description>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/XAF/default.aspx">XAF</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/XPO/default.aspx">XPO</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/case+study/default.aspx">case study</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/LOB/default.aspx">LOB</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/Reports/default.aspx">Reports</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/reporting/default.aspx">reporting</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/WinForms/default.aspx">WinForms</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/lowcode/default.aspx">lowcode</category>
            <category domain="https://community.devexpress.com/blogs/xaf/archive/tags/rad/default.aspx">rad</category>
        </item>
    </channel>
</rss>