The Unity Application Block (Unity) is a lightweight, extensible dependency injection (DI) container. It facilitates building loosely coupled applications and provides developers with the following advantages:
Simplified object creation, especially for hierarchical object structures and dependencies;
Â· Abstraction of requirements; this allows developers to specify dependencies at run time or in configuration and simplify management of crosscutting concerns;
Â· Increased flexibility by deferring component configuration to the container;
Â· Service location capability; this allows clients to store or cache the container.
Â· To promote the principles of modular design through aggressive decoupling;
Â· To raise awareness of the need to maximize testability when designing applications;
Â· To provide a fast and lightweight dependency injection container mechanism for creating new object instances and managing existing object instances;
Â· To expose a compact and intuitive API for developers to work with the container;
Â· To support a wide range of code languages, with method overrides that accept generic parameters where the language supports these;
Â· To implement attribute-driven injection for constructors, property setters, and methods of target objects;
Â· To provide extensibility through custom and third-party container extensions;
Â· To provide the performance required in enterprise-level line-of-business (LOB) applications.
For an introduction to dependency injection, see the article Inversion of Control Containers and the Dependency Injection pattern by Martin Fowler.
More details avilable here: http://msdn2.microsoft.com/en-us/library/cc468366.aspx