Skip to main content
All docs
V22.2

Deployment Recommendations for XAF Blazor UI Applications

  • 4 minutes to read

Note

Single-file deployment and executable option (<PublishSingleFile>) is not supported.

Azure Deployment

You can deploy XAF’s Blazor Server UI applications to Azure. If you are new to Azure, refer to the following Microsoft deployment topic: Host and deploy ASP.NET Core Blazor Server.

Popular Azure deployment options include:

  • The default option with no additional settings and no WebSockets.
  • Application Request Routing (ARR).
  • Azure SignalR Service. This option requires additional setup in the SolutionName.Blazor.Server/Startup.cs file. If you miss ProxyHubConnectionHandler in this file, you may receive the following error message: "ValueManagerStorageAccessor.Storage is null likely due to incorrect Azure SignalR Service or Blazor application settings".

    public void ConfigureServices(IServiceCollection services) {
        services.AddSingleton(
            typeof(HubConnectionHandler<>),
            typeof(ProxyHubConnectionHandler<>)
        );
    //...
    }
    

Note

Set the static AzureCompatibility.Enable property to true at the application startup (at the top of the ConfigureServices method in the SolutionName.Blazor.Server/Startup.cs file) to resolve issues with rendering and printing in Rich Text Editor, RichEditDocumentServer, Reports and PDF Export libraries on the Microsoft Azure Web Sites.

Windows and Linux Deployment

You can deploy XAF Blazor UI application in Windows with IIS or Linux with Nginx/Apache (with or without Docker/Kubernetes). You may find these community resources helpful:

When you deploy your Blazor apps to IIS, activate the following features:

High Load Scenarios, Load Testing, and Scalability

ASP.NET Core Blazor Server technology is designed to store user state in memory to combine fast responses to user actions with server-side data processing. This stateful architecture means that memory consumption increases with each user. After a certain number of simultaneous users, the application can reach its hosting machine’s memory limit.

We cannot provide a universal calculator for web server hardware/software requirements, nor can we comment on overall performance without tests (every application is unique). 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).

XAF Blazor apps are stateful and are mostly used in a local Intranet with a limited set of users (often deployed internally). We cannot recommend XAF’s Blazor UI for high-load applications that should serve hundreds or thousands of concurrent web clients on a single web server (even with vertical scaling). You can horizontally scale an XAF Blazor UI application with multiple web servers and loading balancing using standard ASP.NET deployment methods. Even with horizontal scaling, we recommend that you carefully:

  • Test your XAF Web apps under conditions close to your production environment. Emulate the user load.
  • Measure performance over time and decide on XAF’s suitability after that.

You may find these community resources helpful:

Cross-Platform Desktop Apps With Electron.NET

You can build cross platform desktop apps with ASP.NET Core (Razor Pages, MVC, Blazor). Electron.NET is a wrapper around a regular Electron application with an embedded ASP.NET Core application. The current Electron.NET CLI builds Windows/macOS/Linux binaries. For more information, watch the following video by Joche Ojeda: XAF with Electron for Windows, MacOS and Linux.

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.