Don’t implement `RabbitMQ.Client` directly. It’s complex and error-prone. **MassTransit** abstracts the message broker (RabbitMQ, Azure Service Bus, SQS), providing a unified API for consumers, sagas, and fault tolerance. Defining a Consumer Configuration Key Takeaways MassTransit handles **Connection Recovery** and **Retry Policies** out of the box. Use **Sagas** for long-running stateful workflows.
Read more โBicep Modules: Enterprise Infrastructure Scale
Copy-pasting Bicep code defeats the purpose of Infrastructure as Code. **Modules** allow you to strictly define inputs and outputs for reusable components (like a standardized VNET or Storage Account), enforcing compliance across the enterprise. Creating a Module Consuming the Module Key Takeaways Publish modules to a **Private Bicep Registry** (ACR) for cross-team sharing. Use `br:myregistry.azurecr.io/bicep/storage:v1` […]
Read more โAzure Static Web Apps: Now General Availability
Azure Static Web Apps (SWA) has exited preview. It is the best way to host SPAs (React, Vue, Blazor) on Azure. Key Features Global Distribution: Content is served from the Edge, like a CDN. Integrated API: You can host an Azure Functions backend in the same repo (`/api`). Auth: Built-in support for GitHub, Twitter, and […]
Read more โBuilding a GraphQL API with Hot Chocolate 11
Hot Chocolate is the premier GraphQL server for .NET. Version 11 brings “Zero Latency” execution engine improvements. Setup Projection The real power is in [UseProjection]. It translates nested GraphQL queries into optimized EF Core SQL queries (SELECT only what is requested).
Read more โAzure Key Vault: Rotation Policies
Static secrets are a risk. “Key Rotation” limits the blast radius of a leak. Azure Key Vault now supports automated rotation for encryption keys, and we can build logic for secret rotation (e.g., SQL passwords). The Rotation Logic (Azure Functions) Key Takeaways Use **Managed Identity** so the rotation function itself needs no secrets. Implement the […]
Read more โC# 10 Preview: Global Usings
C# 10 (coming with .NET 6) aims to reduce file clutter. **Global Usings** allow you to define namespace imports once for the entire project. Manual Creation Create a file `GlobalUsings.cs`: Implicit Usings The SDK can do it for you based on project type. This automatically imports `System.Net.Http.Json`, `Microsoft.AspNetCore.Builder`, etc., in Web projects. Key Takeaways Reduces […]
Read more โ