آموزش طراحی دامنه محور در سی شارپ Domain Driven Design

1,699,000 ریال

خرید دانلودی آموزش طراحی دامنه محور DDD در سی شارپ

دانلود دمو
سایت منتشر کنندهپلورال سایت
تعداد ویدیو95
مترجممرتضی گیتی
مدت زمان04:49:12
دوبلرمرتضی گیتی

آموزش طراحی دامنه محور در سی شارپ Domain Driven Design یکی دیگر از آموزش های گروه آموزشی پرووید می باشد که در این قسمت آن را به شما معرفی می کنیم. این بسته ی آموزشی نیز یکی از دوره های آموزشی دیگر که در حوزه ی فارسی سازی آموزش های انگلیسی تنظیم شده است می باشد. عنوان این بسته ی آموزشی طراحی دامنه محور و میکروسرویس ها در سی شارپ است که با نام اصلی آموزش طراحی دامنه محور در سی شارپ Domain Driven Design Fundamentals از شرکت Pluralsight منتشر شده است.

در این آموزش شما با عناصر یک domain model و aggregate ها در طراحی دامنه محور و repository ها آشنا خواهید شد. همچنین با مشکلات مدل سازی و اجزای فنی DDD و نحوه مدیریت پیچیدگی نیز آشنا خواهید شد.

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

طراحی دامنه محور برای توسعه نرم افزار و همچنین جلوگیری از پیچیدگی آن است. هدف اصلی Domain-Driven Design در توسعه نرم افزار این است که با اتصال به قسمت های مربوط به نرم افزار در حال توسعه، ساختن برنامه های پیچیده را آسان کند. به عبارت دیگر DDD بر سه اصل اصلی تمرکز می کند:

  • بر core domain و domain logic تمرکز دارد.
  • می توانید پایه و اساس طرحهای پیچیده را بر اساس مدلهای domain تنظیم کنید.
  •  به طور مداوم با متخصصان domain همکاری دارید تا مدل برنامه را بهبود بخشیده و هر گونه مسائل مرتبط با domain را حل کنید.

در طراحی دامنه محور، اریک ایونز چند اصطلاح رایج را که هنگام توصیف و بحث در مورد فاکتور ها و روش هایی که در DDD مفید هستند، اینگونه بیان می کند:

  • Context: تنظیماتی که در آن یک کلمه یا یک عبارت نمایش داده می شود و معنای آن را تعیین می کند. در واقع جملات در مورد یک مدل فقط در یک Context قابل درک است.
  • Model: سیستمی از abstraction ها که aspect های انتخاب شده یک domain را توصیف می کند و می تواند برای حل مشکلات مربوط به آن domain مورد استفاده قرار گیرد.
  • Ubiquitous Language: زبان فراگیر یا Ubiquitous Language زبانی است که حول محور domain model سازماندهی می شود و توسط همه اعضای تیم به منظور ارتباط برقرار کردن فعالیت های تیم با نرم افزار در دست ساخت مورد استفاده قرار می گیرد.
  • Bounded Context: توصیف یک مرز یا boundary (معمولاً یک زیر سیستم، یا کار یک تیم خاص) که در آن یک مدل خاص تعریف شده و قابل اجرا است.

Domain Driven Design Fundamentals snapshot

بررسی Building Block ها

