PDA

View Full Version : آموزش: مقایسه بین structure map و nenject



r4hgozar
شنبه 27 دی 1393, 12:27 عصر
سلام
من در پروژه هام ninject رو نصب می کنم از nuget و بعد اون رو بصورت زیر در app-start کانفیک می کنم و ازش استفاده می کنم.

private static void RegisterServices(IKernel kernel)
{
kernel.Bind(x => x.FromThisAssembly().SelectAllClasses().BindAllInt erfaces());


kernel.Bind(x =>
x.FromAssembliesMatching("Blog.*")
.SelectAllClasses()
.BindDefaultInterface());
}


و مثلا در کنترل

public class PostController : Controller
{
#region DI


private readonly IPostServices _postServices;
public PostController(IPostServices postServices)
{
_postServices = postServices;
}


#endregion



اما در جایی خوندم کهstructure map سرعت بیشتری داره از ninject.
می خواستم بدونم آیا structure map هم روش کار کردن باهاش به همین سادگیه؟؟ و آیا سرعت اون واقعا بیشتره؟

hadi0x7c7
شنبه 27 دی 1393, 16:16 عصر
منظور شما از سرعت، سرعت setup کردن پروژه هست یا عملکرد این دو ابزار نصبت به هم؟

r4hgozar
شنبه 27 دی 1393, 18:21 عصر
سلام.
منظورم عملکرد 2 تا هست.

hakim22
شنبه 27 دی 1393, 22:00 عصر
راستش اگر شما اصول رو بدونید عملا هیچ فرق خاصی بین این ابزار وجود نداره. خیلی های Unity دوس دارن چون محصول جانبی مایکروسافت هست. بعضی ها روش Structure Map دوس دارن. (حداقل 10 محصول مشابه وجود داره)در کارهای معمولی و ساده همه ی آنها یکسان هستند. در بعضی پروژه ها نیازهای خاصی وجود داره که انجامش با Ninject راحت تره. نه اینکه بقیه نمیتونن انجام بدن . فقط اینکه نسبت بسیار زیادی از برنامه نویسان از Ninject استفاده می کنند و منابع متعدد (کتابهای آموزشی) و نمونه کدهای فراوان داره. همین باعث میشه اونهایی که میخوان تازه از این نوع سیستم استفاده کنند جذب Ninject میشوند. و این خودش باز باعث شده طرفدارهای اون بازهم بیشتر باشه.

از نظر Performance سریعترین نیست (http://www.palmmedia.de/blog/2011/8/30/ioc-container-benchmark-performance-comparison) ولی به نظر من کد در خیلی جاهای دیگر میتونه طوری نوشته شده باشه که کارایی رو پایین میاره و سهم Ninject و ابزار مشابه در کارایی زیاد نیست. اگر کدهای شما در همه جای دیگه با بالاترین بازدهی نوشته شده و فقط مشکل همین قسمته میتونید از اونهایی که سریعتره استفاده کنید. همه ی اونها معمولا مکانیزم Convention دارند و میتونید به راحتی Setup کنید.

r4hgozar
یک شنبه 28 دی 1393, 08:38 صبح
ممنون از جواب شما اقای حکیم.
من از اینجا این رو خودم بصورت کامل .
البته در یک سایت خارجی هم دیده بودم این نمودار رو که الان هر چی می گردم پیداش نمی کنم.
http://ably.ir/post/unity-castle-windsor-structuremap-ninject-who-has-best-performance

hakim22
یک شنبه 28 دی 1393, 09:41 صبح
این رو در نظر داشته باشید که بررسی که در بالا ارائه شده برای مپ کردن 500 هزار اینترفس به کلاس مربوطه بوده و حداکثر اختلاف زمانی بین بهترین و بدترین 6 ثانیه بوده.

پروژه ها معمولا چندتا اینترفیس نیاز دارن !؟
5 تا یا 10 تا . حداکثری که من داشتم حدود 25 تا .

و در پروژه های کوچک هیچ تاثیر قابل توجهی نداره. وقتی تعداد از چندهزار عبور میکنه اختلاف زمانی زیاد میشه و وقتی از چند صد هزار میگذره اثرشو نشون میده !

r4hgozar
یک شنبه 28 دی 1393, 09:47 صبح
سلام.
ممنون از جواب های علمی و با حوصله شما.

aroshanzamir
یک شنبه 28 دی 1393, 10:45 صبح
سلام
در رده بندی های صورت گرفتهautofac بیشترین سرعت را دارد...ولی من خودم از استراکچر مپ استفاده می کنم

r4hgozar
یک شنبه 28 دی 1393, 10:55 صبح
ممنون.
میشه درباره سوالی که پرسیدم جواب بدین؟
بعد از نصب چه تنیماتی داره؟
ممنون میشم سوالم رو در بالا ببینین و جواب بدین