Thanks for the examples. It got me thinking about my architecture again and I think I found a way to simplify things for myself. I was planning on having the command handlers processed in my MVC controllers, which means that command logic would be executed in IIS and then the events generated by that logic would be sent to EventStore. Now I’m thinking of changing to first saving my commands in EventStore in separate streams based on the CLR type of the command. So, the MVC/WebApi controllers will just send the commands over the “bus” which just stores them in ES, end of web portion, no potentially heavy processing in IIS at all. I’ll then have a command processor with checkpointing that pulls commands out of ES using a subscribe-to-all subscription and takes care of executing the handler logic. The events generated will then be stored in ES and there will be an event processor with checkpointing that handles processing just the events for sagas and other non-read-model processes. The command processor and event processor will most likely be inside the same process, but I suppose the could be separated as well. I’ll then have a separate read-model synchronizing process that just handles updating my read model in SQL Server.
Thanks for getting the wheels turning,