Aspire 9 upcoming features 🧵:
First, you'll be able to use Aspire 9 with .NET 8 and .NET 9! It will no longer require a call to dotnet workload install, and instead uses an MSBuild SDK. This should simplify CI/CD integration and getting started immensely! All you need is NuGet!
#dotnet #aspire
CQRS = Separate read/write databases?
Not so fast! ❌
This isn't really what CQRS is about.
First, there was the CQS - Command-Query Separation principle.
Here's what CQS is:
- Commands change state, don't return data
- Queries don't change state, return data
- Queries should not have side effects
What? I can't return data from a command?!
Of course, you can - but the intent is different.
I'm not saying you shouldn't be pragmatic.
For example, you insert a new row into the database and return the ID. Perfectly fine.
But what about CQRS?
CQRS stands for Command-Query Responsibility Segregation.
It's an evolution of CQS and works on the architecture level.
Whereas CQS works on the method (or class) level.
It separates the code responsible for handling commands from the code for handling queries.
In other words, you have a logical separation of reads and writes.
You can also extend this with different logical data models.
Here are a few benefits you get with CQRS:
- Complexity management
- Scalability
- Flexibility
- Security
How did we begin associating CQRS with separate read/write databases?
This happens when you take the logical separation of commands and queries and elevate it to physical separation.
There are many flavors of this approach:
- Event sourcing + NoSQL
- SQL + NoSQL
- SQL + Redis
And while it has its benefits, like improving your job security, too much complexity can hurt your project.
So start simple. You can do CQRS with one database.
Apply logical separation of commands and queries.
Only add further complexity if you need to.
P.S. If you liked this, consider joining The .NET Weekly - my newsletter with 40,000+ engineers that teaches you how to improve at .NET and software architecture.
Subscribe here → https://t.co/lQs9X4ci61
Would you use CQRS in your project, or do you view it as over-engineering?
Version 8.0.0 of #npgsql and the #efcore provider for @PostgreSQL are out and available on https://t.co/6IlZXHJTJl! So much exciting stuff that doesn't fit in a tweet - see the release notes (https://t.co/xCM4DcbL1o and https://t.co/CEzxAl7CYG), and let us know how it goes!
Together @Chilli_Cream@TheGuildDev and @wundergraphcom are joining forces to create a new open specification for distributed #graphql servers.
Have a look at what graphql-fusion is about 🙂
https://t.co/rk1krd47RT
Get the power of Entity Framework Core Power Tools from the command line with the new CLI edition!
- map stored procedures and functions
- custom naming and pluralization
- t4 templates
- readme with custom getting started guide
- and much more
https://t.co/iWzpNG4SFI #efcore #dotnet
I have blogged new article "How to make the fastest .NET Serializer with .NET 7 / C# 11, case of MemoryPack", If you are interested in writing high peformance C#, read on. #dotnet
https://t.co/Kr0JrC2XGb
Just realeased “Domain-Driven Design in 150 Seconds”. This was fun and challenging to create, so I’m very curios to hear what you think!
https://t.co/GUlq70WUEu
#ddd#dotnet