"Allow distributed architectures where repositories delegate to remote services — enabling event-driven microservices, federation scenarios, and API aggregation patterns without abandoning type-safe repository abstractions."
The Problem Today
Microservice architectures often require aggregating data from multiple remote services — an API gateway, a data service, a business logic service. Teams today reach for the HTTP client directly or custom REST wrappers, losing the repository abstraction and the consistency it provides. There is no natural way to express "this repository's data lives on a remote gRPC endpoint" within the framework.
What We Are Building
- A
Deveel.Repository.Services package providing base implementations for remote repositories
- A RESTful channel builder and HTTP-based repository backend — maps
IRepository<TEntity> CRUD and query operations to HTTP endpoints following REST conventions
- A gRPC channel builder and gRPC-based repository backend — maps repository operations to typed gRPC service calls
- Pluggable serialization and deserialization so teams can use their preferred serializer
- Distributed transaction coordination via transaction identifiers and two-phase commit patterns when both sides support it
- Automatically typed proxy generation from repository interfaces using source generators
Benefits
- Microservices architectures use the same repository abstraction as local data access
- API aggregation and data federation become first-class concerns in the repository layer, not lost in boilerplate HTTP plumbing
- Teams can switch between local and remote implementations with a single DI configuration change
- Event-driven workflows maintain transactional boundaries across service calls where supported
- gRPC performance benefits for service-to-service communication without adding a new abstraction layer
The Problem Today
Microservice architectures often require aggregating data from multiple remote services — an API gateway, a data service, a business logic service. Teams today reach for the HTTP client directly or custom REST wrappers, losing the repository abstraction and the consistency it provides. There is no natural way to express "this repository's data lives on a remote gRPC endpoint" within the framework.
What We Are Building
Deveel.Repository.Servicespackage providing base implementations for remote repositoriesIRepository<TEntity>CRUD and query operations to HTTP endpoints following REST conventionsBenefits