Если вы принимаете Определение Фаулера , инверсия управления является гораздо шире термин, чем DI, который охватывает все рамки использование, где вы подключаете в рамки, но каркас еще в контроле.
Например, в .NET, рамки, такие как ASP.NET или Windows Presentation Foundation, которые в конечном счете контроль, но предоставляют различные События и Швы можно использовать для создания приложения , То же самое верно и на других платформах.
Dependency Injection является специализация из IoC, который применяется IoC специально для управления зависимостями.
Да, IoC означает, что сам класс не управляет вещами, а вызывается извне. Инъекция зависимостей - это способ сделать это.
Инъекция зависимостей - это действительно более конкретный термин, более четко определенный, чем инверсия управления.
Это один из немногих пунктов, по которым мы с Марком не согласны. По моей книге, принцип инверсии управления принцип - такой же, как и здесь, поэтому я не буду его пересказывать.
Инъекция зависимостей - это просто акт экстернализации создания зависимостей компонентами во внешний мир.
Управление этими зависимостями (и многими другими вещами) - это то, чем занимаются контейнеры инверсии управления, а использование DI как части этого - всего лишь деталь реализации.