> For the complete documentation index, see [llms.txt](https://dotnetweb30-ke.gitbook.io/ke/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://dotnetweb30-ke.gitbook.io/ke/design/ood/inversion-of-control-containers-and-the-dependency-injection-pattern.md).

# Inversion of Control Containers and the Dependency Injection pattern

### Inversion of Control (инверсия управления)

это некий абстрактный принцип, набор рекомендаций для написания слабо связанного кода. Суть которого в том, что каждый компонент системы должен быть как можно более изолированным от других, не полагаясь в своей работе на детали конкретной реализации других компонентов.&#x20;

### Dependency Injection (внедрение зависимостей)&#x20;

это одна из реализаций этого принципа (помимо этого есть еще Factory Method, Service Locator).&#x20;

### IoC-контейнер

это какая-то библиотека, фреймворк, которая позволит вам упростить и автоматизировать написание кода с использованием данного подхода на столько, на сколько это возможно. Например: Ninject, Autofac, Unity, Windsor Castle, StructureMap, в ASP.NET Core есть встроенный контейнер внедрения зависимостей, который представлен интерфейсом IServiceProvider.
