Buscar
Explorar el blog
¿Qué quieres encontrar?
Arquitectura, Agentic AI, Azure, .NET, microservicios y más.

Artículos

Cómo manejar reprocesos con alta concurrencia en DDD y Service Bus

Cómo manejar reprocesos con alta concurrencia en DDD y Service Bus

En arquitecturas distribuidas con Service Bus (como Azure Service Bus, RabbitMQ o NServiceBus), es común recibir mensajes que provocan cambios en nuestro modelo de dominio. Pero… ¿qué ocurre cuando ese modelo ya fue modificado por otro proceso?

Este artículo te guía sobre cómo actuar ante errores de concurrencia al reprocesar mensajes, especialmente cuando sigues prácticas de Domain-Driven Design (DDD) y usas concurrencia optimista con una base de datos relacional.

leer más...
NewSQL con .NET: escalabilidad moderna sin renunciar a la consistencia

NewSQL con .NET: escalabilidad moderna sin renunciar a la consistencia

¿Es posible escalar horizontalmente sin renunciar a las garantías ACID?
Con la llegada de bases de datos NewSQL como CockroachDB, el ecosistema .NET puede por fin combinar lo mejor del mundo relacional con la resiliencia y elasticidad de los sistemas distribuidos.

En este artículo te cuento por qué deberías tener las bases de datos NewSQL en el radar, qué ventajas traen respecto a SQL y NoSQL, y cómo puedes integrar CockroachDB en tu aplicación .NET para empezar a construir sistemas realmente cloud-native.

leer más...
Uso de AddDbContextPool y Buenas Prácticas con DbContext en Azure SQL y On-Premises

Uso de AddDbContextPool y Buenas Prácticas con DbContext en Azure SQL y On-Premises

En aplicaciones EF Core, cada instancia de DbContext establece internamente conexiones y servicios que conllevan cierta sobrecarga. Aunque crear y eliminar un DbContext es relativamente ligero (no implica operar con la base de datos por sí solo), en escenarios de alta concurrencia la repetición continua de esa inicialización puede notarse en rendimiento. Además, las bases de datos (especialmente en la nube) imponen límites de sesiones/ conexiones. Optimizar el ciclo de vida del DbContext y la gestión de conexiones es clave para evitar errores de límite (por ejemplo “session limit reached”) y asegurar que la aplicación escala bien tanto en Azure SQL como en entornos on-premises.

leer más...
Serialización polimórfica en C#: ¿merece la pena usar las nuevas capacidades de .NET?

Serialización polimórfica en C#: ¿merece la pena usar las nuevas capacidades de .NET?

En el desarrollo con .NET, es habitual que confiemos en patrones que dominamos: clases base, convertidores personalizados y control total sobre el flujo de serialización. Durante años, si querías serializar jerarquías de clases en JSON preservando el tipo real, la solución era clara: implementar un JsonConverter y aplicar el patrón estrategia.

Pero con la llegada de .NET 7 y su consolidación en .NET 8, System.Text.Json ha dado un paso adelante con soporte nativo para serialización polimórfica gracias a PolymorphismOptions y los atributos [JsonPolymorphic] y [JsonDerivedType]. Veamos como.

leer más...
Procesos de Negocio e IA Generativa

Procesos de Negocio e IA Generativa

¿Y si tus diagramas BPMN pudieran convertirse en código funcional con solo unos clics?
En este artículo exploro cómo la IA Generativa está cambiando la forma en que diseñamos e implementamos procesos de negocio: desde el modelo hasta el prototipo, sin fricción y con total trazabilidad.

leer más...
Dapr y .NET Aspire

Dapr y .NET Aspire

Con la llegada de .NET Aspire, tenemos ahora una forma más sencilla de construir arquitecturas distribuidas modernas. En este artículo, veremos cómo implementar actualizaciones en tiempo real entre microservicios utilizando Dapr pub/sub, sin necesidad de configuraciones complejas ni archivos YAML. Como ejemplo, usaremos un escenario de sensores industriales, donde un servicio publica datos de temperatura, y otro servicio reacciona ante esas actualizaciones para activar alertas.

leer más...
DRASI: Detecta y reacciona ante cambios en tu base de datos

DRASI: Detecta y reacciona ante cambios en tu base de datos

Drasi es una plataforma de procesamiento de datos diseñada para simplificar la detección de cambios en sistemas de datos y desencadenar respuestas automáticas a esos cambios. Permite el seguimiento de registros y flujos de cambio a través de varios sistemas, evaluándolos para determinar su relevancia y reaccionando en tiempo real. Drasi utiliza consultas continuas que monitorean los datos en tiempo real. Cuando ocurre un cambio que coincide con criterios predefinidos, Drasi activa acciones contextuales, haciendo el proceso eficiente y escalable.
Si estás pensando que Drasi es otro CDC (Change Data Reaction), déjame adelantarte que no es así.
Descubre todo su pontencial en este nuevo documento.

leer más...
El Dilema del Idioma en DDD

El Dilema del Idioma en DDD

Cuando desarrollamos una aplicación, surge una pregunta clave: ¿en qué idioma deben estar sus términos, documentación y código? Aunque el inglés es el estándar global en tecnología, en contextos donde el negocio no opera en inglés, la decisión no es tan simple.

En este artículo exploraremos cuándo es conveniente mantener el idioma original y cuándo es mejor adoptar el inglés, basándonos en enfoques prácticos y en el Diseño Orientado a Dominios (Domain-Driven Design, DDD).

leer más...