Capabilities
The opt-in platform pieces you wire into a host — transports, scheduling, events, EF Core, caching, telemetry, and more.
Concepts covers the application model you cannot avoid: every Elarion app has handlers, results, modules, and the source generation that wires them. Capabilities are different — they are the platform pieces you opt into and explicitly wire. You can ship a working application without any of them, and add each one only when a real requirement calls for it.
That line is the framework's guiding principle in practice:
Auto-detect application patterns, explicitly wire platform capabilities.
Each capability below is independent. Add the package, opt the relevant handlers in with an attribute, and wire the runtime in your host.
Expose your handlers
Hosting & composition
Compose modules into an ASP.NET Core host with the generated bootstrapper, feature gating, and endpoint mapping.
Serialization & AOT
Compose per-module JSON contexts into one AOT-friendly serializer shared across transports.
Transports
Map the same handler over HTTP, JSON-RPC, or MCP — and decide which one fits.
Application capabilities
Current user
Transport-neutral access to the authenticated caller, without depending on HttpContext.
Caching
Declarative handler result caching with [Cacheable] and tag-based invalidation.
Scheduling
Source-generated recurring and one-off jobs on one in-memory scheduler.
Resilience
Named retry and timeout policies applied to handlers and jobs.
Events & messaging
In-process domain events and after-commit integration events, with a durable EF Core outbox.
Data & storage
Entity Framework Core
Generated DbSets and entity configuration behind an interface-first IAppDbContext.
Pagination
Transport-neutral keyset and offset paging that produces a Page<T>.
Blob storage
Provider-neutral, streaming-first blob contracts with a PostgreSQL implementation.
Telemetry
OpenTelemetry-compatible traces and metrics through System.Diagnostics — no SDK lock-in.
Solution structure
Where entities, modules, and schema configuration belong relative to the module-boundary rule — keep entities in a shared-kernel namespace, let each module own its handlers and schema, and graduate to separate assemblies only when they earn their keep.
Hosting
Wire the module bootstrapper, RPC method map, and JSON-RPC endpoint into an ASP.NET Core host.