https://dotnet.microsoft.com/learn/dotnet/architecture-guides