Skip to content

esfand/ddd-cqrs-sample

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Note: This Git repository is just a verbatim conversion from the SVN repository located at http:https://code.google.com/p/ddd-cqrs-sample/ . For the latest updates, please visit the developer's SVN repository.

Primary goals of this project are the following:

  • presenting sample implementation of all DDD Building Blocks and techniques - no technical compromises, real world problems and solutions
  • presenting pragmatic approach to the CqRS architecture - a kind of "portable architecture" that can be implemented in any technology
  • providing well crafted code, ready to be utilized in production

Secondary goals:

  • presenting development process techniques: Behavior Driven Development
  • presenting ready ready to use and easy to adopt tools and best practices

In this projects we focus on technical challenges. This project won't teach you how to model using DDD, however you can learn some best practices and patterns.

Don't get us wrong, frameworks are great - but in certain contexts.

Our intention is to provide a leaven (leavening agent) - something that you use to make a bread - a good one.

So you take our leaven, understand it deeply and modify to fit your context.

You don't need to couple your code with the leaven code. You can, but don't have to extend our classes. Better approach is to change, rename and repackage leaven classes:.

Leaven is really simple and small. We achieved this by developing straightforward code without unnecessary abstraction-distraction like XML, and inner accidental complexity typical for frameowrks.

If You want to change something then go straight to the code and do it instead of reading this documentation. You are the Architect!

Our goal is to prepare a business developer programming model (way of thinking about class-level design) that is free of any platform-specific solutions.

Business developer should focus on analysis and domain modeling - engine does technical stuff.

Although the implementation is based on Spring and JPA we managed to avoid any special approach or programming model. Therefore our architecture is portable which means You can implement this "style" using any Java framework or platform (Seam, EJB, etc).


  • All DDD Building Blocks: Entity, Value Object, Aggregate, Domain Service, Policy, Specification, Repository, Factory
  • Technical aspects of implementing all BB: Dependency Injection, Lazy Loading, Cascade Operations
  • Some advanced DDD techniques: Bounded Context, Anti-corruption Layer, Events and Sagas
  • CqRS technical solutions: asynchronous Commands handling, 3 approaches to implement Read Model. Event Sourcing as a domain persistence model is not implemented in this milestone.
  • Spring technical code: Events, Sagas, Transactions, Security
  • JPA technical code: @Embedded VOs, Query optimisation
  • BDD examples - for complete development lifecycle
  • BDD Support
  • More clients: Android (in occasionally connected architecture), AJAX, WebService, Remoting (SWT)
  • More optimisation techniques for Read Model
  • Cloud environment
  • Event Sourcing as another (behavioral) persistence model
  • Tools for architecture visualization and project structure validation
  • Eclipse tools for scaffolding: Building Blocks creator, BDD assist

  1. Read the Wiki
    • understand the sample domain
    • understand technical design, decisions that were made, their context and trade-offs,
  2. Analyze the source code
    • SVN repository
    • simultaneously look at the "scalable map" that presents both: big picture of the architecture and details of implementation - that should help reading leaven code.
    • notice that "map" contains clickable links to source code in repo
  3. Download Source Code, modify it to your context - let leaven grow in warm environment
  4. Live long and prosper:)

Special thanks for great people driven by passion:

  • Eric Evans - for opening our minds
  • Greg Young - for great talks and great class (worth years of learning) in Cracow
  • Udi Dahan - for pragmatic approach and clear examples
  • Antonio Vivaldi - for Four Seasons:)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages