Quantcast
Channel: XAF Team Blog
Viewing all 148 articles
Browse latest View live

XAF – Deploy ASP.NET Core Blazor Server Apps to Azure, Linux with Nginx or Windows with IIS

$
0
0

Azure Deployment

As you may already know, XAF's Blazor Server UI can be deployed to Azure. If you are new to Azure, please refer to the following Microsoft deployment topic: Host and deploy ASP.NET Core Blazor Server. Popular Azure deployment options include:

  1. The default option with no additional settings and no WebSockets.
  2. Application Request Routing (ARR).
  3. Azure SignalR Service. This option is supported in v20.2.3 (RTM) and requires additional setup in the YourSolutioName.Blazor.ServerSide/Startup.cs file. Note that the ProxyHubConnectionHandler class is available in the Blazor demo (C:\Users\Public\Documents\DevExpress Demos 20.2\Components\eXpressApp Framework\MainDemo.Blazor\CS\MainDemo.Blazor.ServerSide\Services\ProxyHubConnectionHandler.cs) included in our unified .NET Framework installer.
    public void ConfigureServices(IServiceCollection services) {
        services.AddSingleton(
            typeof(HubConnectionHandler<>), 
            typeof(ProxyHubConnectionHandler<>)
        );
       //...
    }

Windows and Linux Deployment

Should you prefer Windows with IIS or Linux with Nginx, a number of XAF customers successfully deployed XAF's Blazor in these hosting environments. You may find these additional community resources helpful: Deploy Blazor App on Ubuntu (Support Center Ticket) | XAF in Linux (Video by Joche Ojeda).

When you deploy your Blazor apps to IIS, make certain to activate the following features: WebSocket Protocol and Sticky sessions with Application Request Routing (often forgotten by developers). BTW, our online Blazor demo is hosted on IIS: https://demos.devexpress.com/XAF/BlazorDemo/ 


XAF – WinForms and ASP.NET UI Case Study by UKIGMO (Multi-Platform .NET App UI)

$
0
0

Meet Masato Ubukata of UKIGMO, a Japanese IT consulting company established in 2019.

UKIGMO primarily utilizes Microsoft technologies/platforms such as .NET, Azure, SQL Server, etc. to develop business applications for small and medium-sized enterprises. UKIGMO's founder has more than 20 years of development experience and more than 10 years of experience with DevExpress tools.

We recently published a case study about their product It's Coooool (an software solution for the apparel industry). It leverages XAF and all its capabilities to connect apparel warehouses, manufacturers and retails with one another. Through its intuitive interface, organizations that adopt It's Coooool can more effectively manage their supply chain, understand quantities desired by dealers, control warehouse capacity, and accurately determine the number/timing of shipments that must be made by the manufacturer. Prior to It's Coooool, this process was cumbersome and error-prone – as many organizations within the apparel industry relied on Excel files to communicate supply chain realities.

Here’s what Masato Ubukata said about XAF's main benefits:

Thanks to XAF's screen/UI generation capabilities, we were able to respond to spec changes very quickly. Said differently, XAF made it easy for us to update UI elements on each screen (as our specification evolved throughout the development process). We were also impressed by XAF's Role and User Management infrastructure – this capability allowed us to spend more time on business logic and less time on building basic app functionality.

Read the full article to learn how UKIGMO came to choose the DevExpress eXpressApp Framework (XAF) and eXpress Persistent Objects (XPO) for their WinForms and ASP.NET project development and what they liked about our tools. For more information on our Security System for XAF and non-XAF .NET apps, please refer to these Frequently Asked Questions and our landing page.

Do You Have a Story to Share?

We'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 case study form and email us at clientservices@devexpress.com.

While we are at it, I wanted to share an interesting screenshot from Bahalddin Elsayed, an experienced and longtime XAF user from Dubai. As you can see in this image, his XAF-powered WinForms app integrates Autodesk Forge. This is a perfect example of what’s possible with XAF’s extensive UI customization and extensibility options.

eXpressApp Framework - Tips & Tricks (October 2020)

$
0
0

Here is this month’s edition of XAF Tips & Tricks. As always, we hope the information contained within this post is of benefit as you explore and leverage the capabilities of the eXpressApp Framework.

If you are new to XAF and are considering it for an upcoming project, be sure to visit XAF’s product page for introductory information on its many capabilities: devexpress.com/xaf.

As always, feel free to share helpful XAF-related support tickets in the comment section below. Thank you for your continued commitment to XAF!

Interesting Support Tickets

New and Updated KB Articles

Resolved Issues

Documentation Updates

We updated our help file with the following new Blazor UI-related topics.

The Task-Based Help section contains up-to-date information on Blazor UI.

Web API Service for XPO

The following document explains how you can implement a Web API controller and connect it to an XPO client: Transfer Data via REST API.

eXpressApp Framework - Tips & Tricks (November 2020)

$
0
0

A new month brings with it an edition of XAF Tips & Tricks. We certainly hope the information contained herein will be of value as you explore and leverage the capabilities of the eXpressApp Framework.

New to XAF or considering it for the first time? Please visit XAF’s product page for introductory information on its built-in capabilities: devexpress.com/xaf.

As always, if you’ve come across helpful XAF-related support tickets, do share links in the comment section below. Thank you for your continued commitment to XAF!

Interesting Support Tickets

New and Updated KB Articles

Resolved Issues

Documentation Updates

Blazor UI

Asynchronous Data Loading

Load data asynchronously into XAF's WinForms Chart List Editor and PivotGrid List Editor (new in v20.2.4): Asynchronous Data Loading.

Security System

Enable and customize Security Permissions Caching.

eXpressApp Framework - Tips & Tricks (December 2020)

$
0
0

This is the last edition of XAF Tips & Tricks in 2020. We certainly hope the information we published during the course of the year was of value/benefit to you. If you’d like us to improve these tips & tricks posts in 2021, feel free and post your thoughts below.

Happy New Year – our best wishes for a healthy and prosperous new year.

New to XAF or considering it for the first time? Please visit XAF’s product page for introductory information on its built-in capabilities: devexpress.com/xaf.

Documentation Updates

  • In the following topic, we demonstrate how to use XAF's role-based access control API in a  Xamarin Forms app. Remember, our security API can be used in any .NET app, not just XAF-powered apps. If you have colleagues in need of a robust .NET security API, please share this post.  
  • We published a one hour video about the best ways to access and manipulate data in XAF/XPO-powered apps. This video should be of great help to those who are new to XAF. Thanks to our MVPs, Jose Columbie and Joche Ojeda for their assistance in producing this video.

  • We updated the following KB article FAQ: XAF ASP.NET Core Blazor Server UI with additional examples of custom XAF property editors. These examples demonstrate XAF’s broad UI customization capabilities. For instance, the articles includes use of new editors for color and file attachment properties (based on DevExpress Blazor and DevExtreme JavaScript components).
  • In this topic, we show you how to access standard ASP.NET Core services from XAF's View Controllers in Blazor UI through ((BlazorApplication)Application).ServiceProvider.GetRequiredService<YourService>()
       - IConfiguration - to read configuration keys like connection strings from appsettings.json (XAF integration example);
       - NavigationManager - to navigate to a required URL or download a file programmatically (XAF integration example);
       - IJSRuntime - to call JavaScript methods from .NET code - for instance,  in  custom editors (XAF integration example).
  • If you are new to XAF's Blazor UI, please be sure to check out our getting started tutorials and demos:  In-Depth XAF Blazor UI Tutorial (Main Demo)  |  Basic Blazor Tutorial (Simple Project Manager Demo)  |  Online Demo.
  • If you search XAF's Blazor documentation at https://docs.devexpress.com/eXpressAppFramework/, be sure to select .NET Standard or .NET Core using the top left selector (certain APIs and topics are not available under the default .NET Framework selector).


  • When you create a new XAF ticket in the DevExpress Support Center and select XAF under the Platform/Product field, you will see a panel with useful help links at the bottom. These links will offer guidance on how to collect callstacks, logs and other important information about any .NET error. With this information in hand, you’ll get faster and more accurate responses from our support team.


  • Did you know that you can place the cursor on a DevExpress API in the Visual Studio code editor and hit F1 to view relevant help topics directly within your web browser? For instance, go to one of your View Controllers, find and focus `CreateListView` or 'FindObject' and press F1. Many help topics include code examples that you can copy - a potential time saver. This DevExpress feature is already a part of the product installation - it does not require a separate installation of our offline docs.

    What do you think about this F1 capability? What are your habits with regard to API reference search in 2021? For instance, do you use search.devexpress.comhttps://docs.devexpress.com/search/?query=findobject&project=eXpressAppFramework or always google by default?

XAF - Updated Blazor Video, Rich Text Editor & SaaS Examples, Text Notifications, Support & Documentation Tips

$
0
0

A new month brings with it a new edition of eXpressApp Framework (XAF) Tips & Tricks. We certainly hope the information contained within will be of value as you explore and leverage the capabilities of our cross-platform UI application framework for .NET developers. As always, if you’ve come across any helpful XAF-related support tickets we may have inadvertently missed, please do share the links in the comment section below.

New to XAF or considering it for the first time? Please visit XAF’s product pages for introductory information on its built-in capabilities: Considerations for Newcomers | .NET Role-based Access Control API.

XAF's Blazor UI Updates

First, some long-awaited good news: XAF's Blazor UI v21.1 assemblies, demos and project templates will target .NET 5 instead of .NET Standard 2.1. This opens new capabilities, both for us and also for XAF users: CSS Isolation, new Microsoft Identity Web packages for the latest Azure Active Directory SDK, performance and debugging enhancements, and so on. For more information, please review these Microsoft articles: The future of .NET Standard | What's new in ASP.NET Core 5.0 | Migrate from ASP.NET Core 3.1 to 5.0. Also, please await our 2021 roadmap in the next blog post!

Updated Overview Video

New Example: Rich Text Editor

This example shows how to edit rich text documents, stored using the Office module, from within your XAF-powered Blazor apps.

ReportsV2 Module

New Example: Сhange Database at Runtime from the Logon Form

