PDA

View Full Version : حرفه ای: تفاوت autofac ,ninject,structure map



سعید کشاورز
سه شنبه 21 آذر 1396, 20:23 عصر
سلام دوستان.
خیلی به بحث DI آشنایی ندارم.
اما کلیت کار رو میدونم چیه.. و مزیت اون رو تقریبا فهمیدم چیه.
حالا سوال دقیقا عنوان تاپیکی هست که زدم.
فرقشون توی چیه؟

ali_md110
چهارشنبه 22 آذر 1396, 09:35 صبح
این فریموورکها در سرعت و همچنین منابع پشتیبانی و راهنما و امکاناتی که در دسترس قرار میدهند تفاوتهایی دارند
ninject سرغت کمتری نسبت به دو گزینه ذیگر دارند
توی این آدرس تفاوتهای این فریممورکها نوشته شده
http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison

اگر .net core استفاده میکنید خودش یک ioc توکار داره و نیاز به فریممورکهای ثالث نیست
در بین این 3 گزینه structuemap رو بهتر میدونم

hakim22
چهارشنبه 22 آذر 1396, 10:37 صبح
اصل کار در همه یکی هست ولی روشش ممکنه متفاوت باشه. از دستورات مختلفی استفاده میکنن ولی یک کار رو انجام میدن.

بعضی از این فریم ورکها مثل Ninject قدیمی تر هستند و توسط خیلی از برنامه نویسان مورد استفاده قرار گرفتن. به همین دلیل منابع آموزشی درمورد اونها بیشتره و اگر به مشکلی برخورد کنید سریعتر جوابشو پیدا می کنید. همینطور Ninject در میان سایر فریم ورکها قابلیت های بیشتری داره و افزونه های زیادی هم براش تهیه شده. ولی بعضی Benchmark ها نشون میدن که سرعت کمتری داره.
البته باید بگم مسئله ی سرعت در پروژه های بزرگ و با حجم بسیار بالای درخواست خودش رو نشون میده.

در هر زمان می توانید IoC Container رو در پروژه عوض کنید پس این یک تصمیم اساسی در پیاده سازی پروژه نیست.

در اینجا تست سرعت IoC Container های مختلف رو می بینید :
http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison
این زمان ها بر اساس میلی ثانیه درج شده و بعد از 500 هزاربار درخواست بدست اومده. می بینید که حتی بعد از 500 هزاربار درخواست هم تفاوتها آنقدر آشکار نیست.
(حتی اگر شما سایتی داشته باشید که این حجم درخواست رو نیاز داشته باشه و سروری که بتونه اون رو پشتیبانی کنه)

در این لیست فریم ورکها از نظر سرعت کلی و محبوبیت بررسی شدن :
http://www.codetuple.com/articles/aspnet/HQMvY32Nzxp/ioc-containers-a-comparison-1/

می بینید که Unity در مقام اول از نظر محبوبیته ولی سریعترین نیست.
نکته ی مهم درباره ی سرعت اینه که با بالا رفتن قابلیت های یک فریم ورک سرعتش کم میشه چون موارد بیشتری رو باید بررسی کنه تا اجرا بشه.

در نهایت انتخاب IoC Container به این بر میگرده که شما کار کردن با کدوم یکی رو زودتر یاد میگیرید. معمولا بعد از یاد گرفتن یکی از اینها توجهی برای اینکه سراغ دیگری برید وجود نداره.