Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

558
Vistas
Comportamientos de canalización múltiple de MediatR

Hola, ya uso este patrón de Mediator CQRS con Pipeline Behavior por un tiempo, pero ahora me enfrento a un problema en el que la implementación genérica de TResponse y TRequest no es suficiente. Entonces, estoy tratando de entender si tener dos canalizaciones separadas para dos solicitudes muy específicas es una mala práctica o una mala idea.

Entonces, la idea principal es tener un PipelineBehavior<RequestOne, ResponseOne> para hacer una lógica específica para requestOne y otro PipelineBehavior<RequestTwo, ResponseTwo> para hacer otra lógica que no se aplica a la solicitud.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

No creo que sea mala idea en absoluto, puedes crear una interfaz para marcar todas las solicitudes que quieras implementar PipelineX, y otra para PipelineY.

Ex:
Tiene las clases RequestOne y RequestTwo que deben pasar por PipelineX, por lo que crea una interfaz como IPipelineOne y marca las clases con ella, luego usa la reflexión para procesar dentro del middleware pripeline. PipelineY aún se ejecutará a través de estas dos clases y el resto del programa también sin problemas.

over 4 years ago · Santiago Trujillo Denunciar

0

No es exactamente una respuesta a su pregunta, pero si se confunde con los registros de comportamiento a medida que su número crece, puede considerar especificarlos usando la biblioteca que creé para ese propósitohttps://github.com/ITIXO/MediatR.Extensions.AttributedBehaviors

over 4 years ago · Santiago Trujillo Denunciar

0

Puede construir varias canalizaciones con diferentes comportamientos.

Registrar comportamientos de tubería:

 // pipeline 1's behaviors services.AddScoped(typeof(IPipelineBehavior<,>), typeof(FooBehavior<,>)); services.AddScoped(typeof(IPipelineBehavior<,>), typeof(BarBehavior<,>)); services.AddScoped(typeof(IPipelineBehavior<,>), typeof(BazBehavior<,>)); // pipeline 2's behaviors services.AddScoped(typeof(IPipelineBehavior<,>), typeof(CatBehavior<,>)); services.AddScoped(typeof(IPipelineBehavior<,>), typeof(DogBehavior<,>)); services.AddScoped(typeof(IPipelineBehavior<,>), typeof(PigBehavior<,>));

Definir canalizaciones:

 // pipeline 1 public interface IPipeline1 { } public class FooBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse> where TRequest : IPipeline1 { } public class BarBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse> where TRequest : IPipeline1 { } public class BazBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse> where TRequest : IPipeline1 { } // pipeline 2 public interface IPipeline2 { } public class CatBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse> where TRequest : IPipeline2 { } public class DogBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse> where TRequest : IPipeline2 { } public class PigBehavior<TRequest, TResponse> : IPipelineBehavior<TRequest, TResponse> where TRequest : IPipeline2 { }

Definir solicitudes:

 // requests to be processed by pipeline 1 public class ARequest : IRequest, IPipeline1 { } public class BRequest : IRequest, IPipeline1 { } public class CRequest : IRequest, IPipeline1 { } // requests to be processed by pipeline 2 public class XRequest : IRequest, IPipeline2 { } public class YRequest : IRequest, IPipeline2 { } public class ZRequest : IRequest, IPipeline2 { }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda