Nightly build packages and symbols available at https://cqrs-nightly-nuget-builds.azurewebsites.net/
A lightweight enterprise framework to write CQRS, event-sourced and micro-service applications in hybrid multi-datacentre, on-premise and Azure environments. Currently published as nuget packages @ http://www.nuget.org. It is written in C# and targets .NET 4.0 (where possible) and .NET 4.5. CQRS.NET borrows heavily from CQRSlite (https://github.com/gautema/cqrslite), from some point in 2013.
CQRS.NET has been designed with modularity in mind... see the number of technology packages below you can chose from. Every package and design choice made should be interchangeable with custom code if needed.
For those new to CQRS.NET, we strongly suggest you have a look at our basic Hello World Tutorial that covers basic commands and events. Or you have a look at our basic Northwind Tutorial which takes a look into queries, views, read stores and read models, then commands, eents aggregates and event handlers.
And for those looking for a more thorough tutorial we suggest you start with the getting started section in the wiki
CQRS.NET API reference documentation is available to browse. We are adding more and more documentation as we edit each file. By version 3.0 we aim to have all public methods and classes documented. User documentation is starting off for now in the wiki section of this project. We strongly invite people to post questions and issues which we'll answer and work on.
Several sample projects are located within the code and on our wiki. These show a few different approaches/common usage scenarios of the framework.
- One sample is the original sample from CQRSlite, ported to use CQRS.NET - this is not documented and found within the main Visual Studio solution in our code base.
- The second is a rather basic Hello World sample that covers basic commands and events, but not queries.
- The third is a more traditional mixed-mode scenario, Northwind Tutorial thats starts off by replacing one query, then one create, update and delete operation out of several in an existing website.
The project should compile without any setup in .NET 4.5.2. I'm guessing Mono 3.10.0 should work too.
Commercial support is now available through our partner company Chinchilla Software.
This project is actively developed, however we sometimes have specific feature requests that are outside of our roadmap and plan. We're always open to new ideas and requests for new modules and technology connectors that you need. The biggest requests in version 2.0 were to have better akka.net modules as well as support for Azure blob/table storage and performance/telemetry.
- Command sending and event publishing.
- Unit of work through session with aggregate tracking (I'm tempted to remove the UOW).
- Repository for getting and saving aggregates and process managers.
- Strategy/Specification pattern for querying.
- Optimistic concurrency checking.
- In process bus with autoregistration of handlers.
- Azure service bus/event hub for event bus'ing.
- Azure service bus/event hub for command bus'ing.
- Greg Youngs EventStore for event sourcing.
- MongoDB for entity, view and project persistence and event sourcing.
- Azure CosmosDB for event sourcing, entity, view and project persistence.
- Azure Blob/Table Storage for event sourcing, entity, view and project persistence.
- Sql for event sourcing, entity, view and project persistence with built-in mirroring.
- Advanced concurrency support via akka.net
See Nuget Packages in the wiki.