Revo Framework
  • Revo Framework documentation
  • General
    • Overview
      • Design overview
      • Project structure
    • Features
    • Super-short example
    • Getting started
    • Example: Task list app
    • FAQ
  • Reference guide
    • Configuration and boostrapping
    • Dependency injection
    • Domain building blocks
    • Commands and queries
    • Events
    • Data persistence
    • Database migrations
    • Projections
    • Authorization
    • Validation
    • Request life-cycle
    • Sagas
    • Jobs
    • Messaging and integrations
    • Multi-tenancy
    • Testing
Powered by GitBook
On this page
  1. General

Features

PreviousProject structureNextSuper-short example

Last updated 5 years ago

The framework combines the concepts of event sourcing, CQRS and DDD to provide support for building applications that are scalable, maintainable, can work in distributed environments and are easy to integrate with outside world. As such, it takes some rather opinionated approaches on the design of certain parts of its architecture. Revo also offers other common features and infrastructure that is often necessary for building complete applications – for example, database migrations, event upgrades, authorizations, validations, messaging, integrations, multi-tenancy or testing. Furthermore, its extensions implement other useful features like entity history change-tracking, auditing or user notifications.

Building blocks for rich DDD-style domain models (, , , , ...) .

Implementing event-sourced entity persistence with support for multiple event store backends (PostgreSQL, MSSQL, SQLite...).

Segregating command and query responsibilities with:

  • Command/query

  • Processing pipeline with filters for cross-cutting concerns (, , etc.)

Support for both and event processing, guaranteed at-least-once delivery, event queues with strict sequence ordering (optionally), event source catch-ups, optional for listeners (projectors, for example).

Thin abstraction layer for easy data persistence (e.g. querying read models) using Entity Framework Core, Entity Framework 6, RavenDB, testable in-memory database or other data providers. Includes support for simple .

Support for read-model projections with various backends (e.g. Entity Framework Core (PostgreSQL, MSSQL, SQLite,...), Entity Framework 6, RavenDB...), automatic idempotency- and concurrency-handling, etc.

Scale and integrate by , commands and queries using common messaging patterns, e.g. with RabbitMQ message queue (using EasyNetQ connector or Rebus service bus).

Coordinating long-running processes or inter-aggregate cooperation with sagas that react to events (a.k.a. process managers).

Basic permission/role-based ACL for commands and queries, fine-grained row filtering .

Other minor features:

  • for commands, queries and other structures

  • History and change-tracking

  • User notifications: event-based, with different output channels (mail, etc.), aggregation, buffering, etc.

  • .NET Core 3.0+, .NET Standard 2.0+ & .NET 4.7.2+ support (with integration for ASP.NET Core and ASP.NET)

Domain-Driven Design
Event Sourcing
CQRS
authorization
validation
Different read/write models
A/synchronous event processing
Data access
database migrations
Projections
SOA, messaging and integration
Sagas
Authorization
Validation
Jobs
Multi-tenancy
Database migrations
publishing and receiving events
aggregates
entities
value objects
domain events
synchronous
asynchronous
pseudo-synchronous event dispatch
Event message metadata
Event versioning
Event upgrades
Commands and queries
handlers
repositories