Vaughn Vernon
DDD#
Domain-Driven_Design#
Domain#
software_developers#
SOA#
REST#
CQRS#
Event-Driven#
Scrum#
ORM#
NoSQL#
databases#
"برای توسعهدهندگان نرمافزار در تمام سطوح تجربه که به دنبال بهبود نتایج خود هستند و قصد دارند برنامههای سازمانی مبتنی بر دامنه را طبق بهترین شیوههای حرفهای طراحی و پیادهسازی کنند، Implementing Domain-Driven Design گنجینهای از دانش است که در طول دو دهه گذشته در جوامع DDD و معماری نرمافزارهای سازمانی بهدست آمده است."
— Randy Stafford, معمار ارشد، Oracle Coherence Product Development
"این کتاب یک خواندن ضروری برای هر کسی است که میخواهد DDD را بهطور عملی پیادهسازی کند."
— Udi Dahan, بنیانگذار NServiceBus
Implementing Domain-Driven Design رویکردی از بالا به پایین برای درک طراحی مبتنی بر دامنه (DDD) ارائه میدهد که بهطور روان الگوهای استراتژیک را به ابزارهای برنامهنویسی تاکتیکی بنیادین متصل میکند. ووهن ورنون روشهای هدایتشده برای پیادهسازی را با معماریهای مدرن ترکیب کرده و بر اهمیت و ارزش تمرکز بر دامنه کسبوکار در حالی که ملاحظات فنی را متعادل میکند، تأکید میکند.
با ساخت بر اساس کتاب پیشگامانه اریک ایوانز، Domain-Driven Design، نویسنده تکنیکهای عملی DDD را از طریق مثالهایی از دامنههای آشنا ارائه میدهد. هر اصل با مثالهای واقعی از زبان جاوا پشتیبانی میشود که برای توسعهدهندگان C# نیز قابل اعمال است، و همه محتوا از طریق یک مطالعه موردی واحد پیوند داده شده است: ارائه یک سیستم SaaS بزرگ مقیاس مبتنی بر Scrum برای یک محیط چندمستأجری.
نویسنده شما را فراتر از رویکردهای "DDD-lite" که DDD را فقط بهعنوان یک ابزار فنی در نظر میگیرند، میبرد و نشان میدهد چگونه بهطور کامل از "الگوهای طراحی استراتژیک" DDD با استفاده از Bounded Context، Context Maps و Ubiquitous Language بهره ببرید. با استفاده از این تکنیکها و مثالها، شما میتوانید زمان عرضه به بازار را کاهش دهید و کیفیت را بهبود بخشید، در حالی که نرمافزاری انعطافپذیرتر، مقیاسپذیرتر و دقیقاً هماهنگ با اهداف کسبوکار میسازید.
موضوعات تحت پوشش
"با کتاب Implementing Domain-Driven Design، ووهن یک نقش مهم نه تنها در ادبیات جامعه طراحی مبتنی بر دامنه، بلکه در ادبیات حوزه معماری نرمافزارهای سازمانی ایفا کرده است. در فصلهای کلیدی مانند معماری و مخزنها، ووهن نشان میدهد که چگونه DDD با سبکهای معماری در حال گسترش و تکنولوژیهای ذخیرهسازی داده برای نرمافزارهای سازمانی—از جمله SOA و REST، NoSQL و دادهگریدها—که در دهه اخیر از زمان انتشار اولین کتاب اساسی اریک ایوانز به وجود آمدهاند، همراستا میشود. و به درستی، ووهن پیادهسازی مفاهیم پایه DDD—موجودیتها، اشیاء مقدار، تجمعها، سرویسها، رویدادها، کارخانهها و مخزنها—را با مثالهای فراوان و بینشهای ارزشمند حاصل از دههها تجربه عملی روشن میکند. به طور خلاصه، این کتاب را میتوان "جامع" توصیف کرد. برای توسعهدهندگان نرمافزار در تمامی سطوح تجربه که به دنبال بهبود نتایج خود هستند و قصد دارند برنامههای نرمافزاری سازمانی مبتنی بر دامنه را طبق بهترین شیوههای حرفهای طراحی و پیادهسازی کنند، Implementing Domain-Driven Design گنجینهای از دانش است که در طی دو دهه گذشته در جوامع DDD و معماری نرمافزارهای سازمانی بهدست آمده است."
— Randy Stafford, معمار ارشد، Oracle Coherence Product Development
"Domain-Driven Design مجموعهای قدرتمند از ابزارهای فکری است که میتواند تأثیر عمیقی بر کارایی تیم در ساخت سیستمهای نرمافزاری داشته باشد. مشکل این است که بسیاری از توسعهدهندگان هنگام استفاده از این ابزارهای فکری گم میشوند و واقعاً به راهنماییهای ملموستری نیاز دارند. در این کتاب، ووهن پیوندهای مفقود بین نظریه و عمل را فراهم میآورد. علاوه بر روشن کردن بسیاری از عناصر غلطفهمیشده DDD، ووهن مفاهیم جدیدی مانند تقسیم مسئولیت فرمان/پرسوجو (CQRS) و ذخیرهسازی رویداد (Event Sourcing) را که بسیاری از پیشگامان DDD با موفقیت فراوان استفاده کردهاند، نیز بهطور کامل توضیح میدهد. این کتاب یک خواندن ضروری برای هر کسی است که میخواهد DDD را بهطور عملی پیادهسازی کند."
— Udi Dahan, بنیانگذار NServiceBus
"برای سالها، توسعهدهندگانی که در تلاش بودند تا DDD را پیادهسازی کنند، آرزو میکردند که کمکهای عملی بیشتری برای پیادهسازی واقعی DDD دریافت کنند. ووهن با ارائه یک مرجع کامل پیادهسازی، این شکاف بین نظریه و عمل را بهخوبی پر کرد. او تصویری واضح از آنچه که در یک پروژه معاصر برای انجام DDD اتفاق میافتد، ترسیم کرده و مشاورههای عملی زیادی در مورد چگونگی نزدیک شدن به چالشها و حل مشکلات رایج در چرخه عمر پروژه ارائه میدهد."
— Alberto Brandolini, مدرس DDD، تأسیس شده توسط اریک ایوانز و Domain Language, Inc.
"کتاب Implementing Domain-Driven Design کار شگفتانگیزی انجام میدهد: این کتاب یک موضوع پیچیده و گسترده در DDD را بهطور واضح و با ظرافت، لذت و دقت ارائه میدهد. این کتاب بهطور جذاب و دوستانه نوشته شده است، مانند مشاور معتمد که به شما مشاوره تخصصی میدهد تا آنچه که برایتان مهم است، انجام دهید. تا زمانی که کتاب را تمام کنید، قادر خواهید بود تمام مفاهیم مهم DDD را بهکار ببرید و حتی بیشتر. در حین مطالعه، من بخشهای زیادی را هایلایت کردم... این کتاب را بارها مرور خواهم کرد و به دیگران توصیه میکنم."
— Paul Rayner, مشاور اصلی و مالک Virtual Genius, LLC، مدرس DDD، تأسیس شده توسط اریک ایوانز و Domain Language, Inc., بنیانگذار و همرهبر DDD Denver
درباره نویسنده
ووهن ورنون یک پیشگام در سادهسازی معماری نرمافزار و توسعه است، با تأکید بر روشهای واکنشی. او توانایی منحصر به فردی در تدریس و رهبری با استفاده از طراحی مبتنی بر دامنه (DDD) دارد و از ابزارهای سبک برای آشکار کردن ارزشهای پنهان استفاده میکند. او به سازمانها کمک میکند تا با استفاده از ابزارهای پایدار مانند معماریها، الگوها و رویکردها، و از طریق شراکتهای بین ذینفعان کسبوکار و توسعهدهندگان نرمافزار، مزیتهای رقابتی بهدست آورند.
“For software developers of all experience levels looking to improve their results, and design and implement domain-driven enterprise applications consistently with the best current state of professional practice, Implementing Domain-Driven Design will impart a treasure trove of knowledge hard won within the DDD and enterprise application architecture communities over the last couple decades.”
–Randy Stafford, Architect At-Large, Oracle Coherence Product Development
“This book is a must-read for anybody looking to put DDD into practice.”
–Udi Dahan, Founder of NServiceBus
Implementing Domain-Driven Design presents a top-down approach to understanding domain-driven design (DDD) in a way that fluently connects strategic patterns to fundamental tactical programming tools. Vaughn Vernon couples guided approaches to implementation with modern architectures, highlighting the importance and value of focusing on the business domain while balancing technical considerations.
Building on Eric Evans’ seminal book, Domain-Driven Design, the author presents practical DDD techniques through examples from familiar domains. Each principle is backed up by realistic Java examples–all applicable to C# developers–and all content is tied together by a single case study: the delivery of a large-scale Scrum-based SaaS system for a multitenant environment.
The author takes you far beyond “DDD-lite” approaches that embrace DDD solely as a technical toolset, and shows you how to fully leverage DDD’s “strategic design patterns” using Bounded Context, Context Maps, and the Ubiquitous Language. Using these techniques and examples, you can reduce time to market and improve quality, as you build software that is more flexible, more scalable, and more tightly aligned to business goals.
Coverage includes
• Getting started the right way with DDD, so you can rapidly gain value from it
• Using DDD within diverse architectures, including Hexagonal, SOA, REST, CQRS, Event-Driven, and Fabric/Grid-Based
• Appropriately designing and applying Entities–and learning when to use Value Objects instead
• Mastering DDD’s powerful new Domain Events technique
• Designing Repositories for ORM, NoSQL, and other databases
Table of Contents
Chapter 1 Getting Started with DDD
Chapter 2 Domains, Subdomains, and Bounded Contexts
Chapter 3 Context Maps
Chapter 4 Architecture
Chapter 5 Entities
Chapter 6 Value Objects
Chapter 7 Services
Chapter 8 Domain Events
Chapter 9 Modules
Chapter 10 Aggregates
Chapter 11 Factories
Chapter 12 Repositories
Chapter 13 Integrating Bounded Contexts
Chapter 14 Application
“With Implementing Domain-Driven Design , Vaughn has made an important contribution not only to the literature of the Domain-Driven Design community, but also to the literature of the broader enterprise application architecture field. In key chapters on Architecture and Repositories, for example, Vaughn shows how DDD fits with the expanding array of architecture styles and persistence technologies for enterprise applications―including SOA and REST, NoSQL and data grids―that has emerged in the decade since Eric Evans’ seminal book was first published. And, fittingly, Vaughn illuminates the blocking and tackling of DDD―the implementation of entities, value objects, aggregates, services, events, factories, and repositories―with plentiful examples and valuable insights drawn from decades of practical experience. In a word, I would describe this book as thorough. For software developers of all experience levels looking to improve their results, and design and implement domain-driven enterprise applications consistently with the best current state of professional practice, Implementing Domain-Driven Design will impart a treasure trove of knowledge hard won within the DDD and enterprise application architecture communities over the last couple decades.”
―Randy Stafford, Architect At-Large, Oracle Coherence Product Development
“Domain-Driven Design is a powerful set of thinking tools that can have a profound impact on how effective a team can be at building software-intensive systems. The thing is that many developers got lost at times when applying these thinking tools and really needed more concrete guidance. In this book, Vaughn provides the missing links between theory and practice. In addition to shedding light on many of the misunderstood elements of DDD, Vaughn also connects new concepts like Command/Query Responsibility Segregation and Event Sourcing that many advanced DDD practitioners have used with great success. This book is a must-read for anybody looking to put DDD into practice.”
―Udi Dahan, Founder of NServiceBus
“For years, developers struggling to practice Domain-Driven Design have been wishing for more practical help in actually implementing DDD. Vaughn did an excellent job in closing the gap between theory and practice with a complete implementation reference. He paints a vivid picture of what it is like to do DDD in a contemporary project, and provides plenty of practical advice on how to approach and solve typical challenges occurring in a project life cycle.”
― Alberto Brandolini, DDD Instructor, Certified by Eric Evans and Domain Language, Inc.
“Implementing Domain-Driven Design does a remarkable thing: it takes a sophisticated and substantial topic area in DDD and presents it clearly, with nuance, fun and finesse. This book is written in an engaging and friendly style, like a trusted advisor giving you expert counsel on how to accomplish what is most important. By the time you finish the book you will be able to begin applying all the important concepts of DDD, and then some. As I read, I found myself highlighting many sections . . . I will be referring back to it, and recommending it, often.”
― Paul Rayner, Principal Consultant & Owner, Virtual Genius, LLC., DDD Instructor, Certified by Eric Evans and Domain Language, Inc., DDD Denver Founder and Co-leader
“One important part of the DDD classes I teach is discussing how to put all the ideas and pieces together into
Vaughn Vernon is a champion of simplifying software architecture and development, with an emphasis on reactive methods. He has a unique ability to teach and lead with Domain-Driven Design using lightweight tools to unveil unimagined value. He helps organizations achieve competitive advantages using enduring tools such as architectures, patterns, and approaches, and through partnerships between business stakeholders and software developers.