Urgent.News

What's breaking now, across thousands of outlets.

Tech

Anatomía de un Slice en Producción: Handlers sin interfaces, EF Core sin repositorios y eventos desacoplados (Parte 2)

En la Parte 1 de esta serie , exploramos por qué Clean Architecture tradicional suele agotar a los equipos con su laberinto de proyectos y capas. Vimos la filosofía de Vertical Slice Architecture (VSA) : la complejidad se paga por slice, no por proyecto , y cómo organizar Minimal APIs limpias y auto-descubiertas. Pero ahora viene lo bueno: abrir el capó del motor y escribir código de producción .…

En la segunda parte de esta serie, analizaremos la estructura de un caso de uso en la arquitectura VSA (Vertical Slice Architecture) y veremos cómo manejar la persistencia con Entity Framework Core sin caer en la trampa del patrón de repositorio genérico. También discutiremos cómo validar solicitudes y permitir que dos slices se comuniquen de forma desacoplada.

Una de las principales ventajas de VSA es que todo lo relacionado con un caso de uso específico vive en un único archivo, facilitando la organización del código y evitando archivos inmanejables. En lugar de distribuir la lógica de un caso de uso en diferentes capas o archivos, VSA aplica el principio de cohesión espacial, manteniendo todo relacionado con ese caso de uso en un mismo lugar.

El código de ejemplo muestra cómo se estructuran los archivos y las clases en un caso de uso "CreateProduct". En este archivo, se definen los contratos y la validación utilizando FluentValidation, y luego se define la clase handler con la lógica de ejecución del caso de uso. Esta estructura elimina la necesidad de interfaces ceremoniales y permite una mayor simplicidad y claridad en el código.

Uno de los puntos clave es que no se requieren interfaces para los handlers en VSA. A diferencia de la arquitectura tradicional de Clean Architecture, donde se suele usar una interfaz para cada caso de uso, VSA aboga por tener un solo handler por caso de uso, lo que facilita la comprensión y el mantenimiento del código. Además, la testabilidad no depende de interfaces, sino de cómo se recibe la clase handler por su constructor primario, lo que permite probarlo fácilmente a través de ejemplos concretos.

Otro aspecto importante es la persistencia con Entity Framework Core. En lugar de seguir el patrón de repositorio genérico, VSA utiliza un enfoque directo y sin acoplamiento. El handler recibe el contexto de base de datos y el despachador de eventos por constructor, lo que facilita la integración con la base de datos y la capacidad de publicar eventos in-process para que otros componentes se comuniquen entre sí sin necesidad de acoplarlos explícitamente.

En resumen, VSA ofrece una forma más simplificada y desacoplada de estructurar los casos de uso en aplicaciones .NET, eliminando la necesidad de interfaces y patrones genéricos que pueden complicar el código y dificultar su mantenimiento. Al mantener todo relacionado con un caso de uso en un solo archivo y utilizar dependencias primarias, VSA proporciona una arquitectura más clara, fácil de entender y más fácil de mantener a largo plazo.

Written by urgent.news from Dev.to's reporting — not their text. Machine-written — may contain errors; check the original before relying on it.

This story

This is one outlet's version. Read the fullest account.

Read the original at dev.to →

More in Tech

Transição de Laravel para .NET

Sempre fui um grande fã de tecnologias microsoft. Tomei uma decisão a respeito do meu futuro. Atualmente, trabalho com Laravel e com o ecossistema PHP, mas resolvi voltar a estudar a tecnologia que eu…

More from Sunday 27 September →