طراحی دامنه محوریا همان Domain-driven design تعدادی از مفاهیم سطح بالا را تعریف می کند که می توانند در کنار یکدیگر برای ایجاد و اصلاح domain model ها استفاده شوند:

  • Entity: یک object می باشد که بر اساس تداوم پیوسته اش تعریف می شود، در مقایسه با object های سنتی که توسط attribute هایشان تعریف می شوند.
  • Value Object: یک آبجکت immutable است یعنی غیرقابل تغییر است و که دارای ویژگی هایی است، اما identity منحصر بفردی ندارد.
  • Domain Event: یک آبجکت است که برای ثبت یک رویداد مجزا مربوط به model activity در سیستم استفاده می شود. در حالی که همه event ها درون سیستم قابل ردیابی هستند، یک domain event فقط برای event type ها ایجاد می شود که متخصصان domain به آن اهمیت می دهند.
  • Aggregate: یک کلاستر از entity ها و value object ها با مرزهای مشخص شده در اطراف گروه می باشد. به جای اینکه به هر entity یا value object اجازه دهید همه اقدامات را به تنهایی انجام دهد، این aggregate مجموعه ای از عناصر یک aggregate root منحصربه فرد را دریافت می کند. در حال حاضر، external object ها دیگر دسترسی مستقیم به هر موجودیت یا value object های درون Aggregate ندارند، بلکه فقط به یک root item واحد، دسترسی دارند و از آن برای ارسال دستورالعمل ها به کل گروه استفاده می کنند. این عمل با بسیاری از شیوه های برنامه نویسی واقعی که ما در سری آموزش الگو های طراحی (Design Pattern ها) در سی شارپ سایت توضیح داده ایم مرتبط است.
  • Service: در اصل یک سرویس، عملیات یا شکلی از یک منطق تجاری است که به طور طبیعی در دنیای object ها قرار نمی گیرد. به عبارت دیگر، برخی از عملکردها باید وجود داشته باشند، اما نمی توانند به یک entity یا value object مربوط باشند.
  • Repositories: این مفهوم با repository های version control اشتباه گرفته نشود، معنای DDD در واقع repository سرویسی است که از interface برای دسترسی به همه entity ها و value object ها در یک aggregate مجموعه خاص استفاده می کند. در واقع روش هایی باید تعریف شود که امکان ایجاد، اصلاح و حذف value object ها در همه جا را فراهم کند. با این حال با استفاده از این repository service برای ایجاد داده های پرس و جو و حذف چندین قابلیت پرس و جو، از داده ها از business logic مربوط به object model ها است.
  • Factories: همانطور که قبلاً در تعدادی از مقاله های الگوهای طراحی بحث کردیم، DDD استفاده از factory را پیشنهاد می کند که منطق ایجاد object ها و ابزارهای پیچیده را در بر می گیرد و اطمینان حاصل می کند که مشتری از عملکرد داخلی object آگاهی ندارد.

سرفصل مطالب آموزش ویدیویی طراحی دامنه محور در سی شارپ Domain Driven Design

فصل اول: معرفی Domain-Driven Design

  • مقدمه
  • ده سال تجربه در Domain-Driven Design
  • این دوره آموزشی درمورد چیست؟
  • مشارکت Eric Evans در این دوره آموزشی
  • چرا باید به طراحی دامنه محور اهمیت دهید؟
  • بررسی کلی Domain-Driven Design (قسمت اول): معرفی Domain Expert ها
  • سخنان Eric Evans در مورد اهمیت Communication ها
  • بررسی کلی Domain-Driven Design (قسمت دوم): تمرکز بر روی یک SubDomain
  • بررسی کلی Domain-Driven Design (قسمت سوم): پیاده سازی یک SubDomain
  • بررسی مزایای DDD
  • بررسی اشکالات DDD
  • یک نمودار از قسمت های مختلف Domain-Driven Design
  • مروری بر اپلیکشن های مورد استفاده در این دوره آموزشی
  • مهمترین نکات مربوط به این فصل
  • منابع

فصل دوم: مشکلات مدل سازی در نرم افزارها در Domain-Driven Design

  • مقدمه
  • اهداف این فصل چیست؟
  • آشنایی با Domain با صحبت کردن درباره Domain Expert ها
  • شکستن Domain به چندین Sub-domain
  • تمرکز بر روی یک Sub-domain با Domain Expert
  • بررسی اولین Model سطح بالا از Sub-domain
  • ایجاد کردن یک Bounded Context
  • بررسی تفاوت بین Sub-domain و Bounded Context
  • بررسی Context Map ها
  • سخان Eric Evan درمورد تعریف Context Boundary ها
  • بررسی Bounded Context ها در اپلیکیشن ها
  • بررسی یک Ubiquitous Language مربوط به یک Bounded Context
  • کار بر روی یک Ubiquitous Language به همراه یک Domain Expert
  • بررسی واژگان این فصل
  • جمع بندی این فصل
  • منابع

