JdonFramework is a java framework that you can use to build your Domain Driven Design + CQRS + EventSource applications with asynchronous concurrency and higher throughput.
JdonFramework = DDD + Event Sourcing + CQRS + Asynchronous + Concurrent + Higher throughput.
JdonFramework = Spring(Ioc/DI/AOP) + Ruby(DCI) + Scala(Actor)
domain events in JdonFramework: a
in-memeory model can concurrently publish events to its subscribers.
JdonFramework's event engine is from Disruptor that be recommended by LMAX Architecture wriiten by Martin Fowler. (Nothing Blocks)
Feature of Jdonframework: combining DCI with DDD aggregate and Domain Events.
Domain-driven design (DDD)
Domain-driven design (DDD) is an approach to developing software for complex needs by deeply connecting the implementation to an evolving model of the core business concepts. details.
Eric Evans on How Technology Influences DDD(2012)
CQRS: Command-query Responsibility Segregation It's a pattern that I first heard described by Greg Young. At its heart is a simple notion that you can use a different model to update information than the model you use to read information. details.
Domain Events: Captures the memory of something interesting which affects the domain. details, see How to create fully encapsulated Domain Models
With JdonFramework you can easily develope a Event Sourcing and CQRS system. in CQRS, by disruptor Jdon can send domain events to #rabbitmqand #zeromq - #distributed.
DCI:Data Context and Interactions: in a Context, a Role played by a Data model triggers interaction behavior.
JdonFramework = DDD+DCI+ES/CQRS: in JdonFramework , A Role played by a Domain Model triggers a interaction event, such as sending a event or message to other consumers.
Object Oriented Programming: A Critical Approach say: OO is really about message passing:
“The message-sending metaphor provides modularity by decoupling the intent of a message (embodied in its name) from the method used by the recipient to carry out the intent. Structural information is similarly protected because all access to the internal state of an object is through this same message interface.”
In JdonFramework， A aggregate is a modularity; aggregate root is the message-sending and message-recipient metaphor.see below picture, more details in : Robot sample
Message or Event is a better way for aggregate root that directly exposed behavior and hold references to others. Message or Event can better protect root entity's internal state not expose.
Domain Events(Event Sourcing) for Evans DDD :
Real domain logic is in the Domain Model,
Outside the domain are these adapters, that listen to messages sent by
the domain. For instance, the domain could ‘broadcast’ a message(Domain Events) that a
new domain object has been created. An appropriate listener receives this
message and calls a method on a persistence service. This service knows
how to store the object in the database.
Eric evans: Acknowledging CAP at the Root -- in the Domain Model
Domain-Driven Dsign Development, supports in-memory cache model.
Event Sourcing:Never blocks ,Nothing blocks, concurrent programming; Event-driven Architecture(EDA); asynchronous programming,concurrency pattern, lazy evaluation.
- DI and AOP framework, POJO autowiring that implements Dependency Injection, and all components can be replaced, even include the framework itself. introduce any pojo as a inteceptor.
- Command Query Responsibility Segregation(CQRS/CQS) , support the default implementations for CRUD and auto paginator for query of large datas .
- Lazy initialization or evaluation, improving performance by in-memory cache. memory-consumption-wise
- Be easily integration with Spring framework.
Jdon Framework = DDD + Domain Events(CQRS)+ Ioc/DI + AOP + CRUD + Cache