پرووید
منو

آموزش طراحی دامنه محور (Domain Driven Design) و EF Core

زبان: فارسی (دوبله شده)مترجم: پروویددوبلر: پروویدسطح: پیشرفتهمدت زمان: 03:38:46تعداد ویدئوها: 63فایل های پروژه: ناموجود
قیمت:۳٬۹۹۹٬۰۰۰ تومان
این آموزش بخشی از پکیج کامل آموزش طراحی دامنه محور (Domain Driven Design) است که می توانید از تمامی آموزش های آن دیدن کنید.

آموزش ویدئویی طراحی دامنه محور (Domain Driven Design) و EF Core یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی طراحی دامنه محور (Domain Driven Design) و EF Core حفظ کردن Encapsulation است که با نام اصلی DDD and EF Core - Preserving Encapsulation از شرکت Pluralsight منتشر شده است.

طراحی دامنه محور (Domain Driven Design) چیست؟

طراحی دامنه محور یا همان Domain Driven Design در واقع درک نیازهای واقعی کسب و کار مشتری است. ما باید درباره دامنه های مختلف مانند بانکداری، مخابرات، زنجیره تامین، مراقبت های بهداشتی و… دانش داشته باشیم. بنابراین در اینجا دامنه به معنی دانش کسب و کار درباره صنعت خاص است. به طور مشابه طراحی دامنه محور تمرکز بیشتری نسبت به نیازهای کسب و کار دارد نه به تکنولوژی. برای شروع نوشتن یک سیستم، باید بدانیم که مشتری چه چیزی را مد نظر دارد، در حین فاز اولیه هیچگاه درباره برنامه نویسی و معماری آن فکر نمیکنید. هدف اصلی شما درک تمام شرایط کسب و کار مشتری و چگونگی مدل دامنه مورد نیاز او است.

DbContext Encapsulation - نمونه ای از بخش Working with Many-to-one Relationships در آموزش طراحی دامنه محور (Domain Driven Design) و EF Core
نمونه ای از بخش «Working with Many-to-one Relationships» در آموزش طراحی دامنه محور (Domain Driven Design) و EF Core

بنابراین چیزی که ما به دنبال آن هستیم بحث با مشتری درباره نیازهای کسب و کار او است. Domain Driven Design صرفاً بر اساس این فرضیات برای ترسیم کردن نیازهای کسب و کار در مدل دامنه است. طراحی دامنه محور همه چیز درباره چگونگی طراحی مدل دامنه شماست. به این معنا که هر کلاس دامنه باید یک رابطه مستقیم با آنچه که در دامنه کسب و کار است داشته باشد.

کپسوله سازی (Encapsulation) چیست؟

در برنامه نویسی شی گرا کپسوله سازی و یا encapsulation به معنی گروه بندی کردن داده ها به همراه متدهایی است که بر روی آن داده ها کار می کنند. علاوه بر این این کپسوله سازی به معنی محدود کردن دسترسی مستقیم به برخی از اجزای تشکیل دهنده یک object می باشد.

New Use Case - Registering a Student - نمونه ای از بخش Working with Disconnected Graphs of Objects در آموزش طراحی دامنه محور (Domain Driven Design) و EF Core
نمونه ای از بخش «Working with Disconnected Graphs of Objects» در آموزش طراحی دامنه محور (Domain Driven Design) و EF Core

در واقع از encapsulation برای مخفی کردن مقادیر و یا state مربوط به object ها استفاده می شود تا اشخاصی که حق دسترسی مستقیم به آنها ندارند اجازه و امکان انجام چنین کاری را نداشته باشند. درک دقیق و پیاده سازی صحیح کپسول سازی در طراحی شی گرا یک موضوع بسیار بسیار مهم است که باید به آن توجه ویژه شود.

چگونه Backing Field ها از ساختار داخلی Entity محافظت می‌کنند؟

در پروژه‌های مبتنی بر Domain Driven Design، کلاس‌های دامنه نباید صرفاً مجموعه‌ای از Property های قابل‌تغییر باشند؛ آن‌ها باید بتوانند قواعد و محدودیت‌های کسب‌وکار را حفظ کنند. این آموزش پیشرفته نشان می‌دهد چگونه می‌توان با استفاده از Backing Field ها، Collection های داخلی یک Entity را از دسترسی مستقیم بیرونی دور نگه داشت و در عین حال امکان نگاشت آن‌ها به کمک Entity Framework Core را حفظ کرد. درس‌های مربوط به مخفی کردن Collection و حذف یک Item از آن، مسئله کنترل تغییرات درون مدل دامنه را به نمونه‌های مشخص تبدیل می‌کنند.

این رویکرد زمانی اهمیت پیدا می‌کند که تغییر یک رابطه یا اضافه شدن یک عضو به Collection باید از مسیر مشخصی انجام شود، نه با دستکاری آزادانه وضعیت شیء. مباحث مربوط به کلاس Base Entity و الگوی Identity Map نیز به درک بهتر هویت Entity ها و نحوه مدیریت آن‌ها در زمان کار با داده کمک می‌کنند. به این ترتیب، محتوای آموزش میان طراحی کلاس‌های دامنه و نیازهای نگاشت ORM ارتباط برقرار می‌کند و به توسعه‌دهنده نشان می‌دهد چگونه می‌توان از انعطاف EF Core استفاده کرد، بدون اینکه کنترل مدل دامنه به‌سادگی از دست برود.

مدیریت داده‌های بارگذاری‌شده و پیاده‌سازی Domain Event در EF Core

