Inversion of Control یا IoC اصل طراحی‌ای است که در آن کنترل ساخت یا فراخوانی اجزا از کد سطح پایین به یک چارچوب یا جزء بیرونی واگذار می‌شود. Dependency Injection یکی از روش‌های رایج پیاده‌سازی این اصل است.

IoC مفهومی گسترده‌تر از Service Container است. هدف آن کاهش وابستگی مستقیم اجزا و واگذاری مدیریت چرخه اجرا یا ساخت به یک سازوکار بیرونی است.

این مفهوم در یک پروژه واقعی

وقتی فریم‌ورک چرخه درخواست و ساخت کنترلر را مدیریت می‌کند، کنترل جریان از کد برنامه‌نویس به زیرساخت منتقل شده است. این یکی از شکل‌های IoC است.

درک تفاوت این موضوع با تزریق وابستگی و سرویس کانتینر به انتخاب راهکار مناسب‌تر کمک می‌کند.

تفاوت IoC با تزریق وابستگی

وارونگی کنترل مفهومی عمومی است که در آن فریم‌ورک یا زیرساخت زمان و نحوه اجرای برخی اجزا را مدیریت می‌کند. Dependency Injection یکی از روش‌های دستیابی به کنترل وابستگی‌هاست و تمام انواع IoC را پوشش نمی‌دهد.