<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>.NET Made Easy: new and updated lessons</title>
  <subtitle>A free, written C# and .NET course: 315 lessons from your first program to production.</subtitle>
  <link href="https://dotnetmadeeasy.com/feed.xml" rel="self" type="application/atom+xml" />
  <link href="https://dotnetmadeeasy.com/" rel="alternate" type="text/html" />
  <id>https://dotnetmadeeasy.com/</id>
  <updated>2026-10-17T22:03:23+00:00</updated>
  <author><name>Layerbit</name><uri>https://layerbit.co.in/</uri></author>
  <icon>https://dotnetmadeeasy.com/favicon-32x32.png</icon>
  <entry>
    <title>.NET Architecture Review: Capstone Wrap-Up</title>
    <link href="https://dotnetmadeeasy.com/Content/346-final-architecture-review.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/346-final-architecture-review.html</id>
    <published>2026-09-01T10:31:23+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>A final architecture review of the OrderFlow capstone: step back from thirteen working pieces and check the whole distributed .NET system holds together.</summary>
  </entry>
  <entry>
    <title>Structured Logging Across Services: Correlated .NET Logs</title>
    <link href="https://dotnetmadeeasy.com/Content/340-logging-2.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/340-logging-2.html</id>
    <published>2026-09-01T10:28:53+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Make one order&#x27;s journey through five services readable: correlated, structured logging in a real .NET system, stage by stage through the pipeline.</summary>
  </entry>
  <entry>
    <title>Monitoring a .NET System With Business Metrics</title>
    <link href="https://dotnetmadeeasy.com/Content/341-monitoring.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/341-monitoring.html</id>
    <published>2026-09-01T10:28:53+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Go beyond auto-instrumentation: add the business metrics that tell you whether OrderFlow is healthy right now, before any customer notices a problem.</summary>
  </entry>
  <entry>
    <title>Choosing a Testing Strategy for a Real .NET Application</title>
    <link href="https://dotnetmadeeasy.com/Content/342-testing.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/342-testing.html</id>
    <published>2026-09-01T10:28:53+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Match each testing technique to what each part of OrderFlow actually risks, instead of applying one kind of test everywhere in the codebase.</summary>
  </entry>
  <entry>
    <title>Containerizing a Real .NET App: Docker Image and Probes</title>
    <link href="https://dotnetmadeeasy.com/Content/343-containerization.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/343-containerization.html</id>
    <published>2026-09-01T10:28:53+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Ship OrderFlow as a container image a cluster can run, restart and health-check, with one readiness endpoint covering its three real dependencies.</summary>
  </entry>
  <entry>
    <title>Performance Optimization in .NET: Profile, Fix, Verify</title>
    <link href="https://dotnetmadeeasy.com/Content/344-performance-optimization.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/344-performance-optimization.html</id>
    <published>2026-09-01T10:28:53+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Turn a slow spot on the OrderFlow dashboard into a profiled, fixed and verified improvement, starting with N+1 queries hidden in the hot path.</summary>
  </entry>
  <entry>
    <title>Production Deployment Pipeline for a .NET Application</title>
    <link href="https://dotnetmadeeasy.com/Content/345-production-deployment.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/345-production-deployment.html</id>
    <published>2026-09-01T10:28:53+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Take OrderFlow from a laptop to production with a deployment pipeline that enforces what each stage must prove before customers get the release.</summary>
  </entry>
  <entry>
    <title>Designing an Enterprise .NET Application: Capstone Blueprint</title>
    <link href="https://dotnetmadeeasy.com/Content/333-designing-enterprise-apps.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/333-designing-enterprise-apps.html</id>
    <published>2026-09-01T10:28:27+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Start the capstone: design OrderFlow, an order-management system in .NET, from its core entities and services to the constraints it must handle.</summary>
  </entry>
  <entry>
    <title>Clean Architecture Project in .NET: OrderFlow Capstone</title>
    <link href="https://dotnetmadeeasy.com/Content/334-clean-architecture-2.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/334-clean-architecture-2.html</id>
    <published>2026-09-01T10:28:27+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Apply Clean Architecture to a real .NET order-management API: what lives in each project, and how placing an order flows through all four layers.</summary>
  </entry>
  <entry>
    <title>Authorization Policies in a Real ASP.NET Core API</title>
    <link href="https://dotnetmadeeasy.com/Content/335-authentication-2.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/335-authentication-2.html</id>
    <published>2026-09-01T10:28:27+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Decide endpoint by endpoint what users may do in OrderFlow, the ASP.NET Core capstone API, with real authorization policies and resource checks.</summary>
  </entry>
  <entry>
    <title>EF Core in a Real Project: Repository and Pooling</title>
    <link href="https://dotnetmadeeasy.com/Content/336-database.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/336-database.html</id>
    <published>2026-09-01T10:28:27+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Wire EF Core into the OrderFlow capstone: a real repository, query optimization and connection pool sizing working together in one .NET API.</summary>
  </entry>
  <entry>
    <title>Redis Caching in a Real .NET API: Cache-Aside Pattern</title>
    <link href="https://dotnetmadeeasy.com/Content/337-caching-2.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/337-caching-2.html</id>
    <published>2026-09-01T10:28:27+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Add Redis to the OrderFlow capstone with the cache-aside pattern, and trace a price change end to end to keep cached data correct across instances.</summary>
  </entry>
  <entry>
    <title>Background Processing Pipeline With BackgroundService</title>
    <link href="https://dotnetmadeeasy.com/Content/338-background-processing.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/338-background-processing.html</id>
    <published>2026-09-01T10:28:27+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Run OrderFlow&#x27;s checkout pipeline with .NET&#x27;s BackgroundService: one base class, four stages, and an honest look at what this design can&#x27;t survive.</summary>
  </entry>
  <entry>
    <title>Reliable Messaging With Kafka and the Outbox Pattern</title>
    <link href="https://dotnetmadeeasy.com/Content/339-messaging.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/339-messaging.html</id>
    <published>2026-09-01T10:28:27+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Close OrderFlow&#x27;s reliability gap with the outbox pattern published through Kafka, so checkout events survive crashes and reach every consumer.</summary>
  </entry>
  <entry>
    <title>C# File-Based Apps: Run a Single .cs File With dotnet run</title>
    <link href="https://dotnetmadeeasy.com/Content/331-modern-file-based-apps.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/331-modern-file-based-apps.html</id>
    <published>2026-09-01T10:02:02+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Run a C# program from a single .cs file with dotnet run, with no project file needed. Learn how file-based apps work in .NET 10 and when to use them.</summary>
  </entry>
  <entry>
    <title>C# 14 Lambda Parameter Modifiers Without Types</title>
    <link href="https://dotnetmadeeasy.com/Content/328-lambda-parameter-modifiers.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/328-lambda-parameter-modifiers.html</id>
    <published>2026-09-01T10:01:11+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>In C# 14, lambda parameters can use modifiers like ref and out without spelling out their types. See the before and after, and the rules.</summary>
  </entry>
  <entry>
    <title>C# 14 Partial Constructors Explained</title>
    <link href="https://dotnetmadeeasy.com/Content/329-partial-constructors.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/329-partial-constructors.html</id>
    <published>2026-09-01T10:01:11+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>C# 14 lets a constructor be split into a declaring part and an implementing part, so a source generator can supply the body. How it works, with examples.</summary>
  </entry>
  <entry>
    <title>C# 14 User-Defined Compound Assignment Operators</title>
    <link href="https://dotnetmadeeasy.com/Content/330-user-defined-compound-assignment.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/330-user-defined-compound-assignment.html</id>
    <published>2026-09-01T10:01:11+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>C# 14 lets a type define += and other compound assignment operators directly, so a += b can update in place instead of creating a new value.</summary>
  </entry>
  <entry>
    <title>What&#x27;s New in C# 14: Every New Feature Explained</title>
    <link href="https://dotnetmadeeasy.com/Content/323-what.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/323-what.html</id>
    <published>2026-09-01T10:00:48+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>A guided tour of C# 14: extension members, the field keyword, null-conditional assignment, span conversions, partial constructors and more, with examples.</summary>
  </entry>
  <entry>
    <title>C# 14 Extension Members: Extension Properties Explained</title>
    <link href="https://dotnetmadeeasy.com/Content/324-extension-members.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/324-extension-members.html</id>
    <published>2026-09-01T10:00:48+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>C# 14 extension members in full: extension properties, static extension members and the extension block syntax, and what it means for extension methods.</summary>
  </entry>
  <entry>
    <title>C# 14 field Keyword: Field-Backed Properties Explained</title>
    <link href="https://dotnetmadeeasy.com/Content/325-field-backed-properties.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/325-field-backed-properties.html</id>
    <published>2026-09-01T10:00:48+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>C# 14&#x27;s field keyword lets a property add logic without declaring its own backing field. Compare auto-properties, full properties and the new style.</summary>
  </entry>
  <entry>
    <title>C# 14 Null-Conditional Assignment: ?. on the Left Side</title>
    <link href="https://dotnetmadeeasy.com/Content/326-null-conditional-assignment.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/326-null-conditional-assignment.html</id>
    <published>2026-09-01T10:00:48+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>C# 14 lets ?. and ?[] appear on the left of an assignment, so the value is only assigned when the object isn&#x27;t null. The rules, with examples.</summary>
  </entry>
  <entry>
    <title>C# 14 Span Conversions: Implicit Span&lt;T&gt; Conversions</title>
    <link href="https://dotnetmadeeasy.com/Content/327-enhanced-span-conversions.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/327-enhanced-span-conversions.html</id>
    <published>2026-09-01T10:00:48+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>C# 14 adds implicit conversions between arrays, Span&lt;T&gt; and ReadOnlySpan&lt;T&gt;, making span-based APIs easier to call. What changed and why it matters.</summary>
  </entry>
  <entry>
    <title>Database Bottlenecks in .NET: Diagnose Slow Data Access</title>
    <link href="https://dotnetmadeeasy.com/Content/320-database-bottlenecks.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/320-database-bottlenecks.html</id>
    <published>2026-09-01T09:45:38+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>When a .NET app is slow because of its database: the recurring root causes, a diagnosis flow, and worked examples starting with N+1 queries.</summary>
  </entry>
  <entry>
    <title>Production Incident Analysis for .NET Applications</title>
    <link href="https://dotnetmadeeasy.com/Content/321-production-incident-analysis.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/321-production-incident-analysis.html</id>
    <published>2026-09-01T09:45:38+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Five failure modes can look identical in production. Learn a diagnostic decision tree for .NET incidents that rules causes out instead of guessing.</summary>
  </entry>
  <entry>
    <title>Debugging .NET in Production: Observe Without Pausing</title>
    <link href="https://dotnetmadeeasy.com/Content/315-debugging-production-issues.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/315-debugging-production-issues.html</id>
    <published>2026-09-01T04:54:46+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>You can&#x27;t pause production. Learn how to debug live .NET apps by observing without stopping them and capturing evidence for later analysis.</summary>
  </entry>
  <entry>
    <title>Finding Memory Leaks in .NET Applications</title>
    <link href="https://dotnetmadeeasy.com/Content/316-memory-leaks.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/316-memory-leaks.html</id>
    <published>2026-09-01T04:54:46+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>.NET has a GC but can still leak. Learn the few patterns behind most leaks, especially event handlers, and how to follow a GC root chain to the cause.</summary>
  </entry>
  <entry>
    <title>Diagnosing High CPU in .NET Apps: A Practical Guide</title>
    <link href="https://dotnetmadeeasy.com/Content/317-high-cpu.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/317-high-cpu.html</id>
    <published>2026-09-01T04:54:46+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Tell healthy load from a bug when CPU hits 100%. Learn the usual suspects, a step-by-step diagnosis flow, and a real catastrophic regex backtracking case.</summary>
  </entry>
  <entry>
    <title>Diagnosing Deadlocks in Production .NET Apps</title>
    <link href="https://dotnetmadeeasy.com/Content/318-deadlocks-2.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/318-deadlocks-2.html</id>
    <published>2026-09-01T04:54:46+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Find a deadlock in a .NET process you can&#x27;t step through: freeze the whole picture, read the threads, and tell a deadlock from thread pool starvation.</summary>
  </entry>
  <entry>
    <title>Thread Pool Starvation in .NET: Causes and Fixes</title>
    <link href="https://dotnetmadeeasy.com/Content/319-thread-pool-starvation.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/319-thread-pool-starvation.html</id>
    <published>2026-09-01T04:54:46+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Every request hangs, but nothing is deadlocked. Learn why the .NET thread pool grows slowly on purpose, how starvation happens, and how to fix it.</summary>
  </entry>
  <entry>
    <title>Unit Testing in C# With xUnit: A Practical Guide</title>
    <link href="https://dotnetmadeeasy.com/Content/308-unit-testing.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/308-unit-testing.html</id>
    <published>2026-09-01T04:54:21+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Write unit tests in C# with xUnit, and see how automated tests replace manual checking as your .NET code grows. Clear examples from the first test up.</summary>
  </entry>
  <entry>
    <title>Integration Testing in ASP.NET Core: Test the Real App</title>
    <link href="https://dotnetmadeeasy.com/Content/309-integration-testing.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/309-integration-testing.html</id>
    <published>2026-09-01T04:54:21+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Test the real, assembled ASP.NET Core application and catch the wiring and configuration bugs that unit tests can never see.</summary>
  </entry>
  <entry>
    <title>Mocking in C# With Moq: Mocks vs Stubs Explained</title>
    <link href="https://dotnetmadeeasy.com/Content/310-mocking.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/310-mocking.html</id>
    <published>2026-09-01T04:54:21+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Isolate code under test in C# with Moq. Learn the precise difference between mocks and stubs, and how depending on abstractions makes mocking possible.</summary>
  </entry>
  <entry>
    <title>Testcontainers in .NET: Test Against a Real Database</title>
    <link href="https://dotnetmadeeasy.com/Content/311-testcontainers.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/311-testcontainers.html</id>
    <published>2026-09-01T04:54:21+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Use Testcontainers in .NET to start a real database in Docker for your tests, instead of mocks or in-memory providers that hide real bugs.</summary>
  </entry>
  <entry>
    <title>API Testing in .NET: Test the Contract, Not Just the Logic</title>
    <link href="https://dotnetmadeeasy.com/Content/312-api-testing.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/312-api-testing.html</id>
    <published>2026-09-01T04:54:21+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Correct logic doesn&#x27;t guarantee a correct API. Learn to test status codes, headers and JSON field names in .NET so contract breaks are caught early.</summary>
  </entry>
  <entry>
    <title>Performance Testing .NET APIs: Percentiles, Not Averages</title>
    <link href="https://dotnetmadeeasy.com/Content/313-performance-testing.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/313-performance-testing.html</id>
    <published>2026-09-01T04:54:21+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Measure .NET API performance the right way: define a target, generate realistic load, and read latency percentiles instead of misleading averages.</summary>
  </entry>
  <entry>
    <title>Load Testing .NET Applications: Find Your Breaking Point</title>
    <link href="https://dotnetmadeeasy.com/Content/314-load-testing.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/314-load-testing.html</id>
    <published>2026-09-01T04:54:21+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Load test .NET apps to find where they break before your users do: the three common shapes of load test and how to read what they tell you.</summary>
  </entry>
  <entry>
    <title>.NET Aspire Tutorial: Introduction to the AppHost</title>
    <link href="https://dotnetmadeeasy.com/Content/306-net-aspire-introduction.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/306-net-aspire-introduction.html</id>
    <published>2026-09-01T04:34:36+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Get started with .NET Aspire: describe your app&#x27;s services and dependencies in code with an AppHost project, with orchestration and telemetry built in.</summary>
  </entry>
  <entry>
    <title>Kubernetes Health Probes for .NET: Liveness vs Readiness</title>
    <link href="https://dotnetmadeeasy.com/Content/302-health-probes.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/302-health-probes.html</id>
    <published>2026-09-01T04:32:23+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>How Kubernetes calls your .NET health endpoints: liveness and readiness probes, httpGet probe configuration, and what happens when a probe fails.</summary>
  </entry>
  <entry>
    <title>Logging in Containers: Structured Logs From .NET Apps</title>
    <link href="https://dotnetmadeeasy.com/Content/303-logging-and-observability.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/303-logging-and-observability.html</id>
    <published>2026-09-01T04:32:23+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Containers have no log files you can tail. Learn how .NET apps should write structured logs in a container and let the platform collect and keep them.</summary>
  </entry>
  <entry>
    <title>Scaling .NET Apps Horizontally: Why Statelessness Matters</title>
    <link href="https://dotnetmadeeasy.com/Content/304-scaling-net-applications.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/304-scaling-net-applications.html</id>
    <published>2026-09-01T04:32:23+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Vertical scaling hits a ceiling. Learn horizontal, elastic scaling for .NET apps, and why statelessness is what lets you run twenty instances safely.</summary>
  </entry>
  <entry>
    <title>Cloud-Native .NET: Designing Apps for the Cloud</title>
    <link href="https://dotnetmadeeasy.com/Content/305-cloud-native-net.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/305-cloud-native-net.html</id>
    <published>2026-09-01T04:32:23+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Running in the cloud is not the same as being cloud-native. Learn the design principles that let .NET apps expect failure and scale with the platform.</summary>
  </entry>
  <entry>
    <title>Docker for .NET Developers: Multi-Stage Dockerfile Guide</title>
    <link href="https://dotnetmadeeasy.com/Content/298-docker-and-net.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/298-docker-and-net.html</id>
    <published>2026-09-01T04:32:02+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Containerize .NET apps with Docker: what a container really is, and how a multi-stage Dockerfile builds a small, production-ready image.</summary>
  </entry>
  <entry>
    <title>Containerize ASP.NET Core: Ports, Binding and Docker</title>
    <link href="https://dotnetmadeeasy.com/Content/299-containerized-asp-net-core.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/299-containerized-asp-net-core.html</id>
    <published>2026-09-01T04:32:02+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Why an ASP.NET Core app that works locally refuses traffic inside a container, how to bind to all interfaces, and how to build a container-ready app.</summary>
  </entry>
  <entry>
    <title>Environment Variables in .NET: The Double Underscore Rule</title>
    <link href="https://dotnetmadeeasy.com/Content/300-environment-variables.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/300-environment-variables.html</id>
    <published>2026-09-01T04:32:02+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Map environment variables to nested .NET configuration keys with the double underscore convention, so container and cloud settings bind correctly.</summary>
  </entry>
  <entry>
    <title>Secrets Management in .NET: Keeping Credentials Safe</title>
    <link href="https://dotnetmadeeasy.com/Content/301-secrets-management.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/301-secrets-management.html</id>
    <published>2026-09-01T04:32:02+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Secrets need a higher bar than ordinary configuration. Learn why, and how .NET apps load credentials from dedicated secret stores instead of config files.</summary>
  </entry>
  <entry>
    <title>Cloud Configuration in .NET: Twelve-Factor Config</title>
    <link href="https://dotnetmadeeasy.com/Content/297-configuration-for-cloud.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/297-configuration-for-cloud.html</id>
    <published>2026-09-01T04:23:38+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>How .NET configuration changes in the cloud: no server to edit, config injected fresh on every start, and the twelve-factor app approach to settings.</summary>
  </entry>
  <entry>
    <title>Eventual Consistency and the CAP Theorem Explained</title>
    <link href="https://dotnetmadeeasy.com/Content/295-eventual-consistency.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/295-eventual-consistency.html</id>
    <published>2026-09-01T04:13:41+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Why distributed systems can&#x27;t always show the latest write instantly, what the CAP theorem says, and how to engineer around the consistency window.</summary>
  </entry>
  <entry>
    <title>REST API Design Best Practices: The Richardson Maturity Model</title>
    <link href="https://dotnetmadeeasy.com/Content/284-rest-api-architecture.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/284-rest-api-architecture.html</id>
    <published>2026-09-01T04:10:48+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Design REST APIs other teams can rely on: the Richardson Maturity Model, resource design, and keeping a contract stable when other services depend on it.</summary>
  </entry>
  <entry>
    <title>Microservices in .NET: Benefits, Costs and Boundaries</title>
    <link href="https://dotnetmadeeasy.com/Content/285-microservices.html" rel="alternate" type="text/html" />
    <id>https://dotnetmadeeasy.com/Content/285-microservices.html</id>
    <published>2026-09-01T04:10:48+00:00</published>
    <updated>2026-10-17T22:03:23+00:00</updated>
    <category term="Production .NET" />
    <summary>Microservices move complexity from your code to the network. Learn when that trade is worth it, where service boundaries come from, and what it costs.</summary>
  </entry>
</feed>
