ABP is an opinionated yet flexible infrastructure for building modular, maintainable, and scalable .NET applications, supporting modern architectural principles like DDD, microservices, and multi-tenancy.
ABP provides all the necessary infrastructure and tools to build completely modular applications and re-usable application modules. Take advantage of pre-built application modules and create your modular monolithic application with best practices.
Each module handles specific business functions and communicates via clear interfaces, ensuring high cohesion and low coupling.
The entire application is deployed as one unit, simplifying deployment processes and reducing operational complexity.
Although it is a single application, it is organized into separate modules, each responsible for a specific domain or functionality.
Modules communicate through explicit interfaces, ensuring clear boundaries and minimizing interdependencies.
The ABP platform components have been designed to be compatible and work well with distributed and microservice systems.
Each module handles specific business functions and communicates via clear interfaces, ensuring high cohesion and low coupling.
Each service focuses on a distinct business function (e.g., user management, order processing, payment).
A service can be updated or deployed without affecting the entire system.
Every service typically owns its database or data store, allowing it to choose the best storage technology for its problem while requiring data consistency and integration patterns.
Services interact using protocols like HTTP, gRPC, or message queues (e.g., RabbitMQ, Kafka).
ABP simplifies and standardizes implementing Domain Driven Design (DDD) to build complex yet maintainable software solutions.
DDD is especially beneficial in complex problem spaces, helping teams manage complexity through modeling techniques and strategic design patterns.
By emphasizing bounded contexts and aggregates, DDD leads to well-organized codebases that reflect domain boundaries and reduce unnecessary dependencies.
Clear separation of concerns and encapsulation of domain rules make it easier to adapt, test, and evolve the system as business needs change.
DDD encourages modular design through bounded contexts, which helps teams identify what parts of the system can be scaled independently or evolved into microservices.
ABP provides a complete multi-tenancy system for each aspect of your application. You can build SaaS applications without caring about the complexity of multi-tenancy.
You share the hardware and software among customers, you reduce costs and serve the maximum number of customers.
Since all customers use the latest version, we maintain a single codebase and deliver updates to everyone simultaneously.
A single codebase and infrastructure simplify updates and reduce the complexity of managing multiple instances, easing system maintenance.
During demand spikes, adding servers behind a load balancer improves scalability and responsiveness—unlike on-premises systems, where resource scaling per tenant is difficult.
New tenants can be onboarded quickly by simply adding a row to the Tenants table—no need for separate environments.