This example shows how to connect your application to another database after the application has already started. As a case in point, this could be required for a multi-tenant SaaS application where you need to connect a user or company to their own database with the same structure.

Text Notifications

The following help topic describes how to show and customize notifications in Blazor applications: Text Notifications.

Security System Updates

Interesting Support Tickets & Resolved Issues

Updated KB Articles

XAF - 2021 Roadmap (Cross-Platform .NET App UI and Security API)

$
0
0

Before we detail XAF’s 2021 Roadmap, our thanks to everyone who shared feedback/thoughts over the last few months. Your contribution is both important and greatly appreciated.

The following list outlines the features/capabilities we expect to introduce in the eXpressApp Framework (XAF) this year. As with our 2020 roadmap, we will keep this 2021 roadmap post up-to-date as we release new functionality or clarify our future plans throughout this year. As such, please do bookmark this page so you can return to it and track our progress. 

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.

ASP.NET Core Blazor UI

XAF's Blazor UI was officially released in v20.2 - it is ready for production use in simple CRUD scenarios (documentation).

First, some good news: XAF's Blazor UI v21.1 assemblies, demos and project templates will target .NET 5 instead of .NET Standard 2.1. This will bring with it new capabilities, both for us and also for XAF users: CSS and JavaScript Isolation, new Microsoft Identity Web packages for the latest Azure Active Directory SDK, performance and debugging enhancements, etc. For more information on this topic, please review these Microsoft articles: The future of .NET Standard | What's new in ASP.NET Core 5.0 | Migrate from ASP.NET Core 3.1 to 5.0.

In 2021, we also expect to offer feature parity between Blazor and our WinForms/WebForms UI for the most popular usage scenarios:

  • Localization Module. We will introduce easier multi-language localization (like in WinForms/WebForms) support with predefined resources or via the Model Editor (we will release this feature in v20.2.6 for early testing). In addition, XAF's Blazor UI developers will be able to switch languages at runtime in v21.1.
  • Clone Object Module for XPO. This module will also be available in v20.2.6 for early testing.
  • Audit Trail Module for EF Core. Audit Trail will support both XAF UI apps and non-XAF apps.
  • Office Module. A wrapped JavaScript Rich Text Editor will be used to edit rich text documents from within your XAF-powered Blazor UI apps (example).
  • Dashboards Module. A wrapped JavaScript Dashboard control will be used to design and preview dashboards. The majority of XAF developers said that they were happy with this module for most data analytics usage scenarios (example).
  • Scheduler Module. As part of our support for this feature, our base DevExpress.ExpressApp.Scheduler assembly will be made cross-platform for advanced usage scenarios. In the meantime, you can implement a custom List Editor based on the DevExpress Blazor Scheduler control (example).
  • Action Container View Item. This item will help you include Actions into your detail form layout instead of the main menu (example). We hope to release it in a v20.2 updates as well.
  • New Property Editors. We will support a faster Lookup Property Editor (with the New and Open buttons), Nullable, TimeSpan, Color, Tag Box and Hyper Link Property Editors out of the box.
  • Grid List Editor. We will support more options in our Grid List Editor such as runtime column chooser, footer summaries (example), find panel, column header filters, etc. This feature relies on the DevExpress Blazor Grid, so please follow our ASP.NET team blog for roadmap updates as well.
  • Popup Window Customization. We will include more options to modify pop-up window size (example), position, style and other settings (similar to our WebForms implementation - example).
  • Chart and Pivot Grid List Editor Modules (!). Based on our roadmap survey, only 15.5% of XAF developers wanted these modules for data analytics scenarios in XAF's Blazor UI. We will decide on these modules at the end of 2021, once we ensure support for more popular modules first. We received almost zero feedback on the old KPI, Pivot Chart (aka Analysis) and Maps modules and will not likely support them in 2021. In the meantime, customers, who wants these modules or other controls that are unavailable out of the box, can integrate standalone JavaScript and native Blazor charts, pivot grids, tree lists, diagrams, or maps in their Blazor apps using standard XAF extensibility techniques: custom View Items, custom Property Editors, custom non-XAF forms or even reports. Please contact our support team if you require assistance in this regard.
  • State Machine and Workflow Modules (!). Though we confirmed that this is a low popularity module for our users, (only 7% wanted it for XAF's Blazor UI), we decided to support this module as it was easy for us to do so (all tests passed successfully). Based on the roadmap survey, most users either did not find workflow-related scenarios important or preferred the simplicity and flexibility of Controllers with Actions (example). As for former Workflow Module scenarios, we also recommend that users implement Controllers or custom solutions such as Hangfire, Quartz.NET, and others - WWF and WCF will not be ported  to .NET Core/.NET 5 by Microsoft. To save time with these advanced workflow scenarios, consider this ready and free module within the eXpand Framework.

WinForms and ASP.NET WebForms UI

Our primary focus will be on XAF’s new Web & Mobile UI for Blazor. This notwithstanding, we will do our best to address the needs of existing WinForms and ASP.NET WebForms UI users. We will focus on making it easier to migrate existing .NET Framework apps to .NET 5 or use existing apps alongside new Blazor projects. We will also extend our .NET 5 migration-related documentation (such as onetwo) based on additional migration scenarios. . 

Cross-Platform Enhancements

Security System

We will support Middle Tier Security in our WinForms UI for .NET 5 at the end of 2021. In the meantime, it is possible to connect XAF's WinForms .NET 5 clients to an application server running on .NET Framework. 

We will also keep enhancing XAF's Core and Security System API for asynchronous data processing in 2021. This is important for both XAF's Blazor UI and non-XAF usage scenarios (like authorization in Blazor WebAssembly apps with XPO or EF Core).

Entity Framework Core for Data Access

v21.1 will also mark the official release of Entity Framework Core (EF Core) support in our Blazor UI (we included it as a CTP in v20.2 - example).

Core and Performance

A new DataAccessMode = Queryable will be available for faster lookups in XAF's Blazor UI and also easier integration with external data sources beyond supported ORM. Other performance enhancements will affect the Audit Trail module and the Model Editor. If you want to improve performance today, profile your app and review our best practices. Experience suggests that most issues can be addressed at the custom code or on the database side.

Designers and Wizards

v21.1 should mark the official release of the Model Editor for .NET 5 apps. We will not support Module and Application Designers in .NET 5 (.NET Framework apps will be unaffected), because they mostly duplicate Solution Wizard functionality and are rarely used (occasional configuration can be easily accomplished with a few lines of code, especially in Blazor apps: example). We may support Controller and Action Designers in 2021 should demand require it – as its implementation is very complex because of the changes made by Microsoft to Visual Studio’s architecture. Note that it is possible to create Actions with a few lines of code (example).

Our Enhanced Solution Wizard will help XAF developers complete the following more quickly:

  • create a combined WinForms + Blazor .NET 5 solution or add a new .NET 5 Module to an existing WinForms or Blazor solution (example).
  • create a solution with OAuth identity providers without writing any custom code (example).
  • extend a security user class with additional properties (the roadmap survey confirmed that most users create "public class MyUser: PermissionPolicyUser" - example).
  • create a solution that will target a single database or a database per tenant for SaaS scenarios (example).
  • reuse XAF application data, logic and modules by Non-XAF apps using a separate Web API project with Swagger (OpenAPI) support (examples).
  • create a solution with unit/functional testing and CI/CD infrastructure for Azure DevOps (example).

The list of planned enhancements is significant, so we cannot promise that everything will be completed this year. We will regularly update this post to reflect our latest vision.

More LINQ-based Filtering 

Inspired by XAF's lambda-based methods like IObjectSpace.FirstOrDefault, we will extend the CriteriaOperator class for all DevExpress customers to create type-safe criteria more easily in v21.1. The new CriteriaOpertor.FromLambda<TModel,TResult> method will support common LINQ expressions and methods, most used CriteriaOperator descendants and custom criteria functions or aggregates.


// FROM
CriteriaOperator.Parse("Name = ?", "Gera");
// TO
CriteriaOperator.FromLambda<Customer, bool>(cm => cm.Name == "Gera");
//-------------------------
//ConstantValue
CriteriaOperator.FromLambda<Customer, int>(cm => Discount * Price * 0.8 );
// OperandValue
CriteriaOperator.FromLambda<Customer, int>(cm => Value);
// OperandProperty
CriteriaOperator.FromLambda<Customer, string>(cm => cm.Name);
// BinaryOperator
CriteriaOperator.FromLambda<Customer, bool>(cm => cm.Age >27);
// UnaryOperator
CriteriaOperator.FromLambda<Customer, bool>(cm => !(cm.IsLongterm));
// FunctionOperator
CriteriaOperator.FromLambda<Customer, bool>(cm => cm.Name.Contains("Gera"));
// AggregateOperand
CriteriaOperator.FromLambda<Customer, int>(cm => cm.Orders.Count());
// JoinOperand
CriteriaOperator.FromLambda<Customer, int>(cm => JoinOperand.FromLambda<Order, 
int>(om => cm.Oid == om.CustomerOid && om.Price > 5, g => g.Count()));
// Group Expressions
CriteriaOperator.FromLambda<Customer, bool>(cm => cm.Orders.Count()>10 &&
 cm.Islongterm && cm.Orders.All(om => !(om.IsComplete)));

Note that CriteriaOperator.FromLambda does not support any possible LINQ expression, because our criteria language and LINQ are not 100% compatible. For instance, GroupBy, OrderBy and other LINQ methods used for filtering are not supported.

XAF customers will especially enjoy the new methods to create predefined object and member security permissions in the ModuleUpdater class. Of course, there are many other helpful use cases in Controllers and business classes for filtering.

Your Opinion Counts

As always, we look forward to your comments and questions via email: xafteam@devexpress.com.

XAF - .NET App Security API Benchmark for EF Core and XPO ORM

$
0
0

Hope you are all doing well.

We created this GitHub project to test the performance of XAF's Security System for the two Object-Relational Mapping (ORM) libraries. We tested these libraries with BenchmarkDotNet:

You can run the benchmarks on your computer or review our test results here.

Scenarios

Data access scenarios we tested include the following:

  • Users can view employees info within their own department.
  • Users can view and edit their own tasks and also tasks assigned to employees within their own department.

To help you estimate the overhead of XAF's Security System API, we run tests against multiple record counts (0-5K) and a "No Security" mode.

From our experience, in most real-life scenarios (like here or there) less than a hundred security permission checks are expected during UI form load, so our tests with 5K records may reflect edge/artificial cases. The number of security checks is generally reduced and application performance is improved further with the help of:

  • finite number of unique security permissions or main/navigation menu commands, for which security checks are necessary;
  • grid data paging (Server Mode/Instant Feedback or Web API/IQueryable);
  • permission result and data layer caching;
  • ongoing database maintenance;
  • server side data filtering.

About our .NET App Security API

This role-based access control API ships as an independent non-visual library, a part of our cross-platform .NET application UI framework (XAF). But don't be alarmed: this security API can be used in standard non-XAF .NET Framework and .NET Core apps. For instance, our newest WinForms Dental Clinic demo uses the Security API for basic security related functionality. 

For more information, please review the following documents and do help us spread the word:


XAF - Vanguard AI and its Trading Platform (Cross-Platform .NET App UI)

$
0
0

Meet Greffith Ponce of Vanguard AI (an IT company in the Philippines) who has been using the DevExpress eXpressApp Framework (XAF) since 2008.

Jan Michael Tan - Vanguard AI

We recently published a case study about their trading platform powered by XAF and DevExpress WinForms components. Here is how the developers described their product:

The purpose of our initial release is to familiarize users with investment strategies, screen stocks, and execute back testing using End-Of-Day data. Vanguard AI is free for traders using the Philippine Stock Exchange and the application can be downloaded from our site at no cost. We manage our own cloud server and host all market data. Vanguard AI connects to this server and compares information stored on a user's local database at startup. We then load the necessary data, calculate all scripts, and restore all widgets with updated information. Users can script their trading systems. Scripts are interpreted with appropriate mathematical computations, including indicators and translation of how results are rendered within charts.

And here’s what Greffith Ponce said about XAF's main benefits:

XAF allowed me to focus on my business requirements and worry less about mundane infrastructure-related tasks. Thanks to XAF, my basic application skeleton was built very quickly - I simply customized it to our needs. With XAF, I did not have to reinvent everything from scratch – all the necessary ingredients already existed.

Read the full article to learn how Vanguard AI came to choose XAF for their Windows project development and what they liked about our tools.

Do You Have a Story to Share?

We'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 case study form and email us at clientservices@devexpress.com.

XAF - Improved .NET 5 Support, EF Core, OAuth2-based Security and Other Solution Wizard Enhancements (v21.1)

$
0
0

As you may already know from our 2021 roadmap, we planned to simplify .NET 5 and Blazor development in v21.1 with XAF, our award-winning cross-platform application UI framework

XAF's Solution Wizard v21.1 enhancements include the following:

  • Notice the new DevExpress v21.1 XAF Template Gallery item instead of the old DevExpress v20.2 XAF Solution Wizard one (v21.1 includes multiple project templates to better distinguish between different application types).
  • Create solutions that combine WinForms and Blazor .NET 5 for Microsoft Entity Framework Core (EF Core) or DevExpress XPO ORM.
  • If you are already using EF Core, do not miss the Security System (role-based data access control) and Audit Trail (log and track data changes) functionality for your XAF or non-XAF .NET apps.

  • Add new .NET 5 Modules to an existing WinForms or Blazor solution.

  • Create a solution with OAuth identity providers without writing custom code.

  • Extend a security user class with additional properties.
  • Add Item Templates for XAF's .NET Core/.NET 5 projects (WinForms and Blazor) using the "Add DevExpress Item" menu.



We encourage our Entity Framework 6 (EF 6) users to consider Entity Framework Core (EF Core) for new XAF's Blazor and WinForms .NET Core projects.

Microsoft has moved EF 6 into maintenance mode, and as such, EF 6 will not mirror XAF's .NET Core offering. At present, EF Core supports key XAF technologies/capabilities including advanced security and comprehensive audit trail support. EF Core also offers better performance when compared to EF 6. For more information, see Porting from EF 6 to EF Core.

Future Plans for the Solution Wizard

First, I want to assure our existing .NET Framework XAF users (Windows Forms and ASP.NET Web Forms) that they are safe regardless of .NET Core/.NET 5 development - you can stay on .NET Framework as long as your business dictates. We will do our best to support you and address your needs along the way. 

XAF's Solution Wizard v21.2 will include one the following capabilities by the end of 2021:

  • A separate Web API backend service project (or extended Blazor project) with Swagger (OpenAPI). This should help XAF users reuse application data, logic and modules in Non-XAF apps (examples) much more easily. Many XAF customers have already created such backend services for their XAF production systems, for instance, Martin Praxmarer of PraKom for his mobile Xamarin companion app or this gentlemen on YouTube - we simply want a "1-Click" solution for everyone using XAF's Solution Wizard.
  • A solution with unit/functional testing and CI/CD infrastructure for Azure DevOps (example).
  • A solution that targets a database per tenant for SaaS scenarios (example).
  • A solution with pre-built error diagnostics using Roslyn Analyzers. XAF/XPO users will see a detailed error report locally or make this "best practice" analysis a part of their CI system. For this, I collected more than 35+ common errors made by XAF/XPO users in their projects (also thanks to Alex Miller for his contribution). Common errors include missing INotifyPropertyChanged, XPO attributes on non-persistent classes, or unhandled unusable nodes.
  • Dependency Injection (DI) for security, modules and other WinForms .NET Core project configurations like in MAUI or XAF's ASP.NET Core Blazor Server (see the black screenshot above). As you may recall, we want to move away from Application and Module Designers - most XAF users do not use them and favor the Solution Wizard and simple code changes (confirmed by our roadmap survey). Note: please do not confuse these designers with the Model Editor - - the main XAF visual designer that is well-supported for .NET Core/.NET 5.

Your Feedback Matters

As always, we look forward to your feedback on these XAF enhancements and how we can better address your development needs going forward with the Solution Wizard.

XAF — Dashboards, RTF Editor, Functional Testing, Swagger UI for Blazor, Auditing for EF Core (EAP v21.2)

$
0
0

As you may already know, we are a couple of months away from our next major update (v21.2). This post describes some of the features we expect to ship in October and details what’s inside our Early Access Preview build. If you own an active Universal Subscription, feel free to download this Early Access Preview (EAP) build at your convenience.

If you own an active DXperience Subscription and would like to learn more about XAF, you can explore the features described herein by logging onto the DevExpress Download Manager 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. This will help us fine-tune our code before the official launch.

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 v21.2 release cycle. As its name implies, the EAP offers an early preview of what we expect to ship in two months.

ASP.NET Core Blazor

Dashboards Module

You can now use the Dashboard component to design and preview dashboards from within your XAF-powered Blazor app.

Documentation: Dashboards Module Overview.

The Dashboards Module in the XAF-powered ASP.NET Core Blazor application

Office Module (Rich Text Editor)

XAF's Blazor UI now supports the DevExpress Rich Text Editor component (as part of XAF's Office Module).

