پرووید
منو

آموزش تزریق وابستگی در ASP.NET Core

زبان: فارسی (دوبله شده)مترجم: پروویددوبلر: پروویدسطح: متوسطمدت زمان: 01:56:18تعداد ویدئوها: 45فایل های پروژه: ناموجود
قیمت:۲٬۷۹۹٬۰۰۰ تومان
این آموزش بخشی از پکیج کامل آموزش پیشرفته ASP.NET Core است که می توانید از تمامی آموزش های آن دیدن کنید.

آموزش تزریق وابستگی در ASP.NET Core یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته آموزشی آموزش تزریق وابستگی و یا Dependency Injection در ASP.NET Core است که با نام اصلی Dependency Injection in ASP.NET Core از شرکت Pluralsight منتشر شده است.

تزریق وابستگی به کنترلرها در ASP.NET Core

کنترلرهای ASP.NET Core MVC وابستگی ها را به صراحت از طریق constructor ها درخواست می کنند.

Constructor Injection - نمونه ای از بخش Injecting and Resolving Dependencies در آموزش تزریق وابستگی در ASP.NET Core
نمونه ای از بخش «Injecting and Resolving Dependencies» در آموزش تزریق وابستگی در ASP.NET Core

ASP.NET Core دارای پشتیبانی داخلی برای تزریق وابستگی (DI) است. DI تست و نگهداری برنامه ها را آسان تر می کند.

تزریق سازنده (Constructor Injection)

سرویس ها اغلب به عنوان پارامتر تابع سازنده اضافه می شوند و سیستم runtime این سرویس ها  را از درون service container تشخیص می دهد.

The Microsoft Dependency Injection Container - نمونه ای از بخش The Microsoft Dependency Injection Container در آموزش تزریق وابستگی در ASP.NET Core
نمونه ای از بخش «The Microsoft Dependency Injection Container» در آموزش تزریق وابستگی در ASP.NET Core

سرویس ها معمولاً با استفاده از interface ها تعریف می شوند. برای مثال، اپلیکیشنی را در نظر بگیرید که به زمان فعلی نیاز دارد. Interface زیر سرویس IDateTime را نشان می دهد:

public interface IDateTime {
  DateTime Now {
    get;
  }
}
کد زیر interface مربوط به IDateTime را پیاده سازی می کند:
public class SystemDateTime: IDateTime {
  public DateTime Now {
    get {
      return DateTime.Now;
    }
  }
}
سرویس را به service containe اضافه کنید:
public void ConfigureServices(IServiceCollection services) {
  services.AddSingleton < IDateTime, SystemDateTime > ();

  services.AddControllersWithViews();
}
کد زیر بر اساس ساعتی از روز یک تبریک به کاربر نمایش می دهد:
public class HomeController: Controller {
    private readonly IDateTime _dateTime;

    public HomeController(IDateTime dateTime) {
      _dateTime = dateTime;
    }

