Este repositorio demuestra la implementación de una plataforma de blogs simple utilizando ASP.NET Core con un enfoque en CQRS (segregación de responsabilidad de consultas de comandos) y patrones de medias. La aplicación incluye operaciones CRUD básicas para publicaciones y categorías, que se adhieren a un enfoque de arquitectura limpia.
El patrón CQRS se emplea para separar las operaciones de lectura y escritura, mejorando la escalabilidad y la mantenibilidad de la aplicación. Las consultas se utilizan para manejar operaciones de lectura, mientras que los comandos manejan las operaciones de escritura.
MediaTR se utiliza para desacoplar las capas de aplicación mediante la implementación del patrón de mediador. Esto asegura que las solicitudes y notificaciones se procesen a través de un mediador central, promoviendo un acoplamiento y adherencia sueltos al principio de responsabilidad única.
Entity Framework Core se utiliza como el ORM (mapeador-relacional de objetos) para las operaciones de la base de datos. El contexto está configurado para usar SQL Server con opciones para incluir entidades relacionadas cuando sea necesario.
Automapper está integrado para manejar el mapeo de objetos de objeto, simplificando la transformación entre modelos de dominio y modelos de vista.
Contiene las entidades e interfaces centrales, que incluyen:
Post , CategoryIAsyncRepository , IPostRepositoryContiene la lógica de negocios, que incluye:
CreatePostCommand : define los datos y la lógica necesarios para crear una nueva publicación.GetPostsListQuery : define los datos y la lógica necesarios para recuperar una lista de publicaciones.Contiene la implementación del patrón de repositorio utilizando el núcleo del marco de la entidad, que incluye:
PostDb .IAsyncRepository y IPostRepository .El punto de entrada de la aplicación, que contiene controladores y la configuración del programa principal. Configura los servicios, el middleware y el enrutamiento.
FluentValidation se utiliza para garantizar la integridad de los datos y la lógica de validación para los comandos.