Documentation: Office (Edit Rich Text & Spreadsheets).

Functional Testing Support

You can test your Blazor or Web Forms application via Easy Test in Google Chrome or Microsoft Edge. Note: We no longer support Internet Explorer (see End of support for Internet Explorer 11).

Documentation: Test XAF Blazor UI Applications.

User Profile Avatar

The Security System allows you to specify a user image/avatar and display it in the top right corner of your application page.

Documentation: How to: Assign an Image to a User.

User image in an XAF-powered ASP.NET Core Blazor application

Enhanced Lookup Editor Buttons

Our Lookup Editor displays a Clear button within the UI if its AllowClear model option is enabled.

The Clear button in an XAF-powered ASP.NET Core Blazor application

Windows Forms

View in Model Action

XAF's new View in Model Action invokes the Model Editor at runtime and automatically expands a model node with settings for the current View or its business class.

View in Model Action

Enhanced Mask Settings in the Model Editor

The Model Editor now invokes the Mask Settings form and allows you to customize the mask used for your WinForms projects. Previously used EditMask and EditMaskType properties are now disabled.

Cross-Platform Enhancements

EF Core Audit Trail (RTM)

The Audit Trail Module now supports both XAF-powered Blazor and WinForms UI apps.

Documentation: Audit Trail Module (EF Core).

The Audit Trail Module in a WinForms and Blazor applications

Web API Backend Service (CTP)

You can now reuse XAF application data, logic, and modules within non-XAF apps via a Web API backend service (Swagger: OpenAPI). This service is available as a part of Blazor projects. To test, create a new XPO-based Blazor project, run the application, and navigate to https://localhost:44318/swagger/index.html. You can also test the implementation by using XAF's MainDemo Blazor application. This demo is installed in the following folder: %PUBLIC%\Documents\DevExpress Demos 21.2\Components\eXpressApp Framework\MainDemo.Blazor.

Note: We do not recommend use of our new Web API Backend Service for production code. We've made it available to gather feedback and engage those of you considering it for future use.

Web API Backend Service Project

Pre-Built Error Code Diagnostics (CTP)

You can check your solution with pre-built error diagnostics using Roslyn Analyzers. You can view a detailed error report locally or integrate this option into your CI system. The following diagnostics are available in this release:

  • XAF0001: An XPO business object’s constructor invalid declaration detected.
  • XAF0002: An XPO business object’s invalid property declaration detected.

Documentation: Code Diagnostics.

Code diagnostics

.NET App Security API (Role-based Access Control) - Free Offer

Oh, and before I forget...we've got some good news for those considering our .NET App Security API for future use. We expect to ship this product free of charge in about a month or so...

Once our installer is ready, we'll make an official announcement on this blog.

Breaking Changes in v21.2

Before you migrate and test existing projects, we ask that you review the following breaking changes:

Your Feedback Matters!

We realize beta-testing is a time-consuming process and we are grateful to those who invest time with our EAP builds. Find the current implementation lacking flexibility? Feel we've overlooked a valuable usage scenario? Does our current implementation fail to address your business requirements? Please post your thoughts in the comment section below or create a Support Center ticket. We will happily follow up and do what we can to extend the capabilities of our new products/features.

