ASP.NET MVC 3 introduced limited support for dependency injection containers to provide both built-in MVC services and the ability to be the factory for non-service classes like controllers and views. Web API has followed suit with similar functionality, with two critical differences.
First, MVC used several static classes as the container for the default services consumed by MVC. Web API's configuration object replaces the need for these static classes, so the developer can inspect and modify this default service listed by accessing HttpConfiguration.Services.
Second, Web API's dependency resolver has introduced the notion of “scopes.” A scope can be thought of as a way for a dependency injection container to keep track of the objects that it has allocated in some particular context so that they can be easily cleaned up all at once. Web API's dependency resolver uses two scopes:
Chapter 13 contains more detailed information on using dependency injection in both MVC and Web API scenarios.