<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/sources/milanjovanovic/best-of/2025/05" -->

---
title: Best Milan Jovanović posts — May 2025 | daily.dev
description: The most upvoted Milan Jovanović posts from May 2025, curated by the daily.dev community.
canonical: https://daily.dev/sources/milanjovanovic/best-of/2025/05
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:url: https://daily.dev/sources/milanjovanovic/best-of/2025/05
og:type: website
og:site_name: daily.dev
og:title: Best Milan Jovanović posts — May 2025 | daily.dev
og:description: The most upvoted Milan Jovanović posts from May 2025, curated by the daily.dev community.
og:image: https://media.daily.dev/image/upload/s--VAY5ToZt--/f_auto/v1724209435/public/daily.dev%20-%20open%20graph
---

# Best of Milan Jovanović — May 2025

1. 1  
[](https://daily.dev/posts/cqrs-pattern-the-way-it-should-ve-been-from-the-start-wtmmiipnf "CQRS Pattern the Way It Should've Been From the Start")  
Article  
![Avatar of milanjovanovic](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/78d8abfb692746538410dee47f93e566)Milan Jovanović · 1y  
CQRS Pattern the Way It Should've Been From the Start  
This post explains how to implement CQRS in .NET without relying on MediatR, providing a guide for building a lightweight setup using simple interfaces, decorators, and dependency injection. Explore the benefits such as better control over CQRS infrastructure, predictable dispatching, simplified debugging, and improved testability. Learn how to define command and query interfaces, add decorators for logging and validation, and register everything using Scrutor for a clean and extensible CQRS pipeline.  
83  
2

[See all Milan Jovanović archives](/sources/milanjovanovic/best-of)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@graph":[{"@type":"CollectionPage","@id":"https://daily.dev/sources/milanjovanovic/best-of/2025/05#page","url":"https://daily.dev/sources/milanjovanovic/best-of/2025/05","name":"Best Milan Jovanović Posts — May 2025","description":"The most upvoted Milan Jovanović posts from May 2025, curated by the daily.dev community.","isPartOf":{"@type":"WebSite","url":"https://daily.dev"}},{"@type":"ItemList","@id":"https://daily.dev/sources/milanjovanovic/best-of/2025/05#items","numberOfItems":1,"itemListElement":[{"@type":"ListItem","position":1,"url":"https://daily.dev/posts/cqrs-pattern-the-way-it-should-ve-been-from-the-start-wtmmiipnf","name":"CQRS Pattern the Way It Should've Been From the Start"}]},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Sources","item":"https://daily.dev/sources"},{"@type":"ListItem","position":3,"name":"Milan Jovanović","item":"https://daily.dev/sources/milanjovanovic"},{"@type":"ListItem","position":4,"name":"Best of","item":"https://daily.dev/sources/milanjovanovic/best-of"},{"@type":"ListItem","position":5,"name":"May 2025"}]}]}
```

