My experience of using the Clean Code architecture with a Modular Monolith
In this article I look at my use of a Clean Code architecture with the modular monolith architecture covered in the first article. Like the first article this isn’t primer on Clean Code and modular...
View ArticleFive levels of performance tuning for an EF Core query
This is a companion article to the EF Core Community Standup called “Performance tuning an EF Core app” where I apply a series of performance enhancements to a demo ASP.NET Core e-commerce book...
View ArticleEvolving modular monoliths: 1. An architecture for .NET
This is the first article in a series about building a .NET application using a modular monolith architecture. The aim of this architecture is to keep the simplicity of a monolith design while...
View ArticleEvolving modular monoliths: 2. Breaking up your app into multiple solutions
This is the second article in a series about building Microsoft .NET applications using a modular monolith architecture. This article covers a way to extract parts of your application into separate...
View ArticleEvolving modular monoliths: 3. Passing data between bounded contexts
This article describes the different ways you can pass data between isolated sections of your code, known in DDD as bounded contexts. The first two articles used bounded contexts to modularize our...
View ArticleFinally, a library that improves role authorization in ASP.NET Core
In December 2018 I wrote the first article in the series called “A better way to handle authorization in ASP.NET Core” which describe an approach to improving how authorization (i.e., what...
View ArticleUsing PostgreSQL in development: Part 1 – Installing PostgreSQL on Windows
I started work on a library that uses a PostgreSQL, which means I need a PostgreSQL database to test it against. The best solution is to run a PostgreSQL server on my Windows development PC as that...
View ArticleUsing PostgreSQL in dev: Part 2 – Testing against a PostgreSQL database
This article describes how to test an application that use Entity Framework Core (shortened to EF Core) that accesses a PostgreSQL database. I describe various methods that help you to write xUnit...
View ArticleUpdating your ASP.NET Core / EF Core application to NET 6
With the release of NET 6 I wanted to update the code in the repo called EfCoreinAction-SecondEdition which contains the code that goes with my book “Entity Framework Core in Action 2nd edition”. This...
View ArticleHow to safely apply an EF Core migrate on ASP.NET Core startup
There are many ways to migrate a database using EF Core, and one of the most automatic approaches is to call EF Core’s MigrateAsync method on startup of your ASP.NET Core application – that way you...
View ArticleBuilding ASP.NET Core and EF Core multi-tenant apps – Part1: the database
Multi-tenant applications are everywhere – your online banking is one example and GitHub is another. They consist of one set of code that is used by every user, but each user’s data is private to that...
View ArticleBuilding ASP.NET Core and EF Core multi-tenant apps – Part2: Administration
In Part 1 of this series, you learnt how to set up the multi-tenant application database so that each tenant had its own set of data, which is private to them. This article explores the administration...
View ArticleMulti-tenant apps with different versions can increase your profits
This article explores ways you can make each tenant in your multi-tenant applications have different features – for instance, Visual Studio has three versions: Community, Pro, and Enterprise. This is...
View ArticleBuilding ASP.NET Core and EF Core hierarchical multi-tenant apps
This article looks at a specific type of multi-tenant where a tenant can have a sub-tenant. For instance, a large company called XYZ with different businesses could have a top-level tenant called XYZ,...
View ArticleAdvanced techniques around ASP.NET Core Users and their claims
This article describes some advanced techniques around adding or updating claims of users when building ASP.NET Core applications. These advanced techniques are listed below with examples taken from...
View ArticlePart6: Using sharding to build multi-tenant apps using ASP.NET Core and EF Core
This article describes how to use EF Core and ASP.NET Core to create a multi-tenant application where each different groups (known as tenants) has its own database – this is known as sharding. A...
View ArticleThree ways to securely add new users to an application using the AuthP library
The AuthPermissions.AspNetCore library (shortened to AuthP in this article) provides various features that can help you building certain ASP.NET Core applications. The main features are better Roles...
View ArticleA .NET distributed cache with a ~25 nanosecond read time!
This article described a .NET distributed cache library called Net.DistributedFileStoreCache (referred to as FileStore cache in this article). The FileStore distributed cache library is very quick to...
View ArticleHow to turn an ASP.NET Core appsettings.json file into a fast-read database
This article describes a way to create a database using ASP.NET Core appsettings.json configuration feature. The big benefit of this approach is the read is blistering fast, something like 1,000 times...
View ArticleHow to take an ASP.NET Core web site “Down for maintenance”
If you have an e-commerce or business web app used by lots of users, then you really don’t want that app to be “down” (e.g. “site offline” or “site not found”) because it’s bad for business. But at...
View Article