Commit 2eed1be8 by César Galvis

docs: added back end structure docs

parent c3a74d6a
......@@ -8,6 +8,7 @@
- [Marco de trabajo](sections/team-framework.md) 🤝 - ¡Conoce cómo organizamos nuestro trabajo en equipo! 🗓️ Este documento te explicará cómo colaboramos y nos coordinamos para lograr nuestros objetivos.
- [Tareas (tickets)](sections/tickets.md) 🎫 - ¡Aprende cómo gestionamos nuestras tareas! 📝 Este documento te mostrará cómo utilizamos los tickets para organizar y priorizar nuestro trabajo.
- [Versionamiento de código fuente](sections/code-versioning.md) 💾 - ¡Domina el control de versiones! 💪 Este documento te enseñará cómo versionamos nuestro código fuente para mantener un historial de cambios y colaborar de manera segura.
- [Proyectos back end](sections/backend-structure.md) ⚙️ - ¡Definamos como será la estructura de proyectos back end!
## Secciones pendientes 🚧
......
# Estructura de proyectos back end
Dependiendo del framework, se recomienda utilizar patrones de arquitectura con algunas condiciones.
Antes de analizar los patrones de arquitectura, se recomienda entender el funcionamiento de los siguientes principios y patrones de diseño:
- [Principios SOLID](https://www.digitalocean.com/community/conceptual-articles/s-o-l-i-d-the-first-five-principles-of-object-oriented-design)
- [Patrón DTO (Data Transfer Object)](https://www.baeldung.com/java-dto-pattern)
- [Patrón Repositorio (Repository)](https://medium.com/@pererikbergman/repository-design-pattern-e28c0f3e4a30)
- [Patrón de Inyección de Dependencias (Dependency Injection - DI)](https://www.geeksforgeeks.org/system-design/dependency-injectiondi-design-pattern/)
### Proyectos con ASP.NET
Se recomienda que las soluciones tengan las siguientes capas:
1. **Core:** Capa de dominio y recursos básicos de la solución
2. **Application:** Capa en donde estarán los servicios y la mayor parte de la lógica de negocio del sistema
3. **Persistence:** Capa en donde se manejarán conexiones con bases de datos relacionales y no relacionales
4. **Integrations** Capa en donde se manejarán integraciones con sistemas externos
5. **WebApi:** Capa de presentación
Se recomienda que la estructura de carpetas de la solución sea así:
```sh
.
├── src
│   ├── Application
│   ├── Core
│   ├── Integrations
│   ├── Persistence
│   └── WebApi
```
Se recomienda que cada capa tenga la siguiente estructura de carpetas:
#### Proyecto `Core`
```sh
Core
├── Constants # Clases con datos constantes
├── DTOs # Clases de tipo DTO
├── Entities # Clases que representan entidades del sistema
├── Enums # Clases con enumeraciones
├── Helpers # Clases generales que no son ni DTOs ni entidades
└── Interfaces # Interfaces generales en el sistema
```
#### Proyecto `Application`
```sh
Application
├── Interfaces # Interfaces generales del sistema
├── Mappings # Clases para mapeo de entidades y DTOs
├── Services # Servicios del sistema
├── Specifications # Especificaciones de consultas en bases de datos
├── Utils # Funciones generales del sistema
└── Validators # Reglas de validaciones de clases
```
#### Proyecto `Persistence`
```sh
Persistence
├── Config # Archivos de configuración de la capa
├── GeneralContext.cs # Contexto de base de datos de la capa (SQL)
├── Migrations # Migraciones de la base de datos
└── Repositories # Repositorios de las entidades
```
#### Proyecto `Integrations`
> Trabajo en desarrollo
#### Proyecto `WebApi`
```sh
WebApi
├── Config # Archivos de configuración (registro de dependencias, configuración de complementos, etc ...)
├── Controllers # Controladores del proyecto
│   ├── Rest # Controladores REST
│   └── Tools # Controladores personalizados (plantillas de correo electrónico, generadores de documentos, etc ...)
├── Helpers # Clases generales del proyecto
├── Interfaces # Interfaces generales del sistema
├── Program.cs # Clase principal del proyecto
├── Properties # Carpeta de propiedades del proyecto (ASP.NET)
├── Utils # Funciones generales del proyecto
```
* volver al [inicio](/README.md)
* volver a las [normas de desarrollo](/docs/development-rules/README.md)
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment