$mermaidjs
Clean Architecture Demo
Loading...
Searching...
No Matches
TaskManagement.Application.Interfaces.IEmailService Interface Reference

IEmailService es la abstracción para envío de notificaciones por correo electrónico. More...

Collaboration diagram for TaskManagement.Application.Interfaces.IEmailService:

Public Member Functions

Task SendTaskCompletedNotificationAsync (Guid taskId, CancellationToken cancellationToken=default)
 

Detailed Description

IEmailService es la abstracción para envío de notificaciones por correo electrónico.

Rol en Clean Architecture:

  • Parte de la capa de aplicación
  • Abstracción de infraestructura: Interfaz en Núcleo de Aplicación, implementación en Infraestructura
  • Inversión de dependencia: El código de aplicación no sabe detalles del proveedor de correo
  • Habilita acoplamiento suelto a servicios de correo externos

Responsabilidades:

  • Enviar correos para eventos del dominio -tarea creada, completada, asignada, etc.-
  • Soportar futuras notificaciones de eventos del dominio sin cambios de capa del dominio
  • Manejar entrega de correo de forma asíncróna

Beneficios de Abstracción de Implementación:

  • Puede intercambiar proveedores de correo -SMTP, SendGrid, AWS SES, etc.-
  • Puede implementar patrones de reintentos y resiliencia
  • Puede agregar plantillas y formateo de correo
  • Puede registrar resultados de entrega de correo
  • Las pruebas unitarias pueden simular sin envío real de correo

Preocupación Transversal:

  • Las notificaciones por correo son efectos secundarios de eventos del dominio
  • Se manejan a través de manejadores de eventos que dependen de IEmailService
  • Desacopla la lógica de negocio de la infraestructura de envío de correos

Definition at line 38 of file IEmailService.cs.

Member Function Documentation

◆ SendTaskCompletedNotificationAsync()

Task TaskManagement.Application.Interfaces.IEmailService.SendTaskCompletedNotificationAsync ( Guid  taskId,
CancellationToken  cancellationToken = default 
)

The documentation for this interface was generated from the following file: