Slide 1

Slide 1 text

Criteo FullStack Tech Talks March, 2019

Slide 2

Slide 2 text

Premier Field Engineer @spontoreau In ❤️ with Co-organizer

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

Mediator obj obj obj obj obj obj obj obj

Slide 6

Slide 6 text

No content

Slide 7

Slide 7 text

Query Just a read operation Command Data validation Business logic Persistance

Slide 8

Slide 8 text

GetOrderById Query UpdateProduct Command GetProducts Query DeleteOrder Command … … Dispatcher QueryHandler Read DB Dispatcher QueryHandler QueryHandler QueryHandler QueryHandler QueryHandler CommandHandler CommandHandler CommandHandler CommandHandler CommandHandler CommandHandler Write DB

Slide 9

Slide 9 text

public class GetUserById : IRequest { public Guid Id { get; } public GetUserById(Guid id) { Id = id; } } public class DeleteUser : IRequest { public Guid Id { get; } public DeleteUser(Guid id) { Id = id; } }

Slide 10

Slide 10 text

public class GetUserByIdHandler : IRequestHandler { public Task Handle(GetUserById request, CancellationToken cancellationToken) { // … } }

Slide 11

Slide 11 text

IServiceCollection services = new ServiceCollection(); services.AddMediatR(typeof(Startup).GetTypeInfo().Assembly); IServiceProvider provider = services.BuildServiceProvider(); IMediator mediator = provider.GetService(); User user = mediator.send(new GetUserById( "052ee87a-8ff5-4aa6-8f0d-3cd417e34e74" ));

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

https://github.com/jbogard/MediatR https://ardalis.com/using-mediatr-in-aspnet-core-apps https://en.wikipedia.org/wiki/Mediator_pattern https://www.martinfowler.com/bliki/CQRS.html https://docs.microsoft.com/en-us/azure/architecture/patterns/cqrs https://github.com/spontoreau/MediatorPatternExample https://github.com/spontoreau/DemoMediatR

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content