فصل سوم: بررسی Element های Domain Model

  • مقدمه
  • اهداف این فصل
  • اهمیت درک اصطلاحات DDD
  • تمرکز بر روی Domain
  • بررسی مدلهای Anemic و Rich
  • بررسی Entity ها در DDD و در Bounded Context
  • سخنان Eric Evan در مورد مسئله Single Responsibility مربوط به Entity ها
  • سخنان Eric Evan در مورد روشهای تساوی مربوط به Entity ها
  • چگونه ما Entity ها را در Code خود پیاده سازی کرده ایم؟
  • بررسی Association ها و یا Relationship ها
  • بررسی Value Object ها
  • سخنان Eric Evan در مورد Method های درون Value Object ها
  • بررسی Value Object ها در کد ما
  • سخنان Eric Evan در مورد Entity Logic در Value Object ها
  • بررسی Domain Services ها
  • بررسی واژگان این فصل
  • مهمترین نکات مربوط به این فصل
  • منابع

فصل چهارم: بررسی Aggregate ها در Domain-Driven Design

  • مقدمه
  • اهداف این فصل چیست؟
  • حل و فصل کردن پیچیدگی داده ها
  • معرفی Aggregates و Aggregate Root ها
  • تعامل با Aggregate ها
  • تکامل پیدا کردن Appointment به عنوان یک Aggregate
  • استفاده از Invariant ها برای درک بهتر Aggregate ها
  • دست آورد های مدل سازی و ریفکتورینگ
  • در نظر گرفتن برنامه به عنوان مجموعه جدید
  • بررسی Schedule به عنوان یک Aggregate در اپلیکیشن
  • بازبینی نکات مربوط به Aggregate ها
  • بررسی واژگان این فصل
  • منابع

فصل پنجم: بررسی Repository ها

  • مقدمه
  • اهداف این فصل
  • معرفی Repository ها
  • بررسی Repository Tips و Benefits و Guidance
  • مقایسه Repository ها و Factory ها
  • استفاده از <T>IRepository و یا عدم استفاده کردن از<T> IRepository
  • بررسی Generic Repository ها در DDD
  • بررسی Repository ها در اپلیکیشن ما
  • ریفکتور کردن برای Separation بهتر
  • بررسی واژگان این فصل
  • منابع

فصل ششم: بررسی Domain Event ها و Anti-corruption Layer ها

  • مقدمه
  • اهداف این فصل
  • مقدمه ای بر Domain Event ها
  • بررسی Domain Event ها در یک اپلیکشن ساده
  • بررسی Domain Event ها در اپلیکیشن
  • بررسی مرز مربوط به Domain Event ها
  • لایه های Anti-corruption
  • بررسی واژگان این فصل
  • منابع

فصل هفتم: استفاده از مزایای Domain-Driven Design

  • مقدمه
  • اهداف این فصل
  • طراحی سیستم فعلی
  • بررسی یک قابلیت جدید با Domain Expert
  • برنامه ریزی برای پیاده سازی کردن
  • افزودن Message Queue در اپلیکیشن
  • ترکیب Message Queue ها و Event ها و سرویس ها
  • انجام Debugging برای دیدن جزییات پیاده سازی در برنامه
  • تمرین: گسترش دادن برنامه
  • در نظر گرفتن رابط کاربری هنگام طراحی دامنه
  • سخنان Eric Evans در مورد Fallacy of Perfectionism
  • نکات مربوط به این فصل
  • واژه نامه
  • منابع

نقد و بررسی‌ها

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

اولین کسی باشید که دیدگاهی می نویسد “آموزش طراحی دامنه محور در سی شارپ Domain Driven Design”

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *