Dependency Injection design pattern is widely used in modern applications. It decouples objects to the extent that no client code needs to be changed simply because an object it depends changes to a different one. It brings you a lot of benefits,
Provider pattern was introduced in ASP.NET 2.0 and it gives the developers the flexibility of where to store the state of ASP.NET features (e.g. Session State, Membership, Output Cache etc.). In ASP.NET 4.6.2, we added async support for Session State Provider and Output Cache Provider.