Applying Domain-Driven Design and Patterns: With Examples in C# and .NET