Posts
1147
Comments
890
Trackbacks
1
cqrs for dummies
Greg Young coins ‘CQRS’, immediately calls it an anti-pattern

This is completely a joke, of course, but was my immediate thought when reading this somewhat old ‘news’ story.

posted @ Wednesday, December 28, 2016 11:40 PM | Feedback (0)
cqrs for dummies – cqrs guidance coming from microsoft

I don’t remember exactly how google groups work, so I don’t remember if you have to be a member of a group to lurk, but a post came out from Microsoft that they intend to release guidance on cqrs.  The thread is here. The roadmap for the guidance is here and a related post about how cqrs supposedly works with Azure is here. With my usual skill at people development, my response was: “Oh dear god. Nothing can possibly go wrong with that.” A lot of stuff then went on in the thread.  A lot of...

posted @ Wednesday, November 02, 2011 10:10 PM | Feedback (4)
Repost: CQRS is too complicated……not

Rob Ashton has a good post up about how the complaint that CQRS is too complicated isn’t really valid.  It’s a good summary.

posted @ Wednesday, September 28, 2011 7:06 PM | Feedback (0)
cqrs for dummies – 4 of N – the event publishing layer

Series link here. As a reminder of what I’m talking about, here’s the picture from Mark: What I’m going to be talking about is section #4 from Mark’s picture, and in particular, I’m going to be going over a number of concepts including: Eventual Consistency Event Handler per view model Persisting internal events and publishing external events inside a transaction Publishing architecture Eventual Consistency In a previous post, I talked in detail about what Eventual...

posted @ Wednesday, May 25, 2011 11:43 PM | Feedback (0)
cqrs for dummies – example – when returning a value from a command makes sense

In a previous post, I talked about why I have broken from tradition and created command handlers that returned a value.  I want to give a brief example of where that makes sense. ELT is a legitimate software development project There are many times when I develop software that involves heavy UI usage and/or involves something like a domain in the sense of DDD. However, there are many other times when I’m doing something else, and that is when I am developing ETL software.  ETL ( Extract Transform Load) is definitely less ‘sexy’ but is often a...

posted @ Saturday, May 14, 2011 11:36 PM | Feedback (0)
cqrs for dummies – example – comments on an incredibly simple implementation of the command part of cqrs

In a previous post, I laid out an incredibly simple implementation of the command part of cqrs.  I specifically left out any comments, so consider this the planned addendum to that post. Why a code sample/example and why now? As a general rule, on my blog, I tend to explicitly refrain from posting code.  Why? It varies from day to day, but I tend to read between 50-100 blog posts a day (note to self: there’s a reason why you don’t get enough done in a day.  Address.).  Among the bloggers I read daily include Ayende.  Now,...

posted @ Tuesday, April 26, 2011 7:18 PM | Feedback (0)
cqrs for dummies – example – an incredibly simple implementation of the command part of cqrs

