دوره Domain-Driven Design (DDD)

  • دسته بندی
    طراحی و معماری نرم افزار
  • مدت دوره
    45 ساعت
  • جلسات دوره
    15 جلسه 3 ساعته
  • نحوه برگزاری
    آنلاین
  • تاریخ شروع
    21 مهر 1399
  • هزینه دوره
    2.000.000 تومان
  • ثبت نام
  • آشنایی با Domain-Driven Design (DDD)
    • آشنایی با تفکر و رویکرد DDD در طراحی
    • بررسی چالش ها و مزایای استفاده از DDD
    • در چه پروژه هایی می توان از DDD استفاده کرد؟
    • اصول و توصیه های DDD در طراحی
    • نگاهی بر جنبه های سازمانی DDD
  • Strategic Design
    • آشنایی با مفاهیم Domain, Sub-Domain و Bounded Context
    • شناخت انواع Sub-Domain ها (Core, Supporting, Generic)
    • نگاهی بر برخی متدهای شناخت مساله و استخراج دانش
      • Event storming
      • Domain storytelling
      • User story mapping
    • آشنایی با مفهوم Ubiquitous Language
    • آشنایی با Context Map
    • انواع روابط بین Bounded-Context ها و تیم ها
      • Shared Kernel
      • Partnership
      • Customer-Supplier
      • Conformist
      • Anti-Corruption Layer
      • Open Host Service
      • Published Language
      • Separate Ways
    • مفهوم Perspective و تاثیر آن در طراحی
  • مفاهیم Tactical Design و Model-Driven Design
    • آشنایی با مفهوم Domain-Model
    • بررسی مفهوم Persistence Ignorance
    • بررسی اجزای سازنده Domain-Model
      • Entity
      • Value Object
      • Aggregate & Aggregate Root
      • Domain Service
      • Domain Event
      • Repositories
      • Factories
  • معماری نرم افزار بر پایه DDD
    • تعریف معماری نرم افزار
    • تاریخچه ی معماری لایه ای
    • ظهور معماری های Domain-Centric
    • انواع معماری های Domain-Centric
      • Ports & Adapters / Hexagonal Architecture
      • Onion Architecture
      • Clean Architecture
    • نگاهی بر لایه های مختلف نرم افزار و وظایف هر یک
      • Domain Layer
      • Application Layer
      • Infrastructure Layer
      • Service Layer
      • User Interface Layer
    • نگاهی بر اصل Dependency Inversion در SOLID و تاثیر آن در طراحی
    • آشنایی با Event-Driven Architecture
    • آشنایی با CQRS و Event Sourcing
    • مفهوم Eventual Consistency و Transactional Consistency
    • آشنایی با قاعده ی CAP
    • آشنایی با معماری Microservices
  • پیاده سازی پروژه با رویکرد DDD
    • طرح مساله و شروع تحلیل و شناسایی Sub-Domain ها
    • استارت پروژه ها و شروع به پیاده سازی Bounded Context ها
    • شناسایی Invariant ها و طراحی Aggregate ها
    • پیاده سازی لایه ی Domain
      • نحوه پیاده سازی Entity ها
      • استراتژی های تولید Id
      • نحوه پیاده سازی Value Object ها
      • پیاده سازی Immutability، Replace-ability و Value Equality در Value Object ها
      • پیاده سازی Domain-Service ها
      • استفاده از برخی الگوهای طراحی در لایه Domain
        • Builder
        • Factory Method
        • Prototype
        • Abstract Factory
        • Composite
        • Visitor
        • Composite Specification
        • State
        • Strategy
        • Template Method
      • نحوه ی پیاده سازی Domain-Event ها
      • نحوه استفاده از الگوی Mediator، Observer و Event Aggregator
    • پیاده سازی لایه ی Application
      • مفهوم Application Logic و تفاوت آن با Business Logic
      • بررسی Application Service ها و وظایف آنها
      • پیاده سازی Command و Command Handler ها
    • لایه Service
      • آشنایی با REST و سرویس های RESTful
      • استراتژی پیاده سازی سرویس های REST در معماری های Domain-Centric
      • قوانین پیاده سازی سرویس های REST
      • مدیریت تغییرات و Versioning در REST
      • آشنایی با سرویس های RPC و تکنولوژی gRPC
    • ذخیره سازی داده ها
      • الگوی Repository و Unit of Work
      • ذخیره سازی Aggregate ها در RDBMS ها
        • ذخیره سازی Entity ها و Value Object ها
        • مدیریت Connection و Transaction
        • استراتژی های مدیریت Concurrency
        • نحوه ذخیره سازی Aggregate ها با ORM ها و مقایسه امکانات هر یک (NHibernate و EFCore)
      • بررسی استراتژی های ذخیره سازی داده ها در دیتابیس های NoSql
    • خواندن داده ها
      • بررسی الگوهای CQS و CQRS
      • نحوه پیاده سازی Read-Model
      • استراتژی های Denormal کردن داده ها در Read Model
      • مفهوم Materialized Views
    • نیازهای Cross-Cutting
      • آشنایی با AOP و روش های پیاده سازی آن
      • پیاده سازی Logging, Authorization, Authentication, Caching
    • لایه Presentation
      • نگاهی بر مفهوم Task-Based UI
    • Integration بین Bounded Context ها
      • Integration از طریق Messaging
        • بررسی برخی مفاهیم Messaging (مانند Idempotency, Pub-Sub و ... )
        • بررسی ابزار MassTransit
        • پیاده سازی الگوی Outbox
      • Integration از طریق سرویس های REST
      • پیاده سازی Open Host Service
      • پیاده سازی Shared Kernel
      • پیاده سازی Anti-Corruption Layer
  • ابزارها و تکنولوژی های مورد استفاده در طول دوره
    • C# - ASP.NET Core
    • MassTransit - RabbitMQ
    • Identity Server 4
    • Autofac
    • NHibernate – EF Core
  • تسلط بر اصول و الگوهای طراحی شیء گرا

    در جریان پیاده سازی پروژه، با الگوهای طراحی متفاوتی مانند Command ، Mediator و ... سر وکار خواهیم داشت. پیشنهاد می شود قبل از شرکت در این دوره، مباحث مربوط به الگوهای طراحی شیء گرا و اصول طراحی (مثل SOLID) را مطالعه کرده و یا در دوره «اصول و الگوهای طراحی شیء گرا» آکادمی شرکت کنید.