1. Урок 1. 00:01:21
    Getting Started
  2. Урок 2. 00:02:18
    Course Outline and Prerequisites
  3. Урок 3. 00:03:41
    Area of Application for Domain-Driven Design
  4. Урок 4. 00:02:30
    Why Domain-Driven Design?
  5. Урок 5. 00:03:32
    Main Concepts of Domain-Driven Design
  6. Урок 6. 00:02:56
    Domain-Driven Design Is Not Only About Writing Code
  7. Урок 7. 00:04:29
    Onion Architecture and Domain Isolation
  8. Урок 8. 00:01:08
    Modeling Best Practices
  9. Урок 9. 00:02:46
    Domain-Driven Design and Unit Testing
  10. Урок 10. 00:03:24
    The Problem Domain Introduction
  11. Урок 11. 00:01:32
    Summary
  12. Урок 12. 00:00:31
    Introduction
  13. Урок 13. 00:01:27
    Vocabulary Used
  14. Урок 14. 00:00:55
    Problem Description
  15. Урок 15. 00:04:00
    Starting with Snack Machine
  16. Урок 16. 00:01:21
    Recap: Starting with Snack Machine
  17. Урок 17. 00:03:16
    Entities vs. Value Objects
  18. Урок 18. 00:02:51
    How to Recognize a Value Object in Your Domain Model?
  19. Урок 19. 00:01:45
    Entity Base Class
  20. Урок 20. 00:03:29
    Demo: Entity Base Class
  21. Урок 21. 00:00:33
    Recap: Entity Base Class
  22. Урок 22. 00:01:48
    Value Object Base Class
  23. Урок 23. 00:00:58
    Recap: Value Object Base Class
  24. Урок 24. 00:01:15
    Value Objects vs. .NET Value Types
  25. Урок 25. 00:01:48
    When to Write Unit Tests
  26. Урок 26. 00:05:31
    Implementing the Money Class
  27. Урок 27. 00:04:35
    Building up the Money Class
  28. Урок 28. 00:05:23
    Implementing the Snack Machine Class
  29. Урок 29. 00:01:57
    Recap: Implementing Money and Snack Machine
  30. Урок 30. 00:03:06
    Summary
  31. Урок 31. 00:00:30
    Introduction
  32. Урок 32. 00:02:19
    Application Services and UI in the Onion Architecture
  33. Урок 33. 00:09:30
    Adding UI for the Snack Machine
  34. Урок 34. 00:01:46
    Recap: Adding UI for the Snack Machine
  35. Урок 35. 00:03:05
    Designing the Database for the Snack Machine
  36. Урок 36. 00:02:46
    Introducing an ORM
  37. Урок 37. 00:03:22
    ID Generation Strategies
  38. Урок 38. 00:01:44
    Mapping Strategies
  39. Урок 39. 00:03:50
    Adjusting the Domain Layer for the Use with ORM
  40. Урок 40. 00:03:06
    Putting It All Together
  41. Урок 41. 00:01:29
    Summary
  42. Урок 42. 00:00:25
    Introduction
  43. Урок 43. 00:01:14
    Problem Description
  44. Урок 44. 00:04:44
    Starting with the Implementation
  45. Урок 45. 00:03:53
    Aggregates
  46. Урок 46. 00:04:42
    How to Find Boundaries for Aggregates
  47. Урок 47. 00:01:43
    Aggregate Root Base Class
  48. Урок 48. 00:07:18
    Refactoring the Snack Machine Aggregate
  49. Урок 49. 00:01:25
    Recap: Refactoring the Snack Machine Aggregate
  50. Урок 50. 00:01:54
    Implementing Missing Requirements
  51. Урок 51. 00:06:05
    Revealing a Hidden Requirement
  52. Урок 52. 00:00:49
    Recap: Revealing a Hidden Requirement
  53. Урок 53. 00:01:50
    Summary
  54. Урок 54. 00:00:19
    Introduction
  55. Урок 55. 00:00:45
    Adjusting the Database for the New Entities
  56. Урок 56. 00:02:48
    Repositories
  57. Урок 57. 00:02:47
    Repository Base Class
  58. Урок 58. 00:03:03
    Setting up Mappings for the Aggregates
  59. Урок 59. 00:03:06
    Refactoring the Snack Entity
  60. Урок 60. 00:06:48
    Adjusting the User Interface
  61. Урок 61. 00:01:21
    Summary
  62. Урок 62. 00:00:37
    Introduction
  63. Урок 63. 00:01:00
    New Task: an ATM Model
  64. Урок 64. 00:02:26
    Bounded Contexts
  65. Урок 65. 00:02:03
    Bounded Contexts and Sub-domains
  66. Урок 66. 00:03:44
    Choosing Boundaries for Bounded Contexts
  67. Урок 67. 00:01:38
    Drawing a Context Map
  68. Урок 68. 00:03:46
    Types of Physical Isolation
  69. Урок 69. 00:02:03
    Communication Between Bounded Contexts
  70. Урок 70. 00:04:12
    Code Reuse Between Bounded Contexts
  71. Урок 71. 00:05:27
    Implementing ATM Domain Logic
  72. Урок 72. 00:01:11
    Adjusting the database
  73. Урок 73. 00:04:06
    Adding UI
  74. Урок 74. 00:01:48
    Summary
  75. Урок 75. 00:00:22
    Introduction
  76. Урок 76. 00:00:57
    New Requirements
  77. Урок 77. 00:02:43
    Introducing a New Bounded Context
  78. Урок 78. 00:02:51
    Implementation: the First Attempt
  79. Урок 79. 00:02:03
    Domain Events
  80. Урок 80. 00:03:25
    Introducing a Domain Event
  81. Урок 81. 00:01:04
    Physical Delivery
  82. Урок 82. 00:03:10
    Building up Management Bounded Context
  83. Урок 83. 00:05:15
    Handling Domain Events with the Classic Approach
  84. Урок 84. 00:02:33
    Recap: Classic Approach
  85. Урок 85. 00:06:44
    A Better Approach to Handling Domain Events
  86. Урок 86. 00:01:12
    Recap: a Better Approach
  87. Урок 87. 00:01:02
    Using Domain Events to Communicate Between Microservices
  88. Урок 88. 00:03:26
    Adding Interface for the Management Bounded Context
  89. Урок 89. 00:02:59
    Summary
  90. Урок 90. 00:00:27
    Introduction
  91. Урок 91. 00:03:42
    Always Valid vs. Not Always Valid
  92. Урок 92. 00:01:36
    Factories
  93. Урок 93. 00:01:50
    Domain Services vs. Application Services
  94. Урок 94. 00:01:31
    Anemic Domain Model Anti-pattern
  95. Урок 95. 00:01:20
    Fat Entities Anti-pattern
  96. Урок 96. 00:02:46
    Repository Anti-patterns
  97. Урок 97. 00:01:17
    Mechanical Approach to DDD
  98. Урок 98. 00:01:44
    Further Enhancements
  99. Урок 99. 00:01:46
    Module Summary
  100. Урок 100. 00:01:25
    Resource List
  101. Урок 101. 00:00:49
    Course Summary