Overview
The DonaSF API is built using a classic three-tier architecture pattern that separates concerns across presentation, business logic, and data access layers. This design promotes maintainability, testability, and scalability.Architecture Layers
API Layer
ServiciosConsolaCentralizadaRESTful API controllers handling HTTP requests and responses. Built with ASP.NET Core 10.0.
Business Logic
BussinesRulsBusiness rules, validation, and orchestration logic. Mediates between API and data layers.
Data Access
DataManagmentDatabase operations, stored procedures, and SQL Server communication.
Models
ObjectsShared data models (DTOs) and JSON objects used across all layers.
Layer Responsibilities
1. ServiciosConsolaCentralizada (API Layer)
The presentation layer exposes RESTful endpoints for client applications. Responsibilities:- HTTP request/response handling
- Input validation and parameter binding
- Authentication and authorization (JWT)
- Status code management
- Error formatting for clients
- Controllers:
AdminController,MisioneroController,DonacionController,TalonesController, etc. - Middleware: JWT Bearer authentication
- Static file serving
- Swagger/OpenAPI documentation
2. BussinesRuls (Business Logic Layer)
The business logic layer encapsulates domain rules and orchestrates data operations. Responsibilities:- Business rule enforcement
- Transaction coordination
- Data validation
- Exception handling and error propagation
- Cross-cutting concerns (logging, caching)
BDonacion- Donation business logicBMisionero- Missionary managementBAdministrador- Administrator operationsBTalon- Receipt (talon) processingBClaveDonativo- Donation key management
3. DataManagment (Data Access Layer)
The data access layer handles all database interactions. Responsibilities:- SQL Server connection management
- Stored procedure execution
- Query construction and execution
- Data mapping (DataTable to objects)
- Transaction management
- Connection pooling
ConsultasSqlServer- SQL Server query executionDMDonacion- Donation data operationsDMMisionero- Missionary data access- Domain-specific data managers in
DMDonaciones/subdirectory
4. Objects (Shared Models)
The models layer contains data transfer objects (DTOs) shared across all layers. Responsibilities:- Data structure definitions
- JSON serialization contracts
- Configuration objects
- Communication contracts between layers
JSONDonacionL- Donation creation DTOJSONMisioneroL- Missionary creation DTOJSONAdministradorL- Administrator DTOInfoCompartidaCapas- Inter-layer communication wrapperTokenJwt- JWT token structure
Technology Stack
.NET 10
Latest .NET framework with minimal APIs and improved performance
SQL Server
Enterprise database (
WSDonaciones) with stored proceduresJWT Authentication
Stateless authentication using JSON Web Tokens with bearer scheme
Twilio
SMS and communication services integration
Core NuGet Packages
Request Flow
Typical request flow through the architecture:Configuration
JWT Configuration
Authentication is configured inProgram.cs:
Database Connection
Connection strings are managed through:appsettings.json- Configuration filesConecciones.cs- Connection string providerConsultasSqlServer.cs- Connection management withTrustServerCertificate=true
Design Patterns
Repository Pattern
Data access is abstracted through interfaces likeIDMDonacion, allowing for testability and flexibility.
Dependency Injection
Services are registered inProgram.cs and injected into controllers:
Factory Pattern
Business logic classes instantiate data managers:Best Practices
Separation of Concerns
Separation of Concerns
Each layer has a single, well-defined responsibility. Controllers don’t access the database directly; business logic doesn’t handle HTTP concerns.
Error Handling
Error Handling
Errors are caught at each layer and propagated upward through the
InfoCompartidaCapas.error property, allowing for appropriate handling at the API level.Transaction Management
Transaction Management
Database transactions are managed in the data layer, with optional transaction support through
usaTransaccionSiAplica parameters.Security
Security
JWT authentication is enforced at the API layer, with secure connection strings and parameterized queries to prevent SQL injection.
Related Documentation
- Data Model - Database schema and entity relationships
- Error Handling - Error response patterns and status codes
- Authentication - JWT token generation and validation