The approach I have taken to these presentations is to give a little bit of background on what it means to use DDD with some definitions of terms and some of the names of the important people in the DDD world, followed by some demonstration using .NET to illustrate the principles of Bounded Contexts, Ubiquitous Language, and Aggregates with a sample (start of an) implementation of a sample domain in C# using the fabulous NServiceBus infrastructure libraries from Particular Software.
The sample domain was not really something I selected – it came from a modeling exercise done in the Denver Domain-Driven Design Meetup group that I just carried forward and made more concrete and used it as a sample for demonstrating an approach to Domain-Driven Design, mostly modeled after Udi Dahan’s ideas about Service Oriented Architecture. This sample domain was a library that loans media items. In the DDD Denver Group, we called it a “Public Library” domain. I used the name “Media Loan Library” because I didn’t want to put constraints on it being run by a governmental organization and to instead have it represent a library that could be operated by any organization. I also wanted to make clear that the media loaned by a library are not limited to books.
The code I wrote for and used in the presentations is available via github. I used multiple repositories to demonstrate the partitioning of a complex domain into subdomains and the division and autonomy desirable among those different pieces of the system. This also, ideally, reflects the structure of the teams working on the different pieces of the system. You can find the code repositories here:
The presentation slides are also available and they are here:
Denver Domain-Driven Design Meetup Group Presentation - NServiceBus and DDD
Denver Dev Day Presentation – DDD @ DDD
(I will update this with a link to the Denver Visual Studio User Group slides when I have them available for download)
Denver Visual Studio User Group