HttpClient looks simple on the surface, but using it well in a long-running application is harder than it looks. Two specific failure modes show up in production code: socket exhaustion when a new HttpClient is created for every request, and stale DNS when a single HttpClient lives for the entire process lifetime. IHttpClientFactory, from the Microsoft.Extensions.Http package, is the standard fix for both. This lesson covers what the factory actually does, the three usage patterns (basic, named, typed), how delegating handlers add cross-cutting concerns, how resilience handlers plug in, and the handler lifetime rules you need to understand to use the factory correctly.