Deployment Recommendations for XAF Blazor UI Applications
- 5 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. Refer to the following topic for step-by-step instructions:
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). Refer to the following topics for more information on how to deploy your XAF Blazor application to IIS and Linux:
- Deploy an ASP.NET Core Blazor Server Application to IIS
- Deploy an ASP.NET Core Blazor Server Application to Linux with Nginx
- Deployment Troubleshooting Guide
When you deploy your Blazor apps to IIS, activate the following features:
If your application includes Reports, Office or Dashboards modules, and you’re running it on Linux or macOS, additional setup may be required. If you encounter any issues with rendering or exporting documents and dashboards, consult the following help topics:
- Use Office File API on Linux
- Use Office File API on macOS
- Use Reporting on Linux and macOS
- Dashboard Backend - Linux and macOS Specifics
You may also find these community resources helpful:
- Deploy and scale an XAF Blazor Server app: use Azure Kubernetes Service to serve hundreds of users
- XAF in Linux (Video by Joche Ojeda)
- Monitor XAF’s Blazor App on Ubuntu (Video by Joche Ojeda)
- XAF Blazor .NET CLI application templates for Linux or macOS (by Joche Ojeda)
High Load Scenarios, Load Testing, and Scalability
ASP.NET Core Blazor Server technology is designed to store the user’s 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:
- Deploy and scale an XAF Blazor Server app: use Azure Kubernetes Service to serve hundreds of users
- XAF Blazor load testing on Linux and MySql using Puppeteer and GitHub Actions
- XAF ASP.NET WebForms and Blazor UI deployment, scalability and load testing considerations
- XAF Blazor load test with 100 clients (Video by Joche Ojeda)
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.