pegando carona no command bus
TRANSCRIPT
Pegando carona no Command Bus
Bruno Neves
Pegando carona no Command Bus
Alto acoplamento
Pegando carona no Command Bus
Baixa coeso
Pegando carona no Command Bus
Reusabilidade? (risos)
Pegando carona no Command Bus
Service Layer!
Pegando carona no Command Bus
Fat model, skinny controller
Pegando carona no Command Bus
Fachada para as operaes que o sistema realiza
Pegando carona no Command Bus
Diminui o acoplamento com o framework
Pegando carona no Command Bus
Separa o negcio das camadas de infraestrutura
Pegando carona no Command Bus
Pode ser executado por um comando agendado na crontab, por um listener, por uma requisio http e etc.
Pegando carona no Command Bus
Excesso de atividades que devem ser executadas antes e depois do objetivo principal
Pegando carona no Command Bus
Repetio das mesmas rotinas na maioria dos servios (log, transao, commit, rollback)
Pegando carona no Command Bus
Doloroso para testar
Pegando carona no Command Bus
Single Responsability
Pegando carona no Command Bus
Commands!
Pegando carona no Command Bus
Mensagem
Pegando carona no Command Bus
Representa a inteno do usurio
Pegando carona no Command Bus
Nome no imperativoPurchase Album
Pegando carona no Command Bus
Data Transfer Object
Pegando carona no Command Bus
No possui comportamento
Pegando carona no Command Bus
Beleza! Mas quem vai executar?
Pegando carona no Command Bus
Command Handler!
Pegando carona no Command Bus
Executa o command e apenas isso
Pegando carona no Command Bus
1:1
Um Command possui apenas um Handler
Um Handler possui apenas um Command
Pegando carona no Command Bus
Vrios problemas permanecem...
Pegando carona no Command Bus
Command Bus!
Pegando carona no Command Bus
Possibilita a execuo de rotinas ANTES e APS a execuo do Command propriamente dito
Pegando carona no Command Bus
Middlewares!
Pegando carona no Command Bus
Validator Middleware?
Pegando carona no Command Bus
Transaction Middleware?
Pegando carona no Command Bus
Logging Middleware?
Tactician
http://tactician.thephpleague.com/
> composer require league/tactician
No Framework
Pegando carona no Command Bus
Menos dependncias!
Pegando carona no Command Bus
Testabilidade
Pegando carona no Command Bus
Altamente coeso
Pegando carona no Command Bus
Agnstico de framework
Pegando carona no Command Bus
Domnio isolado de outras camadas
Pegando carona no Command Bus
Fluxo padronizado. Excelente para equipes!
Pegando carona no Command Bus
Interface nica: handle()
Pegando carona no Command Bus
CQSCommand Query Separation
Pegando carona no Command Bus
Ferramentas similares
BROADWAY
LiteCQRS
SimpleBUS
Pegando carona no Command Bus
Assuntos relacionados
DDD CQRS Domain Events CQS Event Sourcing Hexagonal Architecture
Pegando carona no Command Bus
Referncias
http://tactician.thephpleague.com/http://php-and-symfony.matthiasnoback.nl/2015/01/a-wave-of-command-buses/https://www.reddit.com/r/PHP/comments/29a6qz/what_am_i_missing_with_this_whole_command_bus/http://whitewashing.de/2012/08/18/oop_business_applications__command_query_responsibility_seggregation.htmlhttp://www.sitepoint.com/command-buses-demystified-a-look-at-the-tactician-package/http://pt.slideshare.net/rosstuck/command-bus-to-awesome-townhttp://pt.slideshare.net/rosstuck/models-and-service-layers-hemoglobin-and-hobgoblinshttp://shawnmc.cool/command-bus
Pegando carona no Command Bus
Imagens
https://safetycompass.files.wordpress.com/2013/08/school-bus.jpghttp://martinfowler.com/eaaCatalog/ServiceLayerSketch.gifhttp://allchristiannews.com/wp-content/uploads/2013/05/victory.jpghttp://imguol.com/c/entretenimento/d7/2016/02/03/mc-bin-laden-comeca-2016-tranquilo-e-favoravel-faco-hang-loose-para-os-recalcados-1454507431518_956x500.jpghttp://reactionface.net/reactionface/images/original/119.jpg?new=1http://staples.vteximg.com.br/arquivos/ids/200696-1000-1000/TCOTI0754.jpghttp://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2016/01/1453218734middleware-pipeline.pnghttp://dab1nmslvvntp.cloudfront.net/wp-content/uploads/2016/01/1453218740command-pattern.pnghttp://www.quickmeme.com/img/6b/6b79a252a3471c9566ecb540f4013dbcaba6361d4ae17cf2209acd183dac1268.jpg
Pegando carona no Command Bus
Obrigado!