Skip to content

maniserowicz/ProcentCqrs

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

79 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This is my playground for experiments with CQRS in web app.

Main ideas:

  • write-only domain model with no getters/setters, only public methods
  • read model created via DB views
  • all interaction with domain via commands/events

Git tags mark "milestones" in this project's development - use them to navigate though project lifecycle.

For now I am not going to implement event sourcing, as I probably won't be able to use it in a real project in foreseeable future.

Testing the domain (it has no public getters/setters)

I solved this (however I'm not sure if it's the right way) by testing with DB - tests call command handlers instead of domain objects themselves. Domain command handlers get NH session, and tests use Simple.Data to verify that operation has the expected result. I currently don't have any idea of how to do it better.

Further development ideas:

  • add authentication and authorization
  • create command wrappers for handling authorization and transactions
  • ...

Tools user so far:

  • ASP MVC 3
  • SQL Server
  • Autofac
  • NHibernate (for write model)
  • Simple.Data (for read model)
  • NLog
  • SQL Server CE (for testing)
  • MSpec (and xUnit in several minor scenarios)
  • FakeItEasy