This is a list of useful articles which I’ll try and update when I find them rather than immediately forgetting them after reading!

2020/01/22 – Designing a microservices architecture

A basic introduction to designing a microservice architecture.

2020/01/22 – Make secure .NET Microservices and Web Applications

An overview of how to implement authentication in .NET microservices using ASP.NET Core Identity.

2020/01/22 – Securing Microservices: The API gateway, authentication and authorization

How to use an API gateway to control access to microservices

2020/01/08 – Using Serilog.AspNetCore in /ASP.NET Core 3.0/

How to improve logging for ASP.NET Core 3+ applications using Serilog.

2019/12/23 – How do Object Relational Mappers (like Entity Framework) work?

A good introduction to how ORMs work and how properties are dynamically mapped.

2019/12/04 – Converting integration tests to .NET Core 3.0

How to use the new generic Host object for integration testing rather than the old WebHost as well as how to implement it into a WebApplicationFactory for more streamlined testing.

2019/11/18 – I Wanna Go Fast: Why Searching Through 500M Pwned Passwords Is So Quick

A good guide on how to make Azure Functions as fast as possible, the main relevant point for me is that using blobs instead of table storage can be up to 50% faster for read operations.

2019/11/18 – Breaking Azure Functions with Too Many Connections

Some good Azure Function design advice and a reminder to use HttpClient properly.

HttpClient is intended to be instantiated once and reused throughout the life of an application. The following conditions can result in SocketException errors:

  • Creating a new HttpClient instance per request.
  • Server under heavy load.

Creating a new HttpClient instance per request can exhaust the available sockets.

2019/11/18 – .NET Core Dependency Injection with Options

A good introduction on how to use the Options pattern with Dependency Injection.

Categories: Programming

Leave a Reply

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