- Call Application layer to handle Request/Response informations
- Receives and reponds DTOs (Data Transfer Objects) to clients
- Using OWIN as interface between API and IIS
- Using Swagger library for documentation of the API (UI accessible through http://localhost:58123/swagger/)
- Using compression for better performance
- Using AutoMapper for handling mappings between DTOs and Domain classes.
- Call mediator with Commands/Queries.
- Handle errors of Command/Queries.
- Contain Models.
- Contains Commands, Queries and their Handlers (Using MediatR library).
- Contain Domain Validations (Using FluentValidator library).
- Call Data layer to retrieve/persist informations.
- Using Entity Framework as ORM for data access.
- Using Code First approach.
- Automatically creates Database and seed data in the first execution.
- Using AsNoTracking for better performance on retrieving data.
- Currently contains only Log manager (Using log4net library).
- Using Simple Injector library.
- Using Microsoft.Owin.Testing library.
- Domain Driven Design: Layers and Domain Model patterns applied.
- CQRS (Command Query Responsability Segregation) through MediatR library.
- Repository Pattern: Data layer.
- Unit Of Work.
- Decorator Pattern: Injecting Domain Validators via Decorator on Command Handlers.
- Dependendy Injection Pattern.
- AutoMapper: Handle mappings.
- EntityFramework: Microsoft ORM.
- FluentValidation: Handle validation through a fluent interface and lambda expressions.
- MediatR: In-process messaging.
- OWIN: Decouple web server and web application.
- SimpleInjector: Depedency Injection.
- log4net: Logging.
- Swashbuckle: Swagger implementation for .NET, documentation for API.