How yuebo119/palddd works
Pal.DDD is a modular .NET DDD/CQRS and event-sourcing infrastructure framework. Its principal workflow is command dispatch to a handler, which updates domain state and commits through a unit of work; transactional outbox processing publishes messages, and inbox processing supports idempotent consumption. Distinct capabilities include saga orchestration, event logging and projection replay, serialization evolution, and compile-time domain diagnostics. The README documents the end-to-end workflow and capabilities; source excerpts and the SOURCE INDEX substantiate selected internal links. Unsampled implementations are represented only where documented, and uncertain links are omitted.
Main entry points: DapperOutboxStore.cs Outbox store · MessageBroker.cs Message broker · Saga.cs Saga orchestration · OutboxProcessor.cs Outbox processor
Components 23
Domain foundation
- Domain model
src/PalDDD.Core/AggregateRoot.cs - DDD analyzers
src/PalDDD.Analyzers/StrategicDddAnalyzer.cs
Application flow
- CQRS dispatcher
src/PalDDD.CQRS/Dispatcher.cs - Request pipeline
src/PalDDD.CQRS/PipelineBehaviors.cs - Handler registration
src/PalDDD.DependencyInjection/ServiceRegistration.cs - Unit of work
src/PalDDD.Core/IUnitOfWork.cs
Reliable messaging
- Outbox processor
src/PalDDD.Transactions/Outbox/OutboxProcessor.cs - Outbox store
src/PalDDD.Dapper/DapperOutboxStore.cs - Inbox processor
src/PalDDD.Transactions/Inbox/InboxProcessor.cs - Inbox store
src/PalDDD.Dapper/DapperInboxStore.cs - Message broker
src/PalDDD.Messaging/MessageBroker.cs - Saga orchestration
src/PalDDD.Transactions/Saga/Saga.cs - Saga state
src/PalDDD.Transactions/Saga/SagaState.cs
Events and projections
- Event log
src/PalDDD.EventLog/IEventLog.cs - Projection replay
src/PalDDD.Projections/ProjectionProcessor.cs - Message serialization
src/PalDDD.Serialization/IMessageSerializer.cs - Contract evolution
src/PalDDD.Serialization.Evolution/MessageEvolutionPipeline.cs
Persistence and integration
- Dapper adapters
src/PalDDD.Dapper/DapperServiceCollectionExtensions.cs - EF transaction adapters
src/PalDDD.Transactions.EFCore/ServiceCollectionExtensions.cs - PalORM adapters
src/PalDDD.PalORM/Stores/PalOrmOutboxStore.cs - Kafka broker
src/PalDDD.Messaging.Kafka/KafkaBroker.cs - RabbitMQ broker
src/PalDDD.Messaging.RabbitMQ/RabbitMqBroker.cs
Other components
- Application code
Connections 24
- Application code → CQRS dispatcher: sends command
README.md - CQRS dispatcher → Request pipeline: runs pipeline
- Handler registration → CQRS dispatcher: registers handlers
src/PalDDD.DependencyInjection/ServiceRegistration.cs - Request pipeline → Application code: returns result
- Application code → Domain model: uses domain types
README.md - Application code → Unit of work: commits changes
README.md - Unit of work → Outbox store: writes transactionally
README.md - Outbox processor → Outbox store: claims messages
- Outbox processor → Message broker: publishes messages
README.md - Message broker → Inbox processor: delivers messages
- Inbox processor → Inbox store: records processing
- Application code → Saga orchestration: defines workflow
README.md - Saga orchestration → Saga state: updates state
src/PalDDD.Transactions/Saga/Saga.cs - Saga orchestration → Outbox processor: supports batch processing
src/PalDDD.Transactions/Saga/Saga.cs - Application code → Event log: uses event log
README.md - Event log → Projection replay: replays events
README.md - Message serialization → Contract evolution: upgrades contracts
src/PalDDD.Serialization.Evolution/MessageEvolutionPipeline.cs - DDD analyzers → Application code: checks conventions
README.md - Dapper adapters → Outbox store: registers store
src/PalDDD.Dapper/DapperServiceCollectionExtensions.cs - Dapper adapters → Inbox store: registers store
src/PalDDD.Dapper/DapperServiceCollectionExtensions.cs - EF transaction adapters → Outbox store: maps store
- PalORM adapters → Outbox store: alternative adapter
- Kafka broker → Message broker: implements broker
- RabbitMQ broker → Message broker: implements broker