ممکن است اصطلاحات
Inversion of Control
Dependency Inversion Principle
Dependency Injection
IoC Container
را زیاد شنیده باشید. اما آیا می دانید هرکدام از این اصطلاحات چه معنایی می دهند؟
در اینجا، شما با هر کدام از این اصطلاحات آشنا خواهید شد.
قبل از اینکه بیشتر پیش بروید، مهم است که تفاوت بین Principle و Pattern را درک کنید. شکل زیر مشخص می کند که آیا آنها اصول هستند یا الگو.
همانطور که در شکل بالا نشان داده شده است، IoC و DIP اصول طراحی سطح بالایی هستند که باید هنگام طراحی کلاس ها مورد استفاده قرار گیرند. از آنجایی که آنها اصول هستند، بهترین روش ها را توصیه می کنند اما جزئیات اجرای خاصی را ارائه نمی دهند. Dependency Injection یک پترن و IoC Container یک فریم ورک می باشد.
اصل Inversion of Control یا IoC، عمدتا در طراحی فریم ورک ها مورد استفاده قرار می گیرد. همانطور که می دانیم فریم ورک ها، بستری را شامل فرآیند ها، چرخه ها و رخداد ها فراهم می کنند و با در دست گرفتن جریان اصلی برنامه، در لایه زیرین هر برنامه قرار می گیرند. سپس ما کدهایمان را سوار بر فریم ورک می کنیم و با توجه به قواعد و قوانینی که توسط فریم مشخص شده، کدهایمان را توسعه می دهیم. پس IoC چیزی جز این امر بدیهی نیست که فریم ورک به گونه ای توسعه داده شده است که می تواند در مواقع لزوم کدهای ما را صدا بزند و اینگونه رفتارش را تغییر بدهد و یا Extend شود.
اصل Dependency Inversion Principle یا DIP نشان می دهد که ماژول های سطح بالا نباید به ماژول های سطح پایین وابستگی داشته باشند. هر دو باید به Abstract وابستگی داشته باشند.
پترن Dependency Injection یا DI، یک الگوی طراحی است که اصل IoC را برای وارونه ساختن اشیاء وابسته، پیاده سازی می کند.
فریم ورک IoC Container چارچوبی است که برای مدیریت تزریق خودکار وابستگی در طول برنامه به کار می رود، بطوری که ما به عنوان برنامه نویس دیگر نیازی به وقت و تلاش بیشتر در آن نداریم. کانتینرهای مختلف IoC برای dot net وجود دارد، مانند Unity ، Ninject ، StructureMap ، Autofac و غیره.
پایان