بخش دیگری از آموزش به تفاوت روش‌های بارگذاری رابطه‌ها اختصاص دارد؛ از جمله Eager Loading و Lazy Loading در ارتباط با Relationship های موجود در مدل. انتخاب روش مناسب می‌تواند بر نحوه دریافت داده و زمان اجرای Query ها اثر بگذارد، به‌خصوص وقتی یک Entity با چندین رابطه به اشیای دیگر متصل است. همچنین مباحث مربوط به رابطه‌های Many-to-one و نگاشت Value Object ها، جنبه‌های متفاوتی از مدل‌سازی دامنه را پوشش می‌دهند. بررسی Owned Entity Type ها نیز نشان می‌دهد چگونه می‌توان اشیایی را که هویت مستقل ندارند، در مدل EF Core نگاشت کرد.

در سناریوهایی که Entity از Context جدا شده و سپس دوباره به آن متصل می‌شود، مدیریت Object Graph های Disconnected به توجه ویژه نیاز دارد. آموزش نحوه انتساب یک Disconnected Entity به یک Entity متصل را بررسی می‌کند و در کنار آن، به پیاده‌سازی Domain Event ها و Domain Event Dispatcher می‌پردازد. این ترکیب برای توسعه‌دهندگانی مفید است که می‌خواهند تغییرات مهم مدل دامنه را از منطق واکنش به آن تغییرات جدا کنند. آشنایی با این موضوعات به تصمیم‌گیری درباره مرزهای مسئولیت، نگاشت داده و هماهنگی عملیات در معماری مبتنی بر DDD کمک می‌کند.

سرفصل مطالب آموزش ویدئویی طراحی دامنه محور (Domain Driven Design) و EF Core

فصل اول: مقدمه دوره آموزشی
  • مقدمه دوره آموزشی
فصل دوم: مقدمه
  • مقدمه
  • بررسی Encapsulation و Separation of Concerns
  • بررسی مثال هایی از اهمیت Encapsulation و Separation of Concerns
  • معرفی برنامه مربوط به این دوره آموزشی
  • جمع بندی
فصل سوم: کار کردن با رابطه‌ های Many-to-one
  • مقدمه
  • بررسی Encapsulation در کلاس DbContext
  • مرور اهمیت Encapsulation در کلاس DbContext
  • حذف کردن Public Setter های مربوط به Property ها
  • مرور اهمیت حذف کردن Public Setter های مربوط به Property ها
  • بررسی انواع Relationship ها
  • بررسی Relationship های Many-to-one و مقایسه ID و Navigation Property ها
  • ریفکتور کردن به سمت Navigation Property ها
  • مرور اهمیت ریفکتور کردن و رفتن به سمت Navigation Property ها
  • جمع بندی
فصل چهارم: کار کردن با Lazy Loading
  • مقدمه
  • انجام Eager Loading بر روی Relationship ها
  • انجام Lazy Loading بر روی Relationship ها
  • ریفکتور کردن و رفتن به سمت Lazy Loading
  • مرور اهمیت ریفکتور کردن و استفاده از Lazy Loading
  • بررسی الگوی Identity Map Pattern
  • اهمیت Identity Map Pattern و Referential Equality
  • انجام Encapsulation برای Equality Comparison
  • معرفی کردن یک کلاس Base Entity
  • مرور اهمیت استفاده از یک کلاس Base Entity
  • جمع بندی
فصل پنجم: Map کردن به Backing Field ها
  • مقدمه
  • معرفی رابطه های One-to-many / قسمت اول
  • معرفی رابطه های One-to-many / قسمت دوم
  • مرور اهمیت رابطه های One-to-many
  • مخفی کردن Collection های پشت Backing Field ها
  • مرور مخفی کردن Collection های پشت Backing Field ها
  • معرفی کردن یک Collection Invariant
  • مرور Collection Invariant مطرح شده
  • حذف کردن یک Item از درون یک Collection
  • مرور روند حذف کردن یک Item از درون یک Collection
  • محدودیتهای اعمال Mapping به Backing Field ها در EF Core
  • جمع بندی
فصل ششم: کار کردن با Object Graph های Disconnected
  • مقدمه
  • بررسی یک Use Case جدید: رجیستر کردن یک Student
  • مرور اضافه شدن قابلیت رجیستر شدن یک Student
  • بررسی متدهای Update و Attach در کلاس DbSet
  • مرور متدهای Add و Update و مقایسه آنها با متد Attach در DbSet
  • انتصاب دادن یک Disconnected Entity به یک Connected Entity
  • مرور انتصاب یک Disconnected Entity به یک Connected Entity
  • جمع بندی
فصل هفتم: Map کردن به Value Object ها
  • مقدمه
  • معرفی یک Value Object: Email
  • محدودیت های EF Core و مبحث Value Conversion
  • معرفی کردن یک Multi-property Value Object
  • بررسی Owned Entity Type های مربوط به Entity Framework Core
  • مرور قابلیت Owned Entity Type ها
  • اضافه کردن یک Navigation Property به یک Owned Entity
  • جمع بندی
فصل هشتم: پیاده سازی Domain Event Dispatcher
  • مقدمه
  • بررسی Domain Event ها
  • پیاده سازی Domain Event ها
  • مرور پیاده سازی Domain Event ها
  • بررسی Relationship های Many-to-many
  • معرفی منابع مفید
  • جمع بندی دوره آموزشی
دیدگاه کاربران

دیدگاه ها

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