IoC Container
IoC Container is a framework for implementing automatic dependency injection.
before I explain IoC Container first lets know what is dependency injection
Dependency Injection
It is a design pattern used to implement IoC. It allows the creation of dependent objects outside of a class and provides those objects to a class through different ways.
The Dependency Injection pattern involves three things which are client, service and the injector so, there will be three types of classes involves in this process.
- Client Class: The client class is a class which depends on the service class.
- Service Class: The service class is a class that provides service to the client class.
- Injector Class: The injector class injects the service class object into the client class.
The injector class injects dependencies in three ways: through a constructor, or through a property, or through a method. so, there are three types of Dependency Injection which are:
- Constructor Injection: In the constructor injection, the injector supplies the dependency through the client class constructor.
- Property Injection: In the property injection, the injector supplies the dependency through a public property of the client class.
- Method Injection: In the method injection, the client class implements an interface which declares the method(s) to supply the dependency and the injector uses this interface to supply the dependency to the client class.
Let come back to the IoC Container.
IoC Container manages object creation and it's life-time, and also injects dependencies to the class. The IoC container creates an object of the specified class and also injects all the dependency objects through a constructor or a property or a method at run time and disposes it at the appropriate time. This is done so that we don't have to create and manage objects manually.
All the containers must provide easy support for the following DI lifecycle.
Register: The container must know which dependency to instantiate when it encounters a particular type. This process is called registration. Basically, it must include some way to register type-mapping.
Resolve: When using the IoC container, we don't need to create objects manually. The container does it for us. This is called resolution. The container must include some methods to resolve the specified type, the container creates an object of the specified type, injects the required dependencies if any and returns the object.
Dispose: The container must manage the lifetime of the dependent objects. Most IoC containers include different lifetime managers to manage an object's lifecycle and dispose it.
There are many open source containers available for .NET. Some are listed below.
DryIoc
Unity
StructureMap
Ninject
Autofac
Simple Injector
Light Inject
Comments
Post a Comment