Without comment, the interfaces: namespace Infrastructure.Command {     public interface ICommand {}     public interface ICommand<TReturnValue> {}     public interface Handles<T> where T : ICommand     {         void Handle(T command);     }     public interface Handles<T,TReturnValue> where T: ICommand     {         TReturnValue Handle(T command);     }     public interface ICommandBus     {         void Register<TCommand>(Handles<TCommand> handler) where TCommand : ICommand;         void Publish<TCommand>(TCommand...

posted @ Monday, April 25, 2011 7:28 PM | Feedback (1)
cqrs for dummies – an interlude – has it all been a waste of time?

Now that I have completed the long project that has sucked up a huge amount of time (which was necessary because it was important to the client, and because it pays the bills), I have returned much of my attention to one of my own projects, which might hopefully help pay some of the bills down the road and which involves an oddly opinionated version of CQRS. As it happens, Udi Dahan has written a post entitled “When to avoid CQRS” that suggests I shouldn’t be putting in the effort.  Some of the key snippets here: “It looks...

posted @ Sunday, April 24, 2011 11:17 PM | Feedback (11)
cqrs for dummies – an interlude – Greg Young’s sample app

Greg has posted that he has created a sample app for CQRS, which you can find here. It is indeed called “SimplestPossibleThing” and it’s pretty accurate, but it is good code to review.  I especially like “InfrastructureCrap.DontBotherReadingItsNotImportant.cs", I mean, come on, what else would you look at first. Seriously though, it’s important to see a simple implementation of all of the main components.  Check it out.

posted @ Tuesday, August 31, 2010 1:33 PM | Feedback (0)
cqrs for dummies – an interlude – notes from Greg Young’s USA Weekend Class

Greg Young has been doing a number of EventBrite Live Meeting type sessions over the last month. I haven’t been able to attend any of them, but Jeff Doolittle posted a summary (if you can call a 17-page PDF a summary) of the latest one. Good stuff, check it out.

posted @ Thursday, August 26, 2010 12:24 PM | Feedback (2)
cqrs for dummies – 3 of n – the event store layer

Series link here. As a reminder of what I’m talking about, here’s the picture from Mark: What I’m going to be talking about is section #3 from Mark’s picture, and in particular, I’m going to be going over a number of concepts including: Domain events Write-only event store, or “Accountants don’t use erasers” Compensating actions Automatic audit log Replaying Events Data mining Event Sourcing The general nature of Domain Events ...

posted @ Tuesday, August 10, 2010 8:46 PM | Feedback (2)
cqrs for dummies – an interlude – one way of implementing queries and commands

This may sound cynical, though I don’t mean it that way (for once), but there’s more than one way to skin a cat, and so I try to avoid advocating strict ways of writing certain types of code.  Having said that, I’ve found that writing queries and commands with a certain basic pattern has worked all right for me, at least recently. Queries can be implemented using the following interfaces: public interface IQuery<TReturnValue>     {         TReturnValue Execute();     }     public interface IQuery<TReturnValue, TParameterDefinition>...

posted @ Monday, July 19, 2010 9:30 PM | Feedback (0)
cqrs for dummies – an interlude – DDD Exchange 2010

Event Store Layer post is coming (really, it is), but in the interim, you can find a lot of good presentations from the DDD Exchange 2010 in London (which obviously covers DDD in general, as well as CQRS) from Eric Evans, Udi Dahan, Greg Young, Ian Cooper and Gojko Adzic. Check it out here.  Good stuff.  For those of you not inclined to watching online presentations, you can find good summaries here, here, here and here.

posted @ Tuesday, June 15, 2010 7:30 PM | Feedback (0)
cqrs for dummies – an interlude – more links of interest

There are more than enough link aggregators out there, so I doubt I will do this on a regular basis, but I’ve come across a couple of other links that I find interesting. Rinat Abdullin – a nice series about how to start with CQRS and what it means. Agr.CQRS – a framework and sample implementation of CQRS. Ncqrs – another framework with sample implementations of CQRS. DDDD Review – a review list talking about Greg’s ever impending book on the subject. Inversion of Control Freak – another link aggregate of DDDD and CQRS links.

posted @ Sunday, May 09, 2010 10:27 PM | Feedback (0)
cqrs for dummies – an interlude – other interesting blog series

I’ve come across a couple of posters who have blogged regularly about CQRS and find their stuff pretty interesting. Pal Fossmo has written a number of posts and has this great image of how CQRS might work (included with permission): His post category on CQRS can be found here. Bjarte Naess has been posting quite a bit after taking one of Greg’s two day courses, and you can find his stuff here. Check them out, good stuff.

posted @ Sunday, April 18, 2010 10:35 PM | Feedback (0)
cqrs for dummies – 2.1 of n – command layer notifications

And so of course, I managed to leave out one important consideration. You are on the UI and you, e.g., click a button that creates a command.  What happens now? I didn’t really talk about either the command bus or the command handler, because to a certain extent they are implementation details.  You could actually have, e.g. NServiceBus and use a bus, or you could connect through regular method calls, or you could do a host of different things.  When it comes to the command handler, you could have some generic handler class or, better I think, have...

posted @ Monday, March 15, 2010 11:38 PM | Feedback (2)
cqrs for dummies – 2 of n – the command layer

Series link here. Update: added an 'addendum' here.  As a reminder of what I’m talking about, here’s the picture from Mark: What I’m going to be talking about is section #2 from Mark’s picture, and in particular, I’m going to be going over a number of concepts including: The differences and advantages of using Commands over DTOs Validation of commands, and how/when this can occur outside of the domain Why domain objects shouldn’t have getters and setters and how commands help here Why domain objects should never...

posted @ Sunday, March 14, 2010 10:34 PM | Feedback (3)
cqrs for dummies – an interlude – is cqrs the ‘shiny new thing’?

The next substantive post on the command layer should be up this week, but thought I would comment on this. For various reasons, a question has arisen of whether cqrs is some shiny new thing.  define what that means however you wish. The short answer is, yes, but no. As Papa Greg has mentioned/stated before, cqrs is ‘only’ separating your codebase in such a way that commands and queries use different services (or classes if like me you are allergic to services).  Which is absolutely correct.  Typically, however, mention of cqrs tends to involve a lot more...

posted @ Tuesday, March 09, 2010 7:20 PM | Feedback (0)
cqrs for dummies - an interlude - eventual consistency at Amazon

I'm sure I've posted this before, but there's a really good presentation available of the theoretical underpinnings of Eventual Consistency and how Amazon tackled it. Some teases: " Given the worldwide scope of these systems, we use replication techniques ubiquitously to guarantee consistent performance and high availability. Although replication brings us closer to our goals, it cannot achieve them in a perfectly transparent manner." "This means that there are two choices on what to drop: relaxing consistency will allow the system to remain highly available under the partitionable conditions, whereas making consistency a priority means that under certain conditions the system will not be available....

posted @ Friday, February 19, 2010 10:39 AM | Feedback (0)
cqrs for dummies – an interlude – cqrs is not an architecture

Papa Greg has returned from his walkabout to post a number of items about cqrs, architecture, event sourcing, and whatnot.  If you find anything in my discussion of this stuff remotely interesting, you really should be reading his stuff first, since, although he didn’t exactly invent any of it (it’s all just things people have been doing before), he did name it and has done a lot of real-world work in making it a lot more sophisticated (not to mention presenting on it around the world), etc. etc. etc. Anyhoo, in one of them, he emphasizes that cqrs, in...

posted @ Thursday, February 18, 2010 7:33 AM | Feedback (0)
cqrs for dummies – 1 of N – the query layer

Back to the fun stuff.  Series link here. As a reminder of what I’m talking about, here’s the picture from Mark: What I’m going to be talking about is section #1 from Mark’s picture, and in particular, I’m going to going over a number of concepts including: The Reporting Store Eventual Consistency You don’t need your Domain Once you have one, why not more? “Reporting” doesn’t just mean Reporting One of the first things that I found difficult when learning about CQRS was the use of the...

posted @ Tuesday, February 09, 2010 11:09 PM | Feedback (4)
CQRS Presentation, Chicago Alt.NET, 1/13/2010 Recap

I’ll update this post with the link to the screenshot and the slide deck when Sergio posts it. Update: here they are. On a scale of 1 to 10, without thinking too much about it, I would give myself a 4 or a 5 on this one, and for a couple of (somewhat related) reasons: - a fundamental flaw of the presentation is that I was trying to give a high-level summary overview of the things that Udi and Greg and Mark are talking about, without having the benefit of the width and breadth...

posted @ Thursday, January 14, 2010 8:43 PM | Feedback (0)
cqrs for dummies – 0 of N - Overview

disclaimer: if you’ve ever read a ‘for dummies’ book, you know that they are designed to give a pretty decent overview of a topic from experts.  Given that, this series is probably mis-named.  It should be something more like “cqrs from an idiot” or something, but that’s bad marketing.  Anyway, I’ll be pointing out the people who really know their stuff, with links and whatnot, but I hope to be able to give an explanation of CQRS at a high level that will be of use. update: adding missing overview paragraph at the end, and uploaded larger pictures. ...

posted @ Thursday, December 31, 2009 8:07 PM | Feedback (2)