eShopOnWeb architecture article series (16 parts)

For learning and discussion purposes I’ve done up a series of short articles looking at the architecture of eShopOnWeb which is Microsofts sample ASP .NET Core reference application

eShopOnWeb

Even though I’d do a few things differently, eShopOnWeb is awesome for learning purposes. If I discuss alternative approaches to what it does, this is just my opinion. I’m not saying eShopOnWeb is ‘wrong’… context is everything.

Let me know what you think 😊

eShopOnWeb Architecture (1/16) – uses marker interfaces to communicate intent and enforce design constraints

eShopOnWeb Architecture (2/16) – uses Value Objects to model immutable domain concepts

eShopOnWeb Architecture (3/16) – uses custom exceptions to more explicitly express what has gone wrong

eShopOnWeb Architecture (4/16) – uses the MediatR library to keep controllers thin

eShopOnWeb Architecture (5/16) – makes regular use of Guard Clauses

eShopOnWeb Architecture (6/16) – uses private setters and non default constructors to support encapsulation which helps keep the model valid

eShopOnWeb Architecture (7/16) – encapsulates navigation collections so consumers can’t edit them directly

eShopOnWeb Architecture (8/16) – uses in memory caching to avoid sending unnecessary queries to the DB

eShopOnWeb Architecture (9/16) – uses the Aggregate root pattern to ensure child objects are not manipulated out of context

eShopOnWeb Architecture (10/16) – has unit tests which test very low level implementation details

eShopOnWeb Architecture (11/16) – uses AutoMapper

eShopOnWeb Architecture (12/16) – uses the repository and specification pattern

eShopOnWeb Architecture (13/16) – has some single implementation interfaces

eShopOnWeb Architecture (14/16) – uses parameterized tests

eShopOnWeb Architecture (15/16) – has a really nice example of the Interface Segregation Principle

eShopOnWeb Architecture (16/16) – uses clean architecture

Leave a Reply

Your email address will not be published. Required fields are marked *