A .NET application framework for building modular, extensible business applications.
dotnet new web
dotnet add package --prerelease Schemata.Application.Complex.Targetsvar builder = WebApplication.CreateBuilder(args)
.UseSchemata(schema => {
schema.UseLogging();
schema.UseRouting();
schema.UseControllers();
});
var app = builder.Build();
app.Run();Add more capabilities from the Feature Domains below.
- Guides — step-by-step tutorials building a complete application from scratch
- Documents — technical reference for framework internals and all subsystems
- Modeling — SKM language reference for entity code generation
- DSL
- Modular
- Audit
- Authorization
- Datasource
- Event
- Identity
- Mapping
- Repository
- Task
- Tenant
- Validation
- Workflow
Features are modular components that can be integrated at startup.
Features are characterized by Order and Priority, both of which are Int32 values. Order controls the sequence of ConfigureServices calls; Priority controls the sequence of ConfigureApplication and ConfigureEndpoints calls.
The range [100_000_000, 900_000_000] for Order and Priority is reserved for built-in features and Schemata extensions.
A built-in feature can be activated by calling the UseXXX method on the SchemataBuilder instance. These features may also have additional configuration methods.
| Priority | Feature | Description |
|---|---|---|
| 100_000_000 | ForwardedHeaders | ASP.NET Forwarded Headers Middleware |
| 110_000_000 | DeveloperExceptionPage | ASP.NET Developer Exception Page Middleware |
| 120_000_000 | ExceptionHandler | ASP.NET Exception Handler Middleware |
| 130_000_000 | Logging | ASP.NET Logging Middleware |
| 140_000_000 | HttpLogging | ASP.NET HTTP Logging Middleware |
| 150_000_000 | W3CLogging | ASP.NET W3C Logging Middleware |
| 160_000_000 | Https | ASP.NET HTTPS & HTTPS Redirection Middlewares |
| 170_000_000 | Tenancy | Multi-tenant isolation middleware (Order: 900_000_000) |
| 180_000_000 | CookiePolicy | ASP.NET Cookie Policy Middleware |
| 190_000_000 | Routing | ASP.NET Routing Middleware |
| 200_000_000 | Quota | ASP.NET Rate Limiter Middleware |
| 210_000_000 | Cors | ASP.NET CORS Middleware |
| 220_000_000 | Authentication | ASP.NET Authentication & Authorization Middlewares |
| 230_000_000 | Session | ASP.NET Session Middleware |
| 240_000_000 | Controllers | ASP.NET MVC Middlewares, without Views |
| 250_000_000 | JsonSerializer | Configure System.Text.Json to use snake_case and handle JavaScript's 53-bit integers |
An extension feature can be activated in the same way as a built-in feature.
| Priority | Package | Feature | Description |
|---|---|---|---|
| 400_000_000 | Schemata.Security.Foundation | Security | RBAC/ABAC security policies |
| 410_000_000 | Schemata.Identity.Foundation | Identity | ASP.NET Core Identity integration |
| 420_000_000 | Schemata.Authorization.Foundation | Authorization | OAuth 2.0 / OpenID Connect server |
| 430_000_000 | Schemata.Mapping.Foundation | Mapping | Unified object mapper abstraction |
| 440_000_000 | Schemata.Workflow.Foundation | Workflow | Stateful workflow / state machine |
| 450_000_000 | Schemata.Resource.Foundation | Resource | Google AIP-compliant resource service |
| 460_000_000 | Schemata.Resource.Http | Resource (MapHttp) |
HTTP/REST endpoint |
| 470_000_000 | Schemata.Resource.Grpc | Resource (MapGrpc) |
gRPC endpoint |
| 480_000_000 | Schemata.Modular | Modular | Module discovery and loading |
Schemata is designed to be compatible with .NET Standard 2.0, .NET Standard 2.1, the latest .NET Long-Term Support (LTS) version, and the most recent .NET release.
Some packages may have additional compliance requirements, which are documented below.
Schemata Authorization Foundation complies with the OpenID Connect Core 1.0 specification.
Schemata Identity Foundation is compatible with ASP.NET Core Identity.
The Schemata Mapping Foundation is compatible with various mapping libraries, including AutoMapper and Mapster, among others.
It provides a unified interface for these libraries, enabling developers to switch between them without modifying application code.
The Schemata Resource Foundation complies with the API Improvement Proposals - General AIPs proposals.
Unfortunately, the Schemata Workflow Foundation is not yet compliant with enterprise standards such as BPMN 2.0.