NRSRx is an opinionated, flexible, and extensible framework that will expedite the development of back-end services built on asp.net 6 - 8. It does this by addressing some cross-cutting concerns that typically require development effort, letting you focus on your business challenges.
NRSRx is highly configurable and extensible, but these are the cross-cutting concerns that are addressed:
- Externalized configuration
- appsettings.json
- User Secrets (useful in development environments)
- Environment Variables (useful in containerized and cloud platforms)
- Authentication
- Authorization
- Role-based authorization via asp.net request authorization filter
- Swagger
- Setup as an OIDC client to facilitate authorization
- Data persistence
- Entity Framework with entity-based auditing
- Multi-Tenancy
- Asp.net request authorization filter
- Versioning
- Api and model
- Adhere's to Microsoft REST Guidelines for versioning
- Logging
- Application Insights (supported via IkeMtz.NRSRx.Logging.ApplicationInsights library)
- Elastisearch (supported via IkeMtz.NRSRx.Logging.Elasticsearch library)
- Splunk (Support via IkeMtz.NRSRx.Logging.Splunk library)
- Eventing
- Azure Service Bus (supported via IkeMtz.NRSRx.Events.Publishers.ServiceBus library)
- Redis Streams (supported via IkeMtz.NRSRx.Events.Publishers.Redis library)
- Unit testability
- MSTest (services built on NRSRx can easily achieve 95%+ code coverage)
Most of the features built into NRSRx are customizable or removable all together. Don't want authentication? Remove it. Nothing in the NRSRx framework is private, internal or sealed, so expansion is a breeze.
NRSRx services come in three different flavors.
- OData
- WebApi
- SignalR
- GraphQL (coming soon)
-
A sample WebApi web application that will publish events to Redis streams and persist data to SQL server using Entity Framework.
-
A sample OData web application that reads data from SQL Server using Entity Framework.
-
A sample SignalR web application.
Every change that goes into the NRSRx framework goes through full unit and integration tests on Azure Devops pipelines.