📄️ Guía de rendimiento
Un buen rendimiento mantiene el sistema ágil y reduce el costo de infraestructura. Estas prácticas ayudan a sacarle el máximo a Crono.
📄️ Buenas prácticas de la capa de servicio
La capa de servicios encapsula las operaciones de negocio y orquesta el acceso a datos para los controladores, las tareas programadas y otros componentes. Los servicios se ejecutan en el mismo ámbito de inyección de dependencias que los controladores y las tareas, trabajan con entidades de dominio y dejan las preocupaciones de presentación a las capas superiores.
📄️ Buenas prácticas de DI
Crono usa Autofac para la inyección de dependencias, pero los módulos normalmente registran sus servicios en una clase de inicio derivada de IniciadorBase. Dentro de ConfigurarServicios puedes acceder al IServiceCollection de ASP.NET Core y al IAplicacionContexto; para registros que solo permite Autofac (fuentes de registro, decoradores, metadatos, Lazy, etc.) usa ConfigurarContenedor con el ContainerBuilder (ver Inyección de dependencias e Iniciador).
📄️ Conversión de tipos
Crono incluye un framework de conversión de tipos flexible que permite convertir en tiempo de ejecución cadenas, números, colecciones e incluso objetos complejos. El sistema se construye alrededor de implementaciones de ITipoConvertidor (Crono.ComponenteModelo), descubiertas a través de una fábrica.
📄️ Precompilación de vistas
Por defecto, las vistas Razor se compilan en tiempo de ejecución. La primera solicitud tras un despliegue dispara ese paso de compilación, que puede tardar y —peor aún— fallar solo en producción. Precompilar las vistas en tiempo de compilación evita ese retraso y detecta los errores de sintaxis temprano.
📄️ Bloqueo distribuido
Crono ofrece una abstracción de bloqueo distribuido mediante las interfaces IBloqueoDistribuidoProveedor e IBloqueoDistribuido, que permiten evitar la ejecución concurrente de secciones críticas entre varios nodos (o procesos).
📄️ Estado asíncrono
El estado asíncrono (IEstadoAsync) es un almacén ligero y compartido para procesos largos. Guarda información de progreso y cancelación en la caché, de modo que varios servidores puedan intercambiarla: cualquier solicitud, incluso en otro nodo de la granja, puede leer la entrada para mostrar una barra de progreso o cancelar el trabajo.
📄️ Atributos genéricos
Visión general
📄️ Mapeo de sincronización
El mapeo de sincronización (sync mapping) es una función del framework base pensada para sistemas de comercio que sincronizan sus entidades con sistemas externos (ERP, PIM, etc.): mantiene un vínculo entre el identificador interno de una entidad y la clave del registro externo, junto con el nombre del contexto remoto y una marca de tiempo/checksum para hacer las sincronizaciones idempotentes.
🗃️ Acceso a datos (Profundo)
5 items
📄️ Resolvedor de enlaces (LinkResolver)
Crono guarda los destinos de navegación como expresiones de enlace compactas (por ejemplo entidad~/ruta o https://ejemplo.com). IEnlaceResolucion traduce esas expresiones a URLs y etiquetas concretas, respetando la seguridad por organización y roles, y reutilizando resultados de una caché en memoria.
📄️ Códigos QR
Crono incluye un subsistema de códigos de barra para generar códigos QR y otros formatos. El ICodigoBarraCodificador convierte una carga útil (CodigoBarraCargaUtil) en un ICodigoBarra capaz de renderizarse como SVG o como imagen.
📄️ Librerías nativas
Algunas funciones de Crono dependen de binarios específicos del sistema operativo, como los motores de PDF e imagen (wkhtmltopdf y wkhtmltoimage). Para mantener el repositorio ligero y agnóstico de plataforma, estas dependencias nativas se descargan bajo demanda y se almacenan en una carpeta específica del runtime.
📄️ Consentimiento de cookies
Las cookies cumplen funciones importantes (sesión, personalización, analítica). Su uso requiere un manejo correcto del consentimiento y del cumplimiento de privacidad. Crono ofrece dos piezas principales:
📄️ Solución de problemas
Esta sección reúne soluciones a problemas frecuentes de operación.