    public IActionResult Index() {
      var serverTime = _dateTime.Now;
      if (serverTime.Hour < 12) {
        ViewData["Message"] = "It's morning here - Good Morning!";
      } else if (serverTime.Hour < 17) {
        ViewData["Message"] = "It's afternoon here - Good Afternoon!";
      } else {
        ViewData["Message"] = "It's evening here - Good Evening!";
      }
      return View();
    }
برنامه را اجرا کنید و یک پیام بر اساس زمان نمایش داده می شود.

ثبت سرویس‌ها و مدیریت طول عمر آن‌ها در ASP.NET Core

در ASP.NET Core، ثبت سرویس‌ها مشخص می‌کند Container داخلی برنامه چگونه وابستگی‌های موردنیاز را ایجاد و ارائه کند. آموزش Dependency Injection in ASP.NET Core ابتدا ثبت یک سرویس را بررسی می‌کند و سپس به Service Descriptorها و جایگزینی یا حذف Registrationها می‌پردازد. این مباحث برای زمانی کاربرد دارند که یک پیاده‌سازی باید با پیاده‌سازی دیگری جایگزین شود یا تنظیمات سرویس‌ها در طول توسعه تغییر کند. همچنین آشنایی با Transient Serviceها کمک می‌کند تفاوت رفتار سرویس‌ها از نظر طول عمر را در طراحی برنامه در نظر بگیرید و نحوه ایجاد نمونه‌ها را بهتر مدیریت کنید.

انتخاب Lifetime تنها یک تنظیم ساده نیست؛ وابستگی میان سرویس‌هایی با طول عمر متفاوت می‌تواند رفتار ناخواسته‌ای ایجاد کند. به همین دلیل، آموزش موضوع جلوگیری از Captive Dependencyها را پوشش می‌دهد. این مسئله زمانی مطرح می‌شود که یک سرویس با عمر طولانی‌تر، وابستگی‌ای با عمر کوتاه‌تر را در خود نگه دارد و عملاً طول عمر آن را تحت تأثیر قرار دهد. بررسی این موارد به توسعه‌دهنده کمک می‌کند ثبت سرویس‌ها را بر اساس مسئولیت و الگوی استفاده آن‌ها انجام دهد. برای کسانی که برنامه‌های ASP.NET Core را توسعه می‌دهند، درک این قواعد می‌تواند از خطاهای طراحی مرتبط با چرخه عمر سرویس‌ها جلوگیری کند.

پیاده‌سازی Factory و سازمان‌دهی Registrationها با Extension Method

همه سرویس‌ها را نمی‌توان صرفاً با ثبت مستقیم یک نوع و استفاده از Constructor ایجاد کرد؛ گاهی ساخت نمونه به منطق یا اطلاعات بیشتری نیاز دارد. این آموزش Implementation Factoryها را بررسی می‌کند و نشان می‌دهد چگونه می‌توان هنگام ثبت سرویس، شیوه ساخت آن را مشخص کرد. این قابلیت زمانی کاربرد دارد که ایجاد یک وابستگی به تنظیمات یا سرویس‌های دیگر وابسته باشد. در کنار آن، موضوع کدنویسی با Interfaceها به طراحی قراردادهایی کمک می‌کند که مصرف‌کنندگان سرویس به آن‌ها وابسته باشند، نه به جزئیات یک پیاده‌سازی مشخص.

با افزایش تعداد سرویس‌ها، محل و شیوه ثبت آن‌ها نیز بر خوانایی پروژه اثر می‌گذارد. آموزش استفاده از Extension Methodها برای سازمان‌دهی کدهای Registration را پوشش می‌دهد تا پیکربندی وابستگی‌ها بتواند در متدهای معنادار و قابل‌استفاده مجدد گروه‌بندی شود. همچنین Constructor Injection و تزریق سرویس‌ها به Razor Viewها بررسی می‌شوند؛ دو سناریویی که نحوه دریافت وابستگی را در بخش‌های مختلف برنامه نشان می‌دهند. شناخت این گزینه‌ها کمک می‌کند ساختار پیکربندی را با معماری برنامه هماهنگ کنید و از پراکنده شدن تنظیمات مربوط به سرویس‌ها در نقاط مختلف کد جلوگیری کنید.

سرفصل مطالب آموزش ویدیویی تزریق وابستگی در ASP.NET Core

فصل اول: مقدمه این دوره آموزشی
  • مقدمه دوره
فصل دوم: ثبت اولین سرویس شما
  • مقدمه و بررسی کلی
  • چرا از تزریق وابستگی (Dependency Injection) استفاده کنیم؟
  • کدنویسی در Interface ها
  • معکوس کردن کنترل با Constructor Injection
  • ثبت اولین سرویس شما
  • مزایای Dependency Injection
  • جمع بندی
فصل سوم: بررسی Dependency Injection مربوط به مایکروسافت
  • مقدمه و بررسی کلی
  • بررسی Dependency Injection مربوط به مایکروسافت
  • چه چیزی را با I. Container رجیستر کنیم؟
  • دسترسی پیدا کردن به Configuration از طریق یک کنترلر
  • بررسی Lifetime های مربوط به سرویس ها
  • بررسی سرویس های Transient
  • بررسی سرویس های Singleton
  • بررسی سرویس های Scoped
  • جلوگیری کردن از Captive Dependency ها
  • جمع بندی
فصل چهارم: رجیستر کردن سرویس های پیچیده تر
  • مقدمه و بررسی کلی
  • معرفی اپلیکیشن Tennis Booking
  • بررسی Service Descriptor ها
  • مقایسه Add با TryAdd
  • رجیستر کردن چند باره یک Interface
  • جایگزینی و حذف Registration ها
  • رجیستر کردن چندین Implementation از یک Interface
  • بهبود چندیدن Implementation با TryAddEnumerable
  • بررسی Implementation Factory ها
  • رجیستر کردن یک Implementation برای چندین Service Type
  • رجیستر کردن Open Generic ها
  • کد نویسی تمیز با استفاده از Extension Method ها
  • جمع بندی
فصل پنجم: بررسی Inject و رفع Dependency ها
  • مقدمه و بررسی کلی
  • مکانیسم Service Resolution
  • بررسی Constructor Injection
  • بررسی Action Injection
  • تزریق سرویس ها به درون Middleware
  • تزریق سرویس ها به درون Razor View ها
  • ایجاد و استفاده از Scope ها
  • جمع بندی
فصل ششم: گزینه های فراتر از Container درونی
  • مقدمه و بررسی کلی
  • معرفی و نصب Scrutor
  • مکانیزم Assembly Scanning با استفاده از Scrutor
  • اعمال کردن Decorator Pattern با استفاده از Scrutor
  • جایگزین کردن Dependency Injection Container درونی
  • جمع بندی
دیدگاه کاربران

دیدگاه ها

برای ثبت دیدگاه ابتدا وارد حساب کاربری شوید.
هنوز دیدگاهی برای این محصول تایید نشده است.