بررسی Unity, Castle Windsor, StructureMap  و Ninject

بررسی Unity, Castle Windsor, StructureMap و Ninject

بسم الله الرحمن الرحیم

بررسی Unity, Castle Windsor, StructureMap  و Ninject

یک مقایسه سریع بر روی چهار DI و IoC داشتم و ابزارهای Unity, Castle Windsor, StructureMap  و Ninject را با دو سناریو متفاوت بررسی شدند.

در یکی از سناریوها ایجاد اشیا بدون سازنده و در سناریو دیگر اشیا با پارامترهای تزریق شده در سازنده شان بررسی شدند.در ابتدا قبل از هر چیزی سعی کردم مطئن شویم که در زمان فراخوانی متدها اشیا ایجاد شوند. نتیجه ایجاد اشیا به وسیله سازنده پیش فرض به صورت زیر است.

StructureMap

بسم الله الرحمن الرحیم

بررسی Unity, Castle Windsor, StructureMap  و Ninject

یک مقایسه سریع بر روی چهار DI و IoC داشتم و ابزارهای Unity, Castle Windsor, StructureMap  و Ninject را با دو سناریو متفاوت بررسی شدند.

در یکی از سناریوها ایجاد اشیا بدون سازنده و در سناریو دیگر اشیا با پارامترهای تزریق شده در سازنده شان بررسی شدند.در ابتدا قبل از هر چیزی سعی کردم مطئن شویم که در زمان فراخوانی متدها اشیا ایجاد شوند. نتیجه ایجاد اشیا به وسیله سازنده پیش فرض به صورت زیر است.

StructureMap


در دوم من پارامترهای سازنده ها را به وسیله DI/IoC به آنها تزریق کردم. زمان ها کمی تغییر کرد اما جایگاه این 4 ابزار تغییری نکرد.

بررسی ابزارهای تزریق وابستگی

در نهایت مقایسه دو تست صورت گرفته به صورت زیر است.

بررسی ابزارهای تزریق وابستگی

StructureMap

StructureMap بهترین ابزاری است که می توانید درNET. می توانید از آن استفاده کنید. Unity  و  Castle Windsorنیز نتایج خوبی داشتند هر چند Unity در سناریوهای پیچیده سریعتر کار می کند. Ninject خیلی کند است هر چند از lightweight code generation (LCG) یا کد سبک استفاده می کند.

آموزش Ninject را نیز قبلا معرفی کرده ایم.

در حال حاضر فکر می کنم کار با StructureMap بسیار خوب است زیرا می توان به سادگی آن را یاد گرفت و از آن استفاده کرد. همچنین می تواند به خوبی از fluent API استفاده کند. امیدواریم در نسخه های بعدی ابزارهای معرفی شده نیز بهتر شوند.



نظرات

  • Hannah Martinez
    رهگذر
    دو شنبه 11 دی 1278 - 0:00

    ممنون استاد بزرگوار.

    من در asp mvc از ninject استفاده می کنم و به روز inject و یا
     private readonly IService _service;

            public AboutController(IService productService)
            {
                _service =Service;
            }

    چون در  پروژه های خود از claslibrary های service , layer , model , view model استفاده می کنم.
    توصیه شما این که من از StructureMap  استفاده کنم؟
    اگه اینطوره آموزشی ندارین در باره StructureMap ؟

    • Judith Bell
      پاسخ
      اسماعیلشیدایی
      دو شنبه 11 دی 1278 - 0:00

      با عرض سلام
      در حال حاضر که آموزشی برای StructureMap در وب سایت قرار داده نشده است اما حتما مطلب کاملی را نیز در زمینه Ioc ها بر روی وب سایت قرار خواهیم داد.
      یاعلی

  • Hannah Martinez
    رهگذر
    دو شنبه 11 دی 1278 - 0:00

    شما در مقایسه ای که انجام دادین ninject نمره بهتری گرفته.

    پس چطور می فرمایید StructureMap  بهتره؟

    • Judith Bell
      پاسخ
      اسماعیلشیدایی
      دو شنبه 11 دی 1278 - 0:00

      با عرض سلام
      اعداد مشخص شده مدت زمانی است که هر ابزار برای انجام کار نیاز دارد ، بنابراین Ninject مدت زمان بیشتری را از ما برای انجام کار خواهد گرفت پس نسبت به بقیه ابزار ها کند تر است

      موفق باشید

نظرات یا سوالات خودرا با ما درمیان بگذارید

0912 097 5516 :شماره تماس
0713 625 1757 :شماره تماس