Milan Jovanović

Milan Jovanović @milanjovanovictech

About: I'm a seasoned software architect and Microsoft MVP for Developer Technologies. I talk about all things .NET and post new YouTube videos every week.

Joined:
Aug 21, 2023

Milan Jovanović
articles - 143 total

Building a Custom Domain Events Dispatcher in .NET

Domain events are a powerful way to decouple parts of your system. Instead of tightly coupling your...

Learn More 0 0May 28

CQRS Pattern the Way It Should've Been From the Start

MediatR is going commercial. Jimmy Bogard recently announcedthat MediatR will adopt a commercial...

Learn More 0 0May 28

From Anemic Models to Behavior-Driven Models: A Practical DDD Refactor in C#

If you've ever worked with a legacy C# codebase, you know the pain of an anemic domain model. You...

Learn More 0 0May 28

Event-Driven Architecture in .NET with RabbitMQ

Event-driven architecture (EDA) can make applications more flexible and reliable. Instead of one part...

Learn More 0 0May 6

Refactoring Overgrown Bounded Contexts in Modular Monoliths

When you're building a modular monolith, it's easy to let bounded contexts grow too large over time....

Learn More 0 0May 4

Understanding Microservices: Core Concepts and Benefits

I've been revisiting Sam Newman's excellent book "Monolith to Microservices" recently, and it's...

Learn More 0 0Apr 22

What is Vector Search? A Concise Guide

Vector search is changing how we find information. Unlike old search methods that look for exact...

Learn More 1 0Apr 18

MediatR and MassTransit Going Commerical: What This Means For You

Big changes are happening in the .NET ecosystem. Three powerhouse libraries - MediatR, AutoMapper,...

Learn More 0 0Apr 11

How .NET Aspire Simplifies Service Discovery

Unless you've been living under a rock, you know that .NET Aspire is changing (for the better) how we...

Learn More 0 0Apr 7

Options Pattern Validation in ASP.NET Core With FluentValidation

If you've worked with the Options Pattern in ASP.NET Core, you're likely familiar with the built-in...

Learn More 1 0Mar 25

Streamlining .NET 9 Deployment With GitHub Actions and Azure

I remember the days of deploying .NET applications by hand: publishing locally, copying files to...

Learn More 1 0Mar 25

Better Request Tracing with User Context in ASP.NET Core

When building web applications, knowing what's happening behind the scenes is crucial. In ASP.NET...

Learn More 0 0Mar 11

Introduction to Dapr for .NET Developers

Building distributed systems has never been more important—or more challenging. As .NET developers,...

Learn More 1 0Mar 3

Building a Better MediatR Publisher With Channels (and why you shouldn't)

I've been meaning to write this article for a while now. This problem has been bugging me, and I...

Learn More 0 0Feb 25

Understanding Cursor Pagination and Why It's So Fast (Deep Dive)

Pagination is crucial for efficiently handling large datasets. While offset pagination is widely used...

Learn More 0 0Feb 21

Stop Conflating CQRS and MediatR

"We need to implement CQRS? Great, let me install MediatR." If you've heard this in your development...

Learn More 0 0Feb 12

Overriding Default HTTP Resilience Handlers in .NET

Introducing .NET 8 resilience packagesbuilt on top of Pollyhas made it much easier to build robust...

Learn More 1 0Feb 4

Implementing AES Encryption With C#

A single exposed API key or database password can compromise your entire infrastructure. Yet many...

Learn More 0 0Jan 28

Scaling Monoliths: A Practical Guide for Growing Systems

Monoliths get a bad rap in our industry. We're told they're legacy, that they don't scale, and that...

Learn More 0 0Jan 19

Working with LLMs in .NET using Microsoft.Extensions.AI

I've been experimenting with different approaches to integrating LLMs into .NET apps, and I want to...

Learn More 2 0Jan 13

Unit Testing Clean Architecture Use Cases

Writing tests is a crucial part of my daily work. Over the years, I've learned that good tests can...

Learn More 0 0Jan 10

What Rewriting a 40-Year-Old Project Taught Me About Software Development

"Your task is to rewrite this system. It powers our entire operation. Oh, and it's written in...

Learn More 0 0Jan 3

Scheduling Background Jobs With Quartz in .NET (advanced concepts)

Most ASP.NET Core applications need to handle background processing - from sending reminder emails to...

Learn More 1 0Dec 25 '24

Internal vs. Public APIs in Modular Monoliths

Every article about modular monoliths tells you to use public APIs between modules. But they rarely...

Learn More 0 0Dec 18 '24

Central Package Management in .NET - Simplify NuGet Dependencies

I remember the days when managing NuGet packages across multiple projects was a real pain. You know...

Learn More 3 0Dec 8 '24

Implementing the Saga Pattern With MassTransit

Long-running business processes often involve multiple services working together. Think about an...

Learn More 0 0Dec 4 '24

Building Async APIs in ASP.NET Core - The Right Way

Most APIs follow a simple pattern. The client sends a request. The server does some work. The server...

Learn More 0 0Nov 25 '24

HybridCache in ASP.NET Core - New Caching Library

Caching is essential for building fast, scalable applications. ASP.NET Core has traditionally offered...

Learn More 0 1Nov 22 '24

Functional Programming in C#: The Practical Parts

Functional programming patterns can feel academic and abstract. Terms like "monads" and "functors"...

Learn More 0 0Nov 11 '24

Clean Architecture: The Missing Chapter

I see the same mistake happen over and over again. Developers discover Clean Architecture, get...

Learn More 0 0Nov 4 '24