Interested in a private company training? Request it here.
Getting the software right is a hard thing to do. This is because business and developers do not always talk the same language. Domain Driven Design is all about getting the language right between them.
So what is a modern web application? One that uses Angular and TypeScript? With the speed that modern web application development evolves, there is the chance that your web site uses 'old' technology by the time it is done. But sound architecture never goes stale. As a wise man once said: 'If you think good architecture is expensive, try bad architecture'.
Every developer wants clean code that works. So how does one get to maintainable and working code? And moreover: keep it working.
When Unit Testing, you will have to decide on frameworks. There are several ones out there, which one do I need? Visual Studio comes with a built in framework called MSTest, but you also have others, such as the popular xUnit. In this module, we will discuss pros and cons of these frameworks, and go into some best practices. How do I know if I have tested enough? With code coverage you can see which paths in your code you have tested, and easily discover untested conditional logic.
When constructing the domain model, there are several approaches. Tactical Design provides a set of technical resources and patterns that are used in the construction of the domain model. The goal is to enrich your domain model by applying these standards correctly. When done correctly, it will reflect your business model with more clarity, and allow for better communication and design.
DDD distinguishes between Entities and Value Objects. How do you implement these?
Some behavior cannot be easily mapped to an existing Entity or Value Object. In this case we put this behavior into a Domain Service. And how do we group our business objects into modules?
One of the core pillars of DDD is Strategic Modeling. Strategic modelling helps you at defining the Bounded Contexts, the Ubiquitous Language and Context Maps.
Grouping your entities in Aggregates can make development easier, and help to avoid the "Death by a Thousand Dots" anti-pattern. Entities have a life cycle, and how do your create complex hierarchies of entities?
Mapping in EF Core uses conventions, attributes, or Fluent API. You will see how to use these to model your database in EF Core and apply the changes with Code-first Migrations.
Domain Driven Design is a great way to start designing your applications. Entity Framework Core is a great framework to access and manipulate your data, stored in databases. Now, can we fit Domain Driven Design concepts into Entity Framework Core? Yes, we can!
When building larger applications you want to keep Low Coupling and High Cohesion. So how do you implement changes that need to be handled by different sub-systems?
When creating modern web applications with ASP.NET Core MVC, it's not that straightforward to unit test the Controllers and Views. How does one validate whether the ActionResult returned by the Controller action is the one you wanted, as well as whether the View is correct. How do we replace dependencies during testing with MVC? How do we perform end-to-end testing?
When architecting and developing applications, there are several approaches that could be considered. Domain-Driven Design (DDD) is one of them. The idea of domain-driven design is to let the software originate from the so-called domain, and keeping the business experts and developers on the same wave-length.
When creating business applications, there is often a need for a data access layer to some database. This is where Entity Framework Core (EF) jumps in. In fact, domain-driven design and EF Core can go perfectly hand in hand. This course will discuss the concepts of domain-driven design and how EF Core can help you at implementing these concepts.
In this course, participants will learn about modern architecture and will get a hands-on approach to building a web site using C#, DDD, EF Core and Unit testing.
Attendees are required to have prior knowledge of C# and .NET.