Generating the Response Writing Expression for RequestDelegate Behind the Scenes of Minimal APIs
In this post, well start looking at how RequestDelegateFactory.Create() creates the final RequestDelegate, focusing on the different expressions that are generated depending on your handlers signature...
Easy Way to Implement Second-Level Cache in Entity Framework
This article explains how to easily implement second-level caching in Entity Framework by adding an extension method for the IQueryable interface. Second-level caching is a technique that stores datab...
SimdLinq - Extremely Fast LINQ Aggregation Operations with SIMD
SimdLinq is a drop-in replacement for LINQ Sum, Average, Min, and Max operations that use SIMD to provide significantly faster performance. This library supports various data types, including byte, sh...
Using Rate Limiting in Asp.Net Core Minimal APIs
In this blog post, we will learn about Rate Limiting and how we can implement it in Asp.net Core Minimal API. Rate limiting is the process of limiting how much a resource can be accessed. It is based ...
Setting up and Using MassTransit with RabbitMQ in ASP.Net Core
MassTransit is a powerful message-based communication library for using RabbitMQ as the message broker. This article explains how to set up MassTransit in an ASP.NET Core application to send and recei...
StructureOfArraysGenerator - Generating Cache and SIMD Friendly Data Structures for High-Performance Code in .NET and Unity
StructureOfArraysGenerator is a source generator that generates structure of arrays (SoA) data structure in .NET and Unity. The standard C# array is an array of structures (AoS), whereas the SoA is mo...
Generating argument expressions for minimal APIs
In this post, we dive into the generating argument expressions for minimal APIs. We explore the CreateArgument() method responsible for defining how model-binding works in minimal APIs. We look at hal...
QueryR - Simple Interface for Ad Hoc Queries
QueryR provides a simple interface for executing ad hoc queries against IQueryable implementations, allowing end-users to create custom queries without increasing solution complexity. It supports filt...
Eliminate Your STRINGLY-Typed Obsession with Semantically Strong C# Code
Do you find yourself tired of dealing with STRINGLY-typed values in your .NET code? Have you heard of the Primitive Obsession anti-pattern and want to put an end to this suffering? In this article, we...
Guide to Projections and Read Models in Event-Driven Architecture
In this article, Oskar Dudycz explains the significance of projections in event sourcing and how they allow the interpretation of a set of facts. He also highlights how data exploration, together with...
Arch - High-performance C# based Archetype & Chunks (ECS) for game development and data-oriented programming
# Arch Arch is a high-performance C# based Archetype & Chunks [Entity Component System](https://www.wikiwand.com/en/Entity_component_system) (ECS) for game development and data-oriented programming. ...
Arch.Extended - Extension Package with Utilities and New Features
Arch.Extended is a comprehensive extension package that enhances the functionality of Arch by providing numerous utilities and introducing several new features. The package is designed to make the use...
Exploring the Model-Binding Logic of Minimal APIs
In this post, Andrew Lock delves into the code behind the model-binding logic of minimal APIs. He takes us through the key steps involved in creating the RequestDelegate for an ASP.NET Core applicatio...
Flurl - A Modern URL Builder and HTTP Client Library
Flurl is a versatile and flexible URL building and HTTP client library that is optimized for modern web development practices. It offers a wide range of features, including fluent syntax for building ...
Head and Tail using list patterns in C#
Some time ago I wrote blog posts playing with head- and tail-like functions and implementing sum function in C# using these. With the recent addition of list patterns into C# 11, I revisited that topi...
PollyFlurl - Resilient and Easy HTTP Requests
# PollyFlurl [Flurl](https://flurl.dev/) + [Polly](http://www.thepollyproject.org/) = resilient and easy HTTP requests. - [GitHub](https://github.com/SaahilClaypool/PollyFlurl) - [Nuget](https://www.n...
How to Validate Business Logic
In this article, Oskar Dudycz discusses the importance of validating business logic and defines the level of paranoia each software developer should have when creating a public API. Dudycz identifies ...
Extracting metadata from a minimal API handler
This post is part two of the series: Behind the scenes of minimal APIs. The author explains how the RequestDelegateFactory.InferMetadata() method works by inferring metadata from the delegate. The Req...
How to run disposable databases for your tests. Improve your integration tests accuracy with Testcontainers
Integration tests are essential to ensure that the different components of our system work together as expected and continue to work after changes. In this post, I’ll explain how to spin up disposable...
# NetArchTest - A Fluent API for .Net Standard to Enforce Architectural Rules in Unit Tests
NetArchTest is a .Net Standard 2.0 library that provides a fluent API to enforce architectural rules in unit tests. You can create tests that enforce conventions for class design, naming and dependenc...