XAF - New Grid List Editor, Feedback on the Main Menu Toolbar and End-User Layout Designer in Blazor UI

$
0
0

New DxGridListEditor (CTP) - Try It Out in v21.2.4+

As you may already know, XAF's Blazor UI includes a new UI element - Grid List Editor (DxGridListEditor). This new UI element is built atop the new DevExpress Blazor Grid control. Like the new Blazor Data Grid, DxGridListEditor will be updated with new features every minor release and we plan to deliver much more in our v21.2.5+ minor update in late January 2022. XAF Blazor UI users will especially appreciate Conditional Appearance support, Server Mode support (yes, we may return to DataAccessMode = Server instead of Queryable, because it supports more features like runtime calculated fields), customization form support, and much more.

This post is just a gentle reminder for early adopters/testers to explicitly enable the new DxGridListEditor in their projects (since it is a preview) and share their feedback with our development team via the DevExpress Support Center. 

Main Menu Toolbar - Your Feedback Matters

At present, XAF's Blazor main menu toolbar hides commands based on record selection within the ListView. This behavior was introduced 1.5 years ago and it differs from XAF's WinForms & ASP.NET WebForms UI. We designed this menu in this manner because it is more suitable for smaller screens (on mobile web browsers), which XAF's Blazor UI also supports.

Menu Behavior 1


Menu Behavior 2

Throughout this year, many of you have asked us to restore our WinForms & ASP.NET WebForms UI implementation - menu commands are disabled based on record selection within the ListView. 

Question 1: Which default behavior do you prefer for XAF's Blazor UI (v22.1+)? Please add "Menu Behavior 1 or 2" and, optionally, describe your use-case/reasons in the comments section below.

If we do not have many votes for the new behavior (2), we will simply retain our existing implementation and focus on more important things for the majority of users. Thanks for your feedback in advance.

Teaser 1: Detail Form Layout Customization

For our v22.1 release in May 2022, we are researching the technical possibility to implement layout customizations in XAF's Blazor UI for end-users (just like its WinForms counterpart). You can get a taste of this below - our first spike (please ignore UI design issues - it is just a wireframe to demonstrate the main idea):

If you’ve used XAF's WinForms UI, you already know that rich runtime UI customization for both developers and end-users can be a time saver - your apps can address changing business requirements without the need for redeployment.

Question 2: Would you like us to continue our research and implementation? If so, please add "+1" in the comments section below. If you have multiple XAF developers, you can certainly add "+5", "+10", "+N"😀.

This is a very serious and costly undertaking, so we want to be certain that we have sufficient support from registered customers. So - if this feature does not elicit a simple +1 comment, it is a sign that we should not pursue this feature.

Teaser 2: Custom Buttons for XAF's Blazor UI Lookup Editor Are Coming

XAF's Blazor Lookup Editor will display the "New" and "Open Related Record" buttons in v21.2.5 (January 2022).

Visual Studio 2022 Support for XAF and XPO

XPO's ORM Data Model Designer, XAF's Model Editor, and Solution Wizard support Visual Studio 2022 in v21.2.4 - please try these designers and let us know your thoughts.

Note that the Application and Module Designers for .NET Framework apps are not yet supported (track progress). As a workaround, edit the WxxApplication.xxx/WxxApplication.designer.xx and Module.xx/Module.designer.xx files in code (Add a Module in Code).

Dependency Injection Extensions for XAF Module Configuration Are Coming

As you may recall from our roadmap, we will NOT support Module and Application Designers in .NET 5+ apps (.NET Framework apps will be unaffected), because they mostly duplicate Solution Wizard functionality and are rarely used (occasional module or application configurations can be easily addressed with a few lines of code: example). To promote straightforward and consistent configurations for security and application modules across WinForms and Blazor in .NET+, XAF v22.1 will support Dependency Injection (DI) extensions like those found in ASP.NET Core Blazor Server apps.

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

$
0
0

Before I detail XAF’s 2022 Roadmap, my thanks to everyone who shared feedback/comments last year. Your contribution to XAF’s evolution is appreciated. The following list outlines the features/capabilities we expect to introduce in our Cross-Platform .NET App UI - XAF and .NET App Security API this year. 

Table of Contents

ASP.NET Core Blazor UI

We expect to introduce the following to XAF's Blazor UI in the v22.1 release cycle:

  • Release of DxGridListEditor (Server Mode support, custom calculated field support, column resizing support, performance enhancements, Column Chooser);
  • Main Menu Toolbar Enhancements (learn more);
  • Preview of Runtime Form Layout Customization for End-Users (learn more).
  • Migration to the DevExpress themes;
  • Bootstrap 5 Support.

v22.1 is mostly a service release for XAF's Blazor UI, because it is fully dependent on the progress made with DevExpress Blazor components. Even though the XAF team is heavily involved at early planning and testing stages, we still require additional time to integrate and test the latest component enhancements (roadmap). So, not all new Blazor component features available in v22.1 will ship as part of XAF's Blazor UI v22.1. We expect to catch up in v22.2 with enhancements such as accordion for navigation, inline row editing and export in the grid control, split view like Outlook, advanced popup windows, etc. We will detail these plans in another roadmap post around the July time frame.

We also encourage XAF developers to remember that XAF is fully extendable framework/constructor, and that you can incorporate Blazor and DevExtreme components/customize XAF’s default UI as needed today, without waiting for another release. More customization tips | Blazor UI (FAQ).
BACK TO THE TOP

WinForms UI

Release of Entity Framework Core 5 for Data Access

In v22.1, we can recommend production use of Entity Framework Core 5 (EF Core 5) data models in .NET 6 WinForms apps (Documentation). You can find a demo at: c:\Users\Public\Documents\DevExpress Demos 22.1\Components\eXpressApp Framework\EFCoreDemo\. Enhancements include multiple stability fixes and support for the Server and DataView access modes in ListView. EF Core 5 can also be used in XAF's Blazor apps and .NET App Security API.

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

Release of Middle Tier Application Server for .NET 6 

In v22.1, we can recommend production use of our Middle Tier application server with XPO-based .NET 6 WinForms apps.

Entity Framework Core 6 Support in WinForms, Blazor & API Services for Data Accesse

Support for Entity Framework Core 6 (EF Core 6) is expected in our v22.2 release cycle. EF Core 6 is the latest version of Entity Framework and has a number of advantages over EF Core 5: https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-6.0/whatsnew. Unfortunately, Microsoft introduced a number of breaking changes that we will need to address. We will not support EF 7 in 2022 unless there are strong reasons to do so (because this is NOT an LTS release).
BACK TO THE TOP

API Services for Non-XAF UI Clients

Release of the FREE Web API Service for Basic CRUD & Authorization

Our Web API backend service is powered by Swagger/OpenAPI and allows you to reuse XAF application data, logic, and modules within non-XAF apps. Our v21.2 release will mostly include stability, performance, and documentation updates. In addition, we will support EF Core 5 for Web API Service (in previous versions, only XPO was supported). We will also update example E4908 to use the Web API Service instead of a custom implementation with plain OData v4.

The Future of XAF API Services: FREE and PAID Capabilities

We will keep offering basic CRUD and authorization functions for free as part of our .NET Role-based Access Control & Permission Management API. In v22.1, this free product will also include a project template that will generate a Web API Service with the same basic functions powered by Entity Framework Core 5 and XPO ORM. To download your free copy, please verify your contact information and click Register on the following web page: https://www.devexpress.com/security-api-free.  

We will also add paid enterprise features for this security API and Web API Service. Like technical support, these paid features will be a part of the XAF/Universal license. For instance, v22.1 will include end points to get localized captions for classes and members in the Web API Service. Later this year we also hope to support XAF's audit trail for Entity Framework Core 6 and XPO, end points to download reports in PDF or FileData-based attachments, advanced CRUD with XAF validation rules, etc). For more information on these paid capabilities, check out XAF modules.
BACK TO THE TOP


BACK TO THE TOP

Cross-Platform Enhancements

.NET 6 Is Used By Default

XAF's Blazor and WinForms (.NET Core) assemblies will target .NET 6 with our v22.1 release. .NET 6 is a long-term support (LTS) release, and with it we can deliver the best experience from a UX and performance perspective for Blazor, XAF Model Editor, and our WinForms design-time.

Simplified XAF Solution Structure

We removed SolutionName.Module.XXX projects and allowed XAF developers to add Controllers, business classes, list and property editors, view items, and other XAF-specific entities to automatically load from SolutionName.XXX executable projects. This should make it easier for new XAFers to get started with the product and also eliminate mistakes for existing XAF developers.

BACK TO THE TOP

Preview of XAF Module Extensions for Unified Application Configuration in WinForms & Blazor

As you may recall from our 2021 roadmap, we will NOT support Module and Application Designers in .NET 5+ apps. These designers duplicate Solution Wizard functionality and are rarely used (occasional module or application configurations can be easily addressed with a few lines of code: example).

To promote straightforward and consistent configurations for security and application modules across WinForms and Blazor in .NET 6, XAF v22.1 will support  fluent API syntax in Startup.cs.

