Professional ASP.NET MVC 4
by Jon Galloway, Phil Haack, Brad Wilson, K. Scott Allen, Scott Hanselman
Enabling Dependency Injection
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:
- A per-configuration scope—For services global to the configuration, cleaned up when the configuration is disposed
- A request-local scope—For services created in the context of a given request, such as those consumed by a controller, and cleaned up when the request is completed
Chapter 13 contains more detailed information on using dependency injection in both MVC and Web API scenarios.
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access