Arquitectura de Fox Framework
Este documento explica la arquitectura general de Fox Framework, sus componentes principales y cΓ³mo se relacionan entre sΓ.
VisiΓ³n General
Fox Framework estΓ‘ construido siguiendo principios de diseΓ±o modernos y patrones establecidos para asegurar mantenibilidad, extensibilidad y rendimiento. La arquitectura general se compone de varias capas:
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β AplicaciΓ³n β
β β
β βββββββββββ ββββββββββββ ββββββββββββββββββββββ β
β β β β β β β β
β β Rutas β β Controladores β Servicios β β
β β β β β β β β
β βββββββββββ ββββββββββββ ββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Fox Framework Core β
β β
β βββββββββββ ββββββββββββ ββββββββββββββββββββββ β
β β β β β β β β
β β Factory β β Router β β Middleware β β
β β β β β β β β
β βββββββββββ ββββββββββββ ββββββββββββββββββββββ β
β β
β βββββββββββ ββββββββββββ ββββββββββββββββββββββ β
β β β β β β β β
β β Cache β β Eventos β β Seguridad β β
β β β β β β β β
β βββββββββββ ββββββββββββ ββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β CaracterΓsticas Avanzadas β
β β
β βββββββββββ ββββββββββββ ββββββββββββββββββββββ β
β β β β β β β β
β β DB β β Microservices β Docker β β
β β β β β β β β
β βββββββββββ ββββββββββββ ββββββββββββββββββββββ β
β β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββComponentes Principales
1. FoxFactory
El nΓΊcleo del framework y punto de entrada principal. Implementa el patrΓ³n Factory para crear instancias de los componentes del framework.
Responsabilidades:
- Crear instancias del servidor
- Registrar servicios y plugins
- Gestionar configuraciΓ³n
- Inicializar componentes del framework
2. Router
Gestiona el enrutamiento de peticiones HTTP, mapeo de rutas a controladores y generaciΓ³n de URLs.
CaracterΓsticas:
- Soporte para rutas parametrizadas
- Middlewares especΓficos por ruta
- AgrupaciΓ³n de rutas
- ValidaciΓ³n de parΓ‘metros
3. Middleware
Sistema de pipeline para procesar peticiones HTTP. Permite interceptar y modificar peticiones y respuestas.
Tipos de middleware:
- Globales (aplican a todas las rutas)
- EspecΓficos de ruta
- Grupales (aplican a un grupo de rutas)
- Error handlers
4. Sistema de Eventos
Implementa una arquitectura orientada a eventos que permite comunicaciΓ³n desacoplada entre componentes.
CaracterΓsticas:
- Event Sourcing
- Publish-Subscribe
- Event Store
- Event Handlers
5. Cache System
Sistema de cachΓ© para optimizar rendimiento y reducir carga en recursos externos.
Providers:
- Memory
- Redis
- File
- Distributed
6. Security
Componentes para gestionar autenticaciΓ³n, autorizaciΓ³n y otras caracterΓsticas de seguridad.
CaracterΓsticas:
- JWT Authentication
- Role-Based Access Control
- Rate Limiting
- CSRF Protection
Patrones de DiseΓ±o Utilizados
Factory Pattern
Fox Framework utiliza extensivamente el patrΓ³n Factory para crear instancias de componentes:
// Ejemplo de Factory Pattern
const server = FoxFactory.createInstance(config);
const cache = FoxFactory.createCacheProvider(cacheConfig);
const router = Router.create();Dependency Injection
Para gestionar dependencias entre componentes y facilitar el testing:
// Registrar un servicio
FoxFactory.registerService('userService', new UserService());
// Obtener el servicio
const userService = FoxFactory.getService('userService');Repository Pattern
Para la capa de acceso a datos:
// DefiniciΓ³n del repositorio
interface UserRepository {
findById(id: number): Promise<User | null>;
findAll(): Promise<User[]>;
save(user: User): Promise<User>;
}
// ImplementaciΓ³n concreta
class PostgresUserRepository implements UserRepository {
// implementaciΓ³n...
}Strategy Pattern
Para componentes intercambiables:
// Diferentes estrategias de cache
const memoryCacheStrategy = new MemoryCacheStrategy();
const redisCacheStrategy = new RedisCacheStrategy();
// Usar una estrategia
const cache = new CacheManager(memoryCacheStrategy);Flujo de una PeticiΓ³n
- La peticiΓ³n HTTP llega al servidor
- El sistema de routing identifica la ruta correspondiente
- Se ejecutan los middlewares globales
- Se ejecutan los middlewares especΓficos de la ruta
- Se ejecuta el controlador o handler de la ruta
- Se genera y envΓa la respuesta
Extensibilidad
Fox Framework estΓ‘ diseΓ±ado para ser extensible mediante:
- Plugins: AΓ±aden funcionalidades completas
- Middlewares: Modifican el flujo de peticiones
- Proveedores personalizados: Para servicios como cache, logging, etc.
- Eventos: Para reaccionar a acciones del framework
Directrices de Arquitectura
Al desarrollar con Fox Framework, recomendamos seguir estos principios:
- SeparaciΓ³n de responsabilidades: MantΓ©n modelos, controladores y servicios separados
- InversiΓ³n de dependencias: Usa interfaces y no dependas de implementaciones concretas
- ComposiciΓ³n sobre herencia: Favorece la composiciΓ³n para reutilizar cΓ³digo
- CΓ³digo testeable: DiseΓ±a componentes fΓ‘ciles de testear de forma aislada
- SOLID: Sigue los principios SOLID para un cΓ³digo mantenible
Arquitectura Recomendada de Proyecto
proyecto/
βββ src/
β βββ controllers/ # Controladores (lΓ³gica de manejo de peticiones)
β βββ models/ # Modelos de datos y entidades
β βββ services/ # Servicios (lΓ³gica de negocio)
β βββ repositories/ # Acceso a datos
β βββ routes/ # DefiniciΓ³n de rutas
β βββ middleware/ # Middlewares personalizados
β βββ utils/ # Utilidades y helpers
β βββ events/ # Eventos y handlers
β βββ config/ # Configuraciones
β βββ types/ # Definiciones de tipos TypeScript
β βββ server.ts # Punto de entrada de la aplicaciΓ³n
βββ tests/ # Tests unitarios e integraciΓ³n
βββ resources/ # Recursos estΓ‘ticosEsta estructura permite una clara separaciΓ³n de responsabilidades y facilita encontrar y mantener el cΓ³digo.