...
services.AddXaf(Configuration, builder => {
builder.UseDefaultApplicationFactory<SimpleAppSetupDemoBlazorApplication>();
builder.Modules
    .AddSystemBlazorModule()
    .Add<SimpleAppSetupDemoModule>()
    .AddSecurityModule()
    .AddAuditTrailModule(auditTrailModule =>
        auditTrailModule.AuditDataItemPersistentType = typeof(DevExpress.Persistent.BaseImpl.AuditDataItemPersistent))
    .AddCloneObjectModule()
    .AddConditionalAppearanceModule()
    .AddDashboardsBlazorModule(null, options => {
        options.SetupDashboardConfigurator = (configurator, serviceProvider) => {
            configurator.DefaultDataReloadingTimeout = TimeSpan.FromSeconds(5);
        };
        options.RouteOptions.Endpoint = "customApiRoute/dashboards";
    })
...

The PlatformApplication.designer.xx and Module.designer.xx files will be removed from the Solution Wizard template in .NET 6 apps as well. These changes will NOT affect .NET Framework apps and you can keep using the old-good option with the designers as before. 
BACK TO THE TOP 

Model Editor Enhancements

The Model Editor is now built with .NET 6 and delivers better performance and stability. Users will also like the simplified drag-and-drop implementation under the NavigationItems node (you no longer need to precisely point out the Items sub-node and can drop an item directly on the root node).


BACK TO THE TOP

Support for XAF Data Sources in the .NET 6 Report Designer

XAF developers will be able to use XAF-specific report data sources in the new .NET 6 Report Designer for Visual Studio. Known issues such as missing XAF business classes in the ObjectTypeName editor or missing members in the Field List have been addressed.

Unit & Functional Test Infrastructure in Solution Wizard

Solution Wizard will include built-in end-to-end (e2e) tests in C# powered by our EasyTest functional testing engine and popular unit testing libraries such as xUnit, nUnit.

Later this year will add boilerplate code for unit testing and CI/CD template to help you get started with specific tests-related tasks in minutes using GitHub Actions and Azure DevOps. 
BACK TO THE TOP 

[Theory]
[InlineData(BlazorAppName)]
[InlineData(WinAppName)]
public void CreateStudent(string applicationName) {
    FixtureContext.DropDB(AppDBName);
    var appContext = FixtureContext.CreateApplicationContext(applicationName);
    appContext.RunApplication();
    appContext.GetForm().FillForm(("User Name", "Admin"));
    appContext.GetAction("Log In").Execute();

    appContext.Navigate("Student");
    Assert.Equal(0, appContext.GetGrid().GetRowCount());

    appContext.GetAction("New").Execute();
    appContext.GetForm().FillForm(("First Name", "John"), ("Last Name", "Smith"));
    appContext.GetAction("Save").Execute();
    Assert.Equal("John Smith", appContext.GetForm().GetPropertyValue("Full Name"));

    appContext.Navigate("Student");
    Assert.Equal(1, appContext.GetGrid().GetRowCount());
    Assert.Equal(new string[] { "John", "Smith" }, appContext.GetGrid().GetRow(0, "First Name", "Last Name"));
}

BACK TO THE TOP

Release of Pre-Built Code & Project Error Diagnostics

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

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

New Database Connection Providers in XPO

We will keep XPO connection providers up to date with the latest database engines and extend support based on user feedback.

  • MySqlConnector is a new ADO.NET data provider (MIT) for MySQL, MariaDB, Amazon Aurora, Azure Database for MySQL and other MySQL-compatible databases. It should deliver more value than the old MySql.Data provider (GPLv2).
  • We will support the latest version of PostgreSQL driver for .NET Core apps - Npgsql 6.0.
  • We will also expand XPO connection provider support with SAP HANA.

BACK TO THE TOP 

Your Opinion Counts

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

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

XAF — Enhanced Navigation & Grid in Blazor, Audit Trail & Download Report / Media Data in Web API (v22.2)

$
0
0

If you followed our XAF plans for the first half of the year, I hope you will agree that v22.1 was a meaningful release as we've implemented almost everything planned. In this post, I’ll discuss plans for our XAF v22.2 release. 

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.

Web API Services for Non-XAF UI Clients (Powered by EF Core & XPO ORM)

As you may know from my recent post, everyone can (for free) create an OData v4 Web API Service with integrated authorization & CRUD operations with a few clicks using our Solution Wizard in v22.1. Yes, these basic capabilities are available free-of-charge. For more information, check out this overview video:

v22.2 will extend Web API Service capabilities for active DevExpress Universal Subscribers only (in other words, the following features will not be free):

  • Log database history changes using service endpoints (aka Audit Trail). With the api/MediaFiles/DownloadStream endpoint, you can download data from FileData, MediaDataObject, Image or byte array properties declared in your data models. Of course, this endpoint respects your security permissions.

  • Download PDF from report templates and filtered data in databases using service endpoints (aka Reports). With the api/Reports/DownloadPDF endpoint, you can download data from the ReportDatav2 containers stored in your database. Each ReportDatav2 links to an XtraReport, and report data sources and data models that you designed in Visual Studio. You can pass a report container identifier, data source criteria, and other parameters just like you do with the SetupBeforePrint method in code. Of course, this endpoint respects your security permissions.

  • Download BLOB data stored in databases using service endpoints (aka File Attachments). No data changes made via your ORM in Web API endpoints will be unnoticed. You can view this log history in your RDBMS or XAF's administrative UI for WinForms, Blazor, or ASP.NET WebForms. 

  • If you are an active Universal subscriber (or planning to become one) and want to check the state of input data in our Web API Service (with 10+ of built-in and unlimited custom validation rules), please contact us via the DevExpress Support Center. We will share our implementation considerations and even working samples for the current version. In other words, it is already possible to validate data using our Web API Service - we simply want to finalize this for production using your feedback.

ASP.NET Core Blazor UI

Enhanced Accordion & Tree-like Navigation

v22.1 ships with a new DevExpress Blazor Accordion component. XAF v22.2 we will integrate this component and support common control options (images, view variants, open items in separate browser tabs, etc). The final design will change a bit, but the following image should give you a sense of our implementation.

Inline Row Editing in the DxGridListEditor

We expect to enable inline row editing in our v22.2 release cycle (described here: Blazor Grid — Inline Row Editing (v22.1). We don’t think it makes much sense to support the edit form (popup or inplace) since it is not much different from XAF's built-in Detail View. Please share your project requirements if grid edit forms are a preferred data editing mechanism for your enterprise (you can submit your feedback via the DevExpress Support Center).

Split View like Outlook (aka MasterDetailMode = ListViewAndDetailView)

This feature is available in XAF’s WinForms & WebForms UI. The ListView displays a DetailView for a focused record alongside the same window (called "Compact View" in Microsoft Outlook). XAF’s implementation will be driven by the release of the DevExpress Blazor Grid focused row option (expected in our v22.2 release cycle).

Other Blazor Component Enhancements

Some of you may be asking - will XAF benefit from other enhancements expected in the DevExpress Blazor Grid (v22.2)? XAFers will get most of these features automatically (for instance, New Render & Size Mode Support), because XAF uses the same underlying Blazor components. Certain features will require us to write integration code:

  • Grid Export to Excel: we will extend our ExportController that includes Export To... Actions in List Views.
  • Form Layout OnDemand mode (lazy tab loading): we will have to customize XAF's Blazor Layout Manager to load the content of View layout tabs when a user selects them.

Chances are high that we will finish integration and testing of these features in v22.2 as many of them where prioritized based on XAF customer feedback

Cross-Platform Enhancements

Entity Framework Core 6 for Data Access in WinForms, Blazor & Web API Services

Support for Entity Framework Core 6 (EF Core 6) is expected in our v22.2 release cycle. EF Core 6 is the latest version of Entity Framework and has a number of advantages over EF Core 5: https://docs.microsoft.com/en-us/ef/core/what-is-new/ef-core-6.0/whatsnew. Unfortunately, Microsoft introduced a number of breaking changes that we will need to address. We will not support EF Core 7 in 2022 unless strong reasons exist to do so (because this is NOT an LTS release).

New Pre-Built Code & Project Error Diagnostics

We enabled XAF/XPO error diagnostics (shipped as part of the DevExpress.ExpressApp.CodeAnalysis NuGet package) using the Project Converter (requires an upgrade to v22.1.5+). We hope this will save you time in Visual Studio or validate your build quality using your CI/CD workflows. We also want to extend our default diagnostic set with the following:

  • Internal ShowViewStrategy.ShowView calls instead of the recommended ShowViewInPopupWindow, ShowMessage, or using Actions;
  • UI platform-dependent references in cross-platform projects or UI platform-dependent reference mixing (for instance, WinForms in ASP.NET projects);
  • Detect redundant NonPersistentAttribute for readonly properties (non-public or missing setters), ExplicitLoadingAttribute for XPCollection properties, or IObjectSpaceLink in XPO classes (because there is already the Session property);
  • Incorrect XAF Controller instantiation like 'new DialogController()';
  • Missing default/display properties for business classes;
  • Missing change notifications inside XPO/EF data model properties (SetPropertyValue, OnChanged or INotifyPropertyChanged).

Your Feedback Matters

Thanks,
Dennis
Principal Product Manager
dennis@devexpress.com 

Deploy and scale an XAF Blazor Server app: use Azure Kubernetes Service to serve hundreds of users

$
0
0

Overview

We published a GitHub example that shows how to deploy an XAF Blazor application to a Kubernetes cluster with horizontal autoscaling. We tested the application in two types of clusters: locally-run K3s and Azure Kubernetes Service (AKS). The maximum pod replica number (20) allowed around 300 concurrent users. An AKS cluster needs two nodes (B4ms machines: 4 Cores, 16 GB RAM) to operate with such a number of pod replicas and the same load.

This repository contains the following useful resources:

  • Dockerfile that helps you publish an app to a Linux container, and a version for a Windows container (Dockerfile.win)
  • *.yaml files that help you deploy an app to a Kubernetes cluster with a Microsoft SQL Server database engine container, Horizontal Pod Autoscaler, and Ingress
  • A prebuilt Docker image with Linux, .NET 6 SDK, ASP.NET Core (https://hub.docker.com/r/devexpress/xaf-container-example)

The following diagram illustrates the cluster architecture:


Motivation Behind This Example

The main reasons include the following:

  1. Though deployment is not specific to DevExpress code (XAF Blazor), we often receive general questions such as "Can I containerize my XAF Blazor app?" or "Can I deploy XAF Blazor to Kubernetes?", or "I deployed to Docker/Kubernetes/Azure/Ubuntu/Whatever, but it did not work: does XAF Blazor support this?!" In short, an XAF Blazor app is a standard ASP.NET Core Blazor Server app, and you can do anything Microsoft ASP.NET Core Blazor Server can handle (refer to Microsoft Docs | Deployment Recommendations for XAF Blazor UI). I hope our working example will address all related questions in the future.
  2. It is not secret that XAF Web apps were not designed for high-load scenarios where a single web server handles hundreds or thousands of concurrent web clients. XAF Web apps are stateful and are mostly used in a local Intranet with a limited set of users (often deployed internally). This notwithstanding, we wanted to demonstrate how to configure your deployment environment to handle additional users with multiple web servers.

Will your own XAF Blazor app work with 100, 200, 300, or more concurrent users with similar performance, provided the hardware/software are the same?It depends - our example is not an official guarantee by any means. In brief, every application is unique. Even with horizontal scaling, we recommend that you carefully:

We cannot provide a universal calculator for web server hardware/software requirements, nor can we comment on overall performance without tests. The complexity of your business model and implemented behaviors are significant factors in throughput/performance. Ultimately, performance will depend on development decisions, application type, environment, and even tested use-case scenarios. A few examples of factors that affect application performance are the number of persistent classes and their fields, Controller design, Application Model customizations, availability of memory intensive operations to end-users (frequent import/export of large data amounts, or complex report generation).

Different Ways XAF Customers Deploy Web Apps

The feedback below (from XAF customers) helps illustrate how our customers have deployed apps to Docker, Google Cloud Platform, virtual machines on Azure, Amazon Web Services, or on premises with Windows/Linux. Again, kudos to Microsoft ASP.NET Core for making this possible.

Pongpaitoon Suksudej

Just want to confirm that yesterday I deployed the xaf blazor application to native cloud successfully. It runs in linux containers and orchestrated by gcp cloud run. As a result, it scales out automatically once a container has reached a usage threshold. it also terminates the unused containers to save cost as well. using xaf blazor with linux container with autoscale is not a dream but reality.

Achmad Mulyadi

I've been working on horizontal scaling for XAF deployed on Linux server and it works extremely well. I recommend you to deploy it on containerized environment for easy deployment and scaling. If you don't need to auto scale your application, a load balancer such as NGINX in front of your containers is more than sufficient to do the task. Of course auto scaling options are available, you may need to see the possibility of using Kubernetes or Docker Swarm. Or you might want to try to deploy it on cloud such as azure or AWS. I myself has deployed an XAF ERP application on AWS and only need few clicks to deploy and configure the auto scaling using AWS Toolkit for Visual Studio.

Roman Shelomanov

We use WEB XAF in SAAS about 200 concurent users + tablets users + some integration. Single app pool, about 5 GB for IIS memory. With own WEB UI HTML 5 client implementation that minimize server load and looks quick.

New to XAF?

Check out this recent intro video and other XAF-related videos/tutorials here: Getting Started.

Your Feedback Matters!

We look forward to your feedback on our Kubernetes and load-testing examples (please post your feedback on the DevExpress Support Center). Specifically, we’d love to know how these examples address your XAF project requirements. Your feedback will help us improve XAF and its learning materials for popular usage scenarios. Thank you.

NOTE: DevExpress does not assist in administering web servers or hosting environments for customers. We do not consult on various server and operating system configurations as part of our support services. For more information, please review the "Prerequisites" and "Technical Support Scope" sections. If you experience issues, we recommend that you first make sure that your deployment scenario works without XAF. Try a pure Blazor Server app (with the same database and XPO or EF Core for data access). Once you resolve issues with that application, an XAF Blazor app should work as expected.

XAF v23.1 — June 2023 Roadmap (Cross-Platform .NET App UI & Web API Service)

$
0
0

The following list outlines features/capabilities we expect ship for both XAF’s Cross-Platform .NET App UI (XAF) and the DevExpress .NET App Security & Web API Service (by June 2023). We will outline plans for our second major release (v23.2) in July. 

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.

ASP.NET Core Blazor UI

We expect to release the following XAF Blazor UI features/capabilities in our v23.1 release cycle (June 2023):

Scheduler Module

To support this new module, we will integrate the DevExpress Blazor Scheduler control (DxScheduler) within XAF’s Blazor UI. This module will allow XAF developers to display/manage XAF Event and Resource business objects within a calendar. 

Note: If you require scheduler-related functionality in your XAF-powered Blazor app today, you can implement a custom List Editor based on the DevExpress Blazor Scheduler control (
example).


Filter Editor

We will integrate a JavaScript-based filter control from our Web Reporting/Dashboard product line into XAF's DxGridListEditor and CriteriaPropertyEditor. This new feature will support popular criteria language options (based on scalar/value type properties like strings, numbers, etc.). XPO Upcasting, Free Joins, or syntax references and enumerations will not be available (unfortunately, the underlying UI control does not offer these capabilities).

Grid List Editor

We expect to support the following Application Model properties for the ListView node within the Model Editor: Filter, PreviewColumnName, ShowFindPanel, IsFooterVisible. We will also save the state of the Page Size command between opening of Views. XAF will automatically support column header filters once this capability is introduced in the underlying Blazor Grid control.

Property Editors

Our new Color Property Editor will allow you to customize scheduler resources. We also want to support icons in the Enumeration and Boolean Property Editors - this is helpful to distinguish various event states, priorities, and mode.

Main Menu Toolbar

We expect to improve usability for important CRUD operations within XAF’s Blazor UI (creating and saving new records). We want to remove New Action from the root DetailView and ListView. Instead, we want to add an always visible 'Quick Create' Action in the top right corner. Nested ListView toolbars must preserve New Action, as its necessary to add new child records to the aggregated collection. You can vote for your favorite option in the comments section of this SC ticket.

We will also add Save & New and Save & Close Actions to the root and popup DetailView (like XAF WinForms/WebForms counterparts).

Finally, we will add Next Record/Previous Record Actions to help improve navigation (a part of the RecordsNavigationController and "Tools" Action Containers in the top right corner.

Image Pack

We will introduce colored icon support within the main menu toolbar (instead of dark images used today). We will either reuse existing XAF WinForms SVG images or create a new image set from scratch. We will also improve the image picker in the Model Editor and migrate our XAF Blazor image set to the DevExpress.Images library. Finally, we will also support icons in layout tab groups and the view header (much like XAF WinForms/WebForms counterparts).

Form Layout End-User Customization

Thanks to its rich set of runtime UI customization options (for developers and end-users alike), XAF's WinForms UI allows you to address changes in business requirements without the need for redeployment. We expect to introduce similar capabilities to XAF’s Blazor UI.


Form Layout Customization API

We expect to add necessary APIs to access XAF Blazor’s Layout Manager, our DxFormLayout control, and to programmatically customize layout groups and items (again, similar to what’s currently available in WinForms/WebForms.

SaaS/Multi-Tenancy

We will simplify the creation of multi-tenant XAF Blazor apps (and may introduce the same for XAF WinForms should user demand exist) that target a single database or a database per tenant (example #1example #2). We hope to make this possible with a few declarative lines of code and a new reusable module (instead of writing hundreds of lines of code). Please also review our SaaS-related survey below.

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: More customization tips | Blazor UI (FAQ).

Cross-Platform Enhancements

  • We expect to introduce Entity Framework Core 7 (EF Core 7) support in our v23.1 release cycle. EF Core 7 is the latest version of Entity Framework. While EF Core 7 offers numerous advantages over its predecessor (performance and customization included), it also introduced a series of breaking changes that we will need to address.
  • We expect to support Middle Tier Security for EF Core 7 (for WinForms and non-XAF apps). As part of this effort, we hope to ship a new DbContext type and allow you to secure remote connections to a data store from .NET clients. This capability is especially helpful when developing mobile .NET MAUI and Blazor WebAssembly client apps (which cannot have direct database connections due to security considerations). 
  • We will enhance our Application Builders API to address advanced usage scenarios such as integrating a custom connection provider, customizing existing Object Space Providers, etc.
  • We will enhance Dependency Injection support in XAF Blazor/WinForms and our Web API Service. With this addition, you will be able to inject arbitrary services into XAF Controllers and business classes; WinForms apps will also have access to IServiceProvider – much like ASP.NET Core Blazor apps. This capability should simplify many customer customizations, because they will be available in a cross-platform module:
    public class TaskActionsController : ObjectViewController<ObjectView, DemoTask> {
        [ActivatorUtilitiesConstructor]
        public TaskActionsController(ITaskActionsService taskActionsService) {
            TaskActionsService = taskActionsService;
        }
        protected ITaskActionsService TaskActionsService { get; }
  • We expect to add 5-10 new automatic Code Diagnostics. We hope this will save you time in Visual Studio or validate build quality using your CI/CD workflows. If you have not yet enabled these pre-built code & project error diagnostics, we strongly recommend that you do so for your .NET 6 projects.

Web API Services for XAF & Non-XAF UI Clients (Powered by EF Core & XPO ORM)

As you may already know, we officially released our Web API Service in 2022. Our first release included FREE basic CRUD functionality. Our second release introduced many highly-requested paid features in v22.2 (including audit trail, validation, reporting, file attachments, localization, and non-persistent object support). 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: Common Questions about the New DevExpress Web API Service (powered by Entity Framework and XPO ORM)

v23.1 will be a service release for our Web API Service (we need to catch up with documentation and usage example updates). This notwithstanding, we will implement the following popular requests from our customers:

Your Feedback Matters

Thanks,
Dennis Garavsky

Principal Product Manager
dennis@devexpress.com

XAF v23.1 EAP — Runtime Customization, No Code and Usability Enhancements for Blazor UI

$
0
0

As you may already know, we are a couple of months away from our next major update (v23.1). This post describes some of the features we expect to ship in early June and details what’s inside our Early Access Preview build (for additional information, refer to our mid-year 2023.1 roadmap). If you own an active Universal Subscription, feel free to download this Early Access Preview (EAP) build at your convenience.

If you own an active DXperience Subscription and would like to learn more about our Cross-Platform .NET App UI (XAF) or Web API Service, you can explore the features described herein by logging onto the DevExpress Download Manager 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. This will help us fine-tune our implementation before official launch.

If you are using a trial and want to try these preview features today, you can purchase a DevExpress Universal license online (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 clientservices@devexpress.com for preferential upgrade pricing.

What's Inside and What's Next

So as not to overwhelm you with a bunch of information at once, this EAP post focuses on a handful of XAF Blazor v23.1 enhancements. XAF Blazor UI enhancements mostly involve usability and runtime customization capabilities (this is because Low-Code/No-Code .NET application development for Desktop and the Web represents one of XAF’s core development pillars) When time to market and efficiency matters (especially in today's world), XAF can help you deliver line-of-business apps in the shortest possible time using RAD techniques - I will prove this claim in a second.

Note: Additional XAF enhancements from our 2023.1 roadmap are also available in this EAP build today - I will detail these enhancements in separate blog posts. Please stay tuned, because I know many of you are eager to learn more about Middle Tier Security for XAF WinForms UI with EF Core 7/6, Web API Service Swagger Schema support, Multi-Tenancy support for both XAF Blazor and WinForms UI, Dependency Injection support for XAF controllers and business objects.

ASP.NET Core Blazor UI - Part 1

Runtime Form Layout Customization and Enhanced Flexibility 

Much like its WinForms desktop counterpart, XAF Blazor v23.1 allows you to customize form layout at runtime directly in your web browser. If you’ve used XAF's WinForms UI, you already know that runtime UI customization (for both developers and end-users) can be a time saver - customizable apps can address changing business requirements without the need for redeployment.

As you would expect, you can disable these advanced customization capabilities for specific users by setting CustomizationEnabled = False (using the Model Editor and applying it to a specific DetailView node or globally under the Options | LayoutManagerOptions node).

Filter Editor and Find Panel to Help Shape Data

XAF Blazor v23.1 integrates a JavaScript-based filter control from our Web Reporting/Dashboard product line into XAF's DxGridListEditor and CriteriaPropertyEditor. This new feature will support popular criteria language options (based on reference, collection and scalar/value type properties such as strings, numbers, etc.).

This feature should address most advanced filtering scenarios, especially for power users and application administrators. This is another example of XAF’s No-Code/RAD capabilities - removing a large burden from XAF application developers and instead expanding end-user capabilities for the better (to save time and minimize friction).

XAF Blazor v23.1 also supports the following Application Model properties for the ListView node within the Model Editor: IsFooterVisible, PreviewColumnName, Filter, and ShowFindPanel. XAF will also automatically support column header filters once this capability is introduced in the underlying Blazor Grid control (later this year). All these filtering enhancements in DxGridListEditor will be a good alternative to the existing auto filter row.

Colored Icons in Main Menu to Help Distinguish Key UI Commands for End-Users

As you may have noticed above, XAF Blazor v23.1 introduces colored icon support within the main menu toolbar (instead of dark images used today). We created a new SVG image set from scratch (inspired by modern LOB apps). Note that navigation control images have a different style and have not been updated for this EAP - we are looking forward to your feedback before we proceed.

Additional Menu Commands for Faster Data Entry and Navigation for End-Users

XAF Blazor v23.1 improves usability for important CRUD operations such as creating, saving, and navigating records:

  • We removed New Action from the root DetailView to save space,
  • We added Save & New/Save & Close Actions to the root and popup DetailView. Of course, Save & XXX dropdowns remember the last executed item - helpful for repetitive operations like creating numerous records in succession.
  • Next Record/Previous Actions help improve record navigation when you analyze or read data forms (much like XAF WinForms/WebForms counterparts).

We also added "QuickAccess" and "Notifications" Action Containers (top right corner) - you can now place built-in or custom Actions in the top right corner of your app.

Your Feedback Matters!

We recommend that you test the new features outlined in this post within Visual Studio 2022 using our MainDemo.NET.EFCore or MainDemo.NET.XPO demo (from "c:\Users\Public\Documents\DevExpress Demos 23.1\Components\XAF\"). We kindly ask that you use the Employee and Task forms, because other forms have not been fully tested. You can also test the EAP build with your real app, but please remember that this build is not ready for production code.

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 v23.1 release cycle. As its name implies, the EAP offers an early preview of what we expect to ship in two months.

We realize beta-testing is a time-consuming process and we are grateful to those who invest time with our EAP builds. Find the current implementation lacking flexibility? Feel we've overlooked a valuable usage scenario? Does our current implementation fail to address your business requirements?

Please post your thoughts in our roadmap survey OR create a Support Center ticket. We will happily follow up and do what we can to extend the capabilities of our new products/features.

Thanks,
Dennis Garavsky

Principal Product Manager
dennis@devexpress.com

XAF (Cross-Platform .NET App UI & Web API Service) — Year-End Roadmap (v23.2)

$
0
0

This blog post outlines some of our XAF-related development plans for the second half of 2023 (v23.2). As you will see below, key focus areas will continue to remain Blazor, EF Core and .NET 8.

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. 

Common / Cross-Platform / Core Enhancements

.NET 8 Support

Simple and straight to the point: We will support .NET 8 across our XAF Blazor/WinForms UI and Web API Service.

End of .NET Standard 2 Support

With our next major update (v23.2, set for release in December 2023), our assemblies will not be built against this target. Learn more about this change in the following blog post: .NET — .NET Standard 2.0 Deprecation, Support for .NET 6 or .NET 8 (LTS) in DevExpress Libraries (v23.2).

DevExpress Drawing Library Support for Straightforward non-Windows Development

We will eliminate use of System.Drawing.Common references across XAF Blazor/WinForms UI and Web API Service. This will allow our cross-platform libraries to work as expected across Linux, Mac, Windows, Android, iOS for .NET 7, .NET 8 and future target frameworks. This change will also simplify future development and deployment for new UI platforms, such as .NET MAUI and Blazor WebAssembly with .NET 8+.

All these benefits come at a cost of breaking changes such as removal of APIs from the System.Drawing namespace (Image, Bitmap, Color, Font, FontStyle, etc.). Affected XAF modules include Conditional Appearance, Security, ImageLoader, etc. (they will now use replacements from DevExpress.Drawing like DXImage, DXFont, etc.). However, we believe our modernization strategy is certainly worth the effort.

For more information on this and existing solutions today, please review related articles:

Web API Services Powered by EF Core & XPO ORM

As you may already know, our FREE Web API Service supports basic CRUD, authentication/authorization for EF Core/XPO. The DevExpress Web API Service is available free-of-charge (register your free copy today). Active DevExpress Universal Subscribers can also access many advanced paid features included in our Web API Service (such as audit trail, validation, reporting, file attachments, localization, and non-persistent object support). 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: Common Questions about the New DevExpress Web API Service (powered by Entity Framework and XPO ORM).

In v23.2, our Web API Service will automatically generate endpoints for business object methods (decorated with the ActionAttribute). These endpoints can accept a number of parameters and are automatically displayed in the Swagger UI. This is a highly-request feature by both XAF and non-XAF customers as it improves code sharing and saves time/code lines (since you do not need to create custom Web API controllers manually). Of course, you can hide or customize these endpoints in code.


public class Task : BaseObject {
    public virtual DateTime DueDate { get; set; }
    [Action(Caption = "Postpone a task for N days",  
        ToolTip = "Postpone a task. The \"Days\" parameter specifies the number of days the task should be postponed.", 
        TargetObjectsCriteria = "Not [IsComplete]")]
    public void Postpone(PostponeParameters parameters) {
        DueDate += TimeSpan.FromDays(parameters.Days);
    }
}

Multi-Tenancy Module for Blazor and WinForms - Official Release

The Multi-Tenancy Module was first introduced in June 2023 as a Community Technology Preview (CTP). As you may recall, this module helps developers create multi-tenant or SaaS-ready XAF Blazor and WinForms applications (.NET 6+) that target a single database or one database per tenant. To incorporate this capability, you simply need to write a few declarative lines of code instead of writing hundreds of lines of code.

Our v23.2 update will mark the first official release of the DevExpress Multi-Tenancy Module and will include the following:

  • XPO ORM support (v23.1 supported only EF Core)
  • Authentication: Log in with an email/URI/token and a password (the domain automatically resolves the tenant and its storage)
  • Tenant Isolation: Multi-tenant app with multiple databases (a database per tenant)
  • Database Creation: Application automatically creates a tenant database and schema at runtime (if the database does not exist)

Error/Best Practice Code Diagnostics

We expect to add 3-5 new automatic Code Diagnostics. We hope this will save you time in Visual Studio or validate build quality using your CI/CD workflows. If you have not yet enabled pre-built code/project error diagnostics, we strongly recommend that you do so for your .NET 6 projects. In v23.2, we will also support .NET Framework projects.

XAF ASP.NET Core Blazor UI

We expect to release the following XAF Blazor UI features/capabilities in our v23.2 release cycle (December 2023):

Grid List Editor Enhancements

We will support the following features in our DxGridListEditor in v23.2:

  • Context menu for grid headers (just like WinForms/WebForms counterparts). For instance, Column Chooser, Hide Column, Group by Column, Show Auto Filter Row, Filter Editor, or Reset View Settings commands should be available in this context menu.
  • Images for enumerations in column header filters
  • Best Fit for grid columns and 100% height for the grid container
  • Add hyperlinks for reference/lookup properties in ListView (to open a detail form for a related record faster).
  • Tooltips for grid columns
  • Inplace / Grid Row-based Actions

Find Window in Lookup Property Editor

We hope that our enhanced Lookup Property Editor will better address the following common tasks:

  • Search data against a single/multiple fields fast (even for large datasets - just like XAF WebForms...see the screenshot below. To deliver this functionality, our lookup editor will include a Search button and this button will display a separate Find window with a standard data grid and search controls. This Find window will also allow you to create new records using the standard New Action.
  • Use all criteria language features for EF Core and XPO ORM without limitations. Unlike a simple combo box, the Find window will host the standard data grid with all its powerful features, including server mode.
  • Open a complete detail form for the related record (currently selected lookup value) using a hyperlink. This feature will be helpful for those who do not want to view and edit related details in a separate window (currently provided by the Edit button).

Miscellaneous Usability Enhancements

  • Modified ImmediatePostData attribute behavior so that XAF Blazor replicates XAF's WinForms UI.
  • Add Save & New Action to popup windows.
  • Open multiple popup windows, with drag and resize capabilities.
  • Support updates and filtering of dependent/cascade lookup editors using the UsedProperties parameter of the DataSourceProperty attribute (at present, you need to refresh these editors in code using a Controller) 
  • Bypass adapters and access control options in code for List and Property Editors (example: DxGridListEditor.GridModel vs DxGridListEditor.GetGridAdapter().GridModel - learn more).

Scheduler Module - Official Release

The Blazor Scheduler Module was first introduced in June 2023 as a Community Technology Preview (CTP). Our v23.2 update will mark its official release and include the following:

  • Performance boost for large datasets (we are already testing some of these enhancements in v23.1).
  • Simplified Status and Label editor customization (current solutions).
  • Enhanced recurrence editor and new documentation for most popular tasks (how to customize scheduler appointments, appointment mappings, access underlying business objects for appointments, filter resources, etc.).

New Blazor Hosting Modes in .NET 8 and XAF Blazor Compatibility

As you may already know, Blazor in .NET 8 unifies Blazor Server and Blazor WebAssembly hosting modes (learn more from Carl Franklin's video). XAF Blazor is solely powered by Blazor Server (from day one). In v23.2, we will ensure that XAF Blazor Server will work properly with .NET 8 and the latest ASP.NET Core enhancements.

We are not planning to support Blazor WebAssembly/WASM in XAF Blazor v23.2 (it makes little sense for the majority of XAF users based on user feedback so far). As you may recall, we intentionally chose Blazor Server due to key limitations in Blazor WebAssembly itself (for complex line-of-business apps).

In late 2023/early 2024, we will explore multi-threading issues and benchmark Blazor WebAssembly performance once again (to help determine future development strategies). 

XAF WinForms UI

Enhancements to Middle Tier Security for EF Core

As you may know, XAF UI v23.1 for Windows desktop can better meet enterprise security standards with its Middle Tier application server (powered by EF Core 7 ORM). With our solution, EF Core developers can retain their standard DbContext 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).

Thanks to customer feedback and in-house "dog-fooding" efforts, v23.2 will include a number of Middle Tier-related enhancements (such as refresh tokens with JWT authentication and fixes based on additional real-world scenarios).

I want to stress an important point: Non-XAF EF Core developers can benefit from our Middle Tier application server and preserve DbContext with their entity data model (learn more). This is especially critical for many desktop .NET developers (WinForms, WPF, WinUI, etc.), who are now required to meet higher security standards. In a nutshell, these developers need to either retrofit their/modernize their "fat clients" for Windows (#1) or redo everything from scratch using modern Web technologies and Cloud services (#2). Our Middle Tier Security allows you to choose the "easier" and potentially more reliable route (#1), and to "replace" direct database connections with middleware. Review the following code snippet for more information in this regard: 

var httpRemoteRepository = new HttpRemoteRepository(httpClient, typeof(EFCoreDbContext).FullName);
var optionsBuilder = new DbContextOptionsBuilder<EFCoreDbContext>();
optionsBuilder.UseMiddleTier(opt =>
    opt.UseRemoteRepository(httpRemoteRepository));
optionsBuilder.UseChangeTrackingProxies();
optionsBuilder.UseLazyLoadingProxies();
var dbContextOptions = optionsBuilder.Options;
var dbContext = new EFCoreDbContext(dbContextOptions);
var users = dbContext.Employees.ToList();

XAF WebForms UI

Content Security Policy (CSP) Support

XAF's ASP.NET WebForms UI will support Content Security Policy (CSP). CSP helps developers automatically detect and mitigate specific security risks, including Cross-Site Scripting (XSS) and data injection attacks.

Your Feedback Matters

What's New in Our Last Major Release (v23.1)

If you have yet to review the features/capabilities introduced in our most recent major update, please visit the following webpage and let us know what you think of this release by responding to our online survey: Explore Our Newest Features (v23.1).

Thanks,
Dennis Garavsky

Principal Product Manager
dennis@devexpress.com

XAF v23.2 EAP — Straightforward non-Windows Deployment, Inplace Grid Actions for Blazor, Endpoints for Business Object Methods in Web API Service

$
0
0

As you may already know, we are a couple of months away from our next major update (v23.2). This post describes a few XAF-related features we expect to ship in early December and details what’s inside our Early Access Preview build (for additional information on what you can expect, refer to our Year-End 2023.2 roadmap).

As you will see below, XAF key focus areas will continue to remain Blazor, EF Core and .NET 8One of XAF’s core development pillars is Low-Code/No-Code .NET application development (for Web, Desktop and APIs simultaneously). When time to market/efficiency matters (especially in today's world), XAF can help you deliver line-of-business apps in the shortest possible time using familiar RAD methodologies.

If you own an active Universal Subscription, feel free to download this Early Access Preview (EAP) build at your convenience. If you own an active DXperience Subscription and would like to learn more about our Cross-Platform .NET App UI (XAF) or Web API Service, you can explore the features described herein by logging onto the DevExpress Download Manager 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.

If you are using a trial and want to try these preview features today, you can purchase a DevExpress Universal license online (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 clientservices@devexpress.com for upgrade pricing.

What's Inside and What's Next

End of .NET Standard 2 Support

With our next major update (v23.2, set for release in December 2023), our assemblies will not be built against this target.

Learn more about this breaking change and actions to be taken in the following blog post (July, 2023): .NET — .NET Standard 2.0 Deprecation, Support for .NET 6 or .NET 8 (LTS) in DevExpress Libraries (v23.2).

DevExpress Drawing Library Support for Straightforward non-Windows Deployment

We eliminated use of System.Drawing.Common API references across XAF Blazor/WinForms UI and Web API Service. This allowed our cross-platform libraries to work as expected across Linux, Mac, Windows, Android, iOS for .NET 7, .NET 8 and future target frameworks. This change also simplified future development and deployment for new UI platforms, such as .NET MAUI and Blazor WebAssembly with .NET 8+.

Breaking Change

Application Security and Stability Enhancements

  • XAF's ASP.NET WebForms UI supports Content Security Policy (CSP) in v23.2. CSP helps developers automatically detect and mitigate specific security risks, including Cross-Site Scripting (XSS) and data injection attacks.
  • Enhanced logger: we modified the structure of records that we output to log files so that these records do not contain sensitive data - Breaking Change.
  • Enhanced Middle Tier Security for EF Core with WinForms UI.
  • Built-in Multiple Active Result Set (MARS) support for EF Core and non-Microsoft SQL Server databases (PostreSQL, MySql, etc.).
  • Enhanced security for Application Model Differences stored in the database (check out the new default Solution Wizard v23.2 settings for the ModelDifference and ModelDifferenceAspect types in the Updater class).

Endpoints for Business Object Methods in Web API Service

In v23.2, our Web API Service will automatically generate endpoints for business object methods (decorated with the ActionAttribute). These endpoints can accept a number of parameters and are automatically displayed in the Swagger UI. This feature improves code sharing and saves time/code lines (since you do not need to create custom Web API controllers manually).

Documentation


Blazor UI Enhancements

IF you own the DevExpress Universal Subscription or are evaluating our Universal Subscription, we ask that you test the following Blazor UI features in this EAP (v23.2):

  • Hyperlinks for Lookup and Object Property Editors in DxGridListEditor and DetailView (to open a detail form for a related record faster).
  • Inplace / Grid Row-based Actions in DxGridListEditor.

  • Enhanced header filters for date columns.

  • Bypass adapters and access control options in code for List and Property Editors (example: DxGridListEditor.GridModel vs DxGridListEditor.GetGridAdapter().GridModel - Breaking Change).
  • Filter dependent/cascade Lookup Property Editors using the UsedProperties parameter of the DataSourceProperty attribute (in v23.1, you needed to refresh these editors in code using a Controller to view immediate updates).
  • Performance increase in Blazor Scheduler when using large datasets (we are already testing some of these enhancements in v23.1).

Your Feedback Matters!

We recommend that you test the new features outlined in this post within Visual Studio 2022 using our MainDemo.NET.EFCore demo (from "c:\Users\Public\Documents\DevExpress Demos 23.2\Components\XAF\"). 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 our 2023.2 roadmap as  we get closer to official release (set for December 2023). 

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 v23.2 release cycle. As its name implies, the EAP offers an early preview of what we expect to ship in two months.

We realize alpha/beta-testing is a time-consuming process and we are grateful to those who invest time with our EAP builds.Find the current implementation lacking flexibility? Feel we've overlooked a valuable usage scenario? Does our current implementation fail to address your business requirements?

Please post your thoughts in our roadmap survey below OR create a Support Center ticket. We will happily follow up and do what we can to extend the capabilities of our new products/features.

What's New in Our Last Major Release (v23.1)

If you have yet to review the features/capabilities introduced in our most recent major update, please visit the following webpage and let us know what you think of this release by responding to our online survey: Explore Our Newest Features (v23.1).

Thanks,
Dennis Garavsky
Principal Product Manager
dennis@devexpress.com

XAF (WinForms UI) — Case Study by ASTGD: A Complete Medical Management System

$
0
0

Meet Minhazul Islam, a managing director of ASTGD (an IT company in Bangladesh) who has been using our Cross-Platform .NET App UI (XAF) since 2013.

Managing Director


We recently published a case study about their hospital management system (MediManage Pro) powered by XAF - DevExpress WinForms UI and Reporting components. Here is how ASTGD developers described their product:

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 & 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.

Patient Records - MediManage Pro, DevExpress Case-Study

And here’s what Minhazul Islam said about XAF's primary benefits:

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:
- XAF provides automated UI and model editor provides capability to easily customize UI.
- XAF comes with built in security modules that provides roles and user-based permission and it is easy to implement/modify/customize.

Read the full article to learn why ASTGD chose XAF for Windows project development and what they liked about our tools. 

Get Started with XAF today 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's demos in your DevExpress installation or online at https://demos.devexpress.com/xaf/blazordemo/. You can learn more about XAF benefits here, and our Considerations for Newcomers will help you understand whether this application framework is right for your business.

Do You Have a Story to Share?

We'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 case study form and email us at clientservices@devexpress.com.

Thanks,
Dennis Garavsky
Principal Product Manager
dennis@devexpress.com 

Viewing all 148 articles
Browse latest View live