Back to JetBrains

Scaling Blazor With .NET Aspire and Azure Container Apps | Michael Washington | .NET Day 2026

JetBrainsOctober 15, 202630m
In a Nutshell

Blazor Data Orchestrator is an open-source MIT-licensed scheduling platform built on .NET Aspire and Blazor Server that provides centralized logging, complex multi-group scheduling, and web-based code editing for containerized C# and Python tasks. It solves Azure Container Apps' limitations—no unified logs, basic cron jobs, no code visibility, no shared settings—by adding dashboards, versioned code management, and direct AI integration that works in both web and Visual Studio environments. The system deploys via standard AZD to Azure Container Apps, lets users write unrestricted code with any NuGet or Python package, debug with breakpoints, and scale containers up or down for cost efficiency.

AI-Generated Notes

These notes were generated by AI and may contain inaccuracies.

Michael Washington, a Microsoft MVP, presents the Blazor Data Orchestrator, an open-source project licensed under MIT. The project was developed with Saad as a passion project, not a commercial product. It serves as a coordination platform built entirely on Microsoft Aspire and Blazor Server.

The project addresses the need for complex task scheduling when working with containers, particularly Microsoft Container Service. The developers wanted sophisticated scheduling capabilities beyond simple cron jobs, requiring multiple groups and multiple schedules.

  • Code editor integration for writing container code in C# or Python
  • Full Python support despite the developers being C# programmers
  • Complete artificial intelligence integration since most code is now written with AI assistance
  • No restrictions on NuGet packages or Python packages
  • Easy debugging in Visual Studio, Visual Studio Code, or any code editor

Containers provide complete insulation and isolated environments for jobs. They enable performance scaling for large tasks, such as moving hundreds of millions of rows at a time. Containers can be activated for big jobs and then deactivated to avoid paying for unused compute. The code developed in the development environment is identical to production code. Container services support automatic recovery and restart if containers malfunction. Container sizes can be selected based on job requirements, with costs varying accordingly.

Azure Container Apps lack several essential features:

  • No central registry of logs, causing logs to scatter across different locations
  • Scheduled jobs (cron jobs) are very basic and lack automatic restart on failure
  • No code editor for examining task code when managing 50+ tasks
  • No shared resources or settings across all tasks
  • No dashboard showing currently running, scheduled, or completed tasks
  • No central security management

The project provides centralized logging, complex scheduling systems, web-based code modification with save and debug capabilities, and publishing functionality. Additional features include dashboards and centralized management.

The developers considered visual designers like those in N8N but rejected this approach. Visual designers limit functionality, make error correction difficult or impossible, and restrict AI usage within visual constraints. The chosen approach emphasizes direct coding, which removes restrictions and allows AI to fully leverage its programming capabilities.

AI is fully integrated whether using the web version or Visual Studio. The AI understands how to program tasks compatible with Blazor Data Orchestrator. Users can utilize any NuGet package or Python package and debug in their preferred environment.

Requirements include Docker or Podman installation and Visual Studio, Visual Studio Code, or preferred code editor. Users clone the repository and press F5 to launch. The database runs in a container with full configuration. The system opens via Microsoft Azure, and first-time users encounter an installation wizard for setting administrator credentials.

Creating a new job involves clicking "Create a new job," which launches a wizard for filling details, specifying scheduling parameters, setting webhooks if needed, viewing C# or Python code, accessing application settings files with authentication details, and utilizing Managed Identity options. An AI assistant and event logging are available. Jobs can be downloaded as NuGet packages for environment transfer or as Visual Studio solutions. Code changes maintain version history with rollback capabilities.

Users can create new Visual Studio projects or download existing jobs as Visual Studio projects. Pressing F5 in Visual Studio launches a web browser version. The AI utilizes the Copilot command-line interface, providing standard Copilot functionality that can access local files. Standard debugging features like breakpoints and step-through execution are fully supported.

Deployment uses standard AZD publishing through Aspire. Users log in, select subscriptions, name environments, and the system automatically calculates Aspire configurations. Clicking the web application link provides immediate access.

Access blazordata.net to reach the GitHub repository for code download or cloning. Complete documentation guides all steps. The Aspire plugin in Visual Studio Code enables one-button deployment.

Job creation includes naming ("test experiment"), environment organization into groups for classification, schedule setting, parameter passing, logging scope configuration, webhook creation, and code editing. Sample code snippets demonstrate structure requirements. Tasks must contain a function called "task" returning a text value, accepting automatically passed transactions including task ID, agent ID, and environment settings.

Sample code fetches weather conditions for postal codes. Changing code to postal code 90011, saving, and clicking "Run task now" compiles the code with error display if compilation fails. The system automatically navigates to logs showing task completion in one second with recorded temperature data.

Code can be downloaded as NuGet packages for production environment transfer. Current tasks can be loaded as Visual Studio solutions. New tasks can generate fresh Visual Studio projects. First compilation takes approximately 5 minutes due to Copilot command interface download.

C# code resides in main.cs containing the specific method signature. Python code uses equivalent structure. The executor searches for this method to begin execution. Breakpoints and step-through debugging are supported.

AI assistance is available for code writing. The system integrates with GitHub Copilot, offering automatic options. Assembly and task execution proceed with breakpoint support for debugging.

Central event logging enables searching and error identification across dozens of tasks. Upcoming tasks and recent activities are viewable. Administration supports group creation. Task queues allow container size specification (large, small, varying) for cost control. Time zone settings and AI configurations support OpenAI, Azure OpenAI, Azure Foundry, Anthropic, and Google.

Microsoft and Google authentication enable account-based login without passwords. Secret Keychain Display supports security without username/password requirements. Initial installation requires username/password setup, but accounts can be deleted afterward, relying solely on Google or Microsoft authentication. Multiple authentication methods can be combined.

The project originated from extensive container usage experience. Previous approaches included SSIS jobs, simple Visual Basic Windows scheduling programs, and Windows services running on Azure virtual machines with 50 dedicated services. Container discovery revealed cost advantages over virtual machines that could cost $1000 monthly. The central problem was lack of centralized logging and control panels. Development began in December with the realization that AI could solve every encountered problem.

Features emerged from actual needs rather than theoretical additions. The NuGet package download capability enables code visibility in new environments despite compilation. Version rollback and Visual Studio project download features complete the development lifecycle flexibility.

AI integration appears throughout the system - web application, Visual Studio desktop solutions, and code editors. Skills profiles guide AI on job requirements and project structure. The two-person team completed development on weekends using AI assistance, as manual development would have required 5-6 developers over a year.

The system is feature-rich and stable for business use. Primary limitation is heavy Microsoft Azure focus, though it runs on AWS and Google containers without specific addressing. Community involvement is hoped for expanding multi-cloud support.

Blazor Data Orchestrator functions as a scheduling tool, dashboard, logging repository, code visibility platform, and product lifecycle management system. Any NuGet or Python package enables actual functionality scaling. The system avoids restrictions, supporting any conceivable task functionality without user interface constraints during task execution.

Keep JetBrains in your library

Save the videos and channels worth coming back to, and find them again in one place.