SlideShare uma empresa Scribd logo
1 de 21
Clean Architecture com ASP.NET Core
Rodolfo Fadino
Sócio e Head de Tecnologia na tech.fit
(Dieta e Saúde, Tecnonutri e Numee)
Processamento de Dados Fatec-SP
Prof MBA Fiap – Pós Graduação Arquitetura .NET
Microsoft MVP Reconnect
https://rodolfofadino.com.br
https://github.com/rodolfofadino
Rodolfo Fadino Jr
Objetivos de uma Arquitetura
Qualidade
Manutenção
Testabilidade
Independência de framework
Independência de UI
Independência de Banco de dados
Independência de Agentes Externos
SOLID (legenda das fotos seguintes)
• SRP - Single responsibility principle
• Uma classe deve ter uma, e somente uma responsabilidade.
• OCP - Open/closed principle
• Capacidade de estender um comportamento de uma classe sem a necessidade de modificá-lo.
• LSP - Liskov substitution principle
• As classes derivadas devem ser substituíveis por suas classes bases.
• ISP - Interface segregation principle
• Muitas interfaces específicas são melhores do que uma interface única geral.
• DIP - Dependency inversion principle
• Princípio da inversão de dependência - Dependa de abstrações e não de implementações.
Clean Architeture
• by Robert C. Martin (Uncle Bob)
• https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-
architecture.html
Domain
Domain
• Entities
• Value Objects
• Enumerations
• Logic
• Exceptions
Domain
Application
Application
• Interfaces
• Models
• Logic
• Validators
• Events
• Exceptions
Presentation
PersistenceInfrastructure
Domain
Application
Persistent
• DbContext
• Configurations
• Migrations
• Seeding
• Abstractions
Presentation
PersistenceInfrastructure
Domain
Application
Infrastructure
• Clients
• File Systems
• Email / SMS
• System Clock
• Recursos Externos
Presentation
PersistenceInfrastructure
Domain
Application
Presentation
• Web Forms
• MVC
• Razor Pages
• Web API
• Single Page Apps
• Console
Presentation
PersistenceInfrastructure
Domain
Application
Clean Architecture
• Domain
• Application
• Infrastructure/Persistent
• Presentation
Ferramentas
• MediatR
• FluentValidation
• AutoMapper
• CQRS
• IoC
https://www.meetup.com/pt-BR/tech-fit-talks
TDC 2019  Clean Architeture com .net core

Mais conteúdo relacionado

Semelhante a TDC 2019 Clean Architeture com .net core

boas praticas
boas praticasboas praticas
boas praticaslcbj
 
SOLID Os princípios da linguagem orientada a objeto
SOLID Os princípios da linguagem orientada a objetoSOLID Os princípios da linguagem orientada a objeto
SOLID Os princípios da linguagem orientada a objetoAlberto Monteiro
 
Apresentação WTM
Apresentação WTMApresentação WTM
Apresentação WTMAnna Cruz
 
De Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindo
De Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindoDe Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindo
De Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindoAnna Cruz
 
Frameworks de desenvolvimento web
Frameworks de desenvolvimento webFrameworks de desenvolvimento web
Frameworks de desenvolvimento webArlindo Santos
 
Tópicos Emergentes - DevOps
Tópicos Emergentes - DevOpsTópicos Emergentes - DevOps
Tópicos Emergentes - DevOpsSaulo Lopes
 
Codecon - Fundamentos da Arquitetura de Software: Estruturando Sistemas Sem P...
Codecon - Fundamentos da Arquitetura de Software: Estruturando Sistemas Sem P...Codecon - Fundamentos da Arquitetura de Software: Estruturando Sistemas Sem P...
Codecon - Fundamentos da Arquitetura de Software: Estruturando Sistemas Sem P...Pedro Castilho
 
Os 5 Níveis de Reuso
Os 5 Níveis de ReusoOs 5 Níveis de Reuso
Os 5 Níveis de ReusoDr. Spock
 
TDC2022 - Como desacoplar Componentes aplicando DI e IoC com Kotlin e Spring....
TDC2022 - Como desacoplar Componentes aplicando DI e IoC com Kotlin e Spring....TDC2022 - Como desacoplar Componentes aplicando DI e IoC com Kotlin e Spring....
TDC2022 - Como desacoplar Componentes aplicando DI e IoC com Kotlin e Spring....Fabiano Góes
 
Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...
Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...
Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...Klederson Bueno
 
Uaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoUaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoRogerio Fontes
 
Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014Filipe Portes
 
qualidade de código: boas práticas, princípios e padrões
qualidade de código: boas práticas, princípios e padrõesqualidade de código: boas práticas, princípios e padrões
qualidade de código: boas práticas, princípios e padrõesedgarddavidson.com
 
SOLID - Teoria e Prática
SOLID - Teoria e PráticaSOLID - Teoria e Prática
SOLID - Teoria e PráticaEduardo Pires
 
Reutilização
ReutilizaçãoReutilização
Reutilizaçãoemjorge
 

Semelhante a TDC 2019 Clean Architeture com .net core (20)

boas praticas
boas praticasboas praticas
boas praticas
 
SOLID Os princípios da linguagem orientada a objeto
SOLID Os princípios da linguagem orientada a objetoSOLID Os princípios da linguagem orientada a objeto
SOLID Os princípios da linguagem orientada a objeto
 
Apresentação WTM
Apresentação WTMApresentação WTM
Apresentação WTM
 
De Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindo
De Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindoDe Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindo
De Fred Krueger a Brad Pitt como melhorar o seu código e fazê-lo ficar lindo
 
Princípios S.O.L.I.D.
Princípios S.O.L.I.D.Princípios S.O.L.I.D.
Princípios S.O.L.I.D.
 
The Clean Architecture
The Clean ArchitectureThe Clean Architecture
The Clean Architecture
 
Frameworks de desenvolvimento web
Frameworks de desenvolvimento webFrameworks de desenvolvimento web
Frameworks de desenvolvimento web
 
Tópicos Emergentes - DevOps
Tópicos Emergentes - DevOpsTópicos Emergentes - DevOps
Tópicos Emergentes - DevOps
 
Codecon - Fundamentos da Arquitetura de Software: Estruturando Sistemas Sem P...
Codecon - Fundamentos da Arquitetura de Software: Estruturando Sistemas Sem P...Codecon - Fundamentos da Arquitetura de Software: Estruturando Sistemas Sem P...
Codecon - Fundamentos da Arquitetura de Software: Estruturando Sistemas Sem P...
 
Os 5 Níveis de Reuso
Os 5 Níveis de ReusoOs 5 Níveis de Reuso
Os 5 Níveis de Reuso
 
TDC2022 - Como desacoplar Componentes aplicando DI e IoC com Kotlin e Spring....
TDC2022 - Como desacoplar Componentes aplicando DI e IoC com Kotlin e Spring....TDC2022 - Como desacoplar Componentes aplicando DI e IoC com Kotlin e Spring....
TDC2022 - Como desacoplar Componentes aplicando DI e IoC com Kotlin e Spring....
 
Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...
Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...
Pragmatismo e Padroes - Um limiar tenue entre o sucesso e o fracasso do seu p...
 
Uaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - IntroduçãoUaijug ADF - spring boot - microservice - Introdução
Uaijug ADF - spring boot - microservice - Introdução
 
Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014Design patterns e tecnologias para modularização em java tdc2014
Design patterns e tecnologias para modularização em java tdc2014
 
qualidade de código: boas práticas, princípios e padrões
qualidade de código: boas práticas, princípios e padrõesqualidade de código: boas práticas, princípios e padrões
qualidade de código: boas práticas, princípios e padrões
 
SOLID - Teoria e Prática
SOLID - Teoria e PráticaSOLID - Teoria e Prática
SOLID - Teoria e Prática
 
Engenharia de requisitos 1/5
Engenharia de requisitos 1/5Engenharia de requisitos 1/5
Engenharia de requisitos 1/5
 
Aula05 frameworks
Aula05 frameworksAula05 frameworks
Aula05 frameworks
 
Clean Architecture
Clean ArchitectureClean Architecture
Clean Architecture
 
Reutilização
ReutilizaçãoReutilização
Reutilização
 

Mais de Rodolfo Fadino Junior

Como gerenciar e manter minha equipe engajada [Avance 21]
Como gerenciar e manter minha equipe engajada [Avance 21]Como gerenciar e manter minha equipe engajada [Avance 21]
Como gerenciar e manter minha equipe engajada [Avance 21]Rodolfo Fadino Junior
 
Mvp conf middlewares com asp.net core
Mvp conf   middlewares com asp.net coreMvp conf   middlewares com asp.net core
Mvp conf middlewares com asp.net coreRodolfo Fadino Junior
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosRodolfo Fadino Junior
 
Design e boas práticas de api's com CSharp
Design e boas práticas de api's com CSharpDesign e boas práticas de api's com CSharp
Design e boas práticas de api's com CSharpRodolfo Fadino Junior
 
Design e boas praticas de apis com CSharp
Design e boas praticas de apis com CSharpDesign e boas praticas de apis com CSharp
Design e boas praticas de apis com CSharpRodolfo Fadino Junior
 
Web Performance Optimization com ASP.NET Core
Web Performance Optimization com ASP.NET CoreWeb Performance Optimization com ASP.NET Core
Web Performance Optimization com ASP.NET CoreRodolfo Fadino Junior
 
Escalabilidade com docker - ASP.NET Conference 2016
Escalabilidade com docker - ASP.NET Conference 2016Escalabilidade com docker - ASP.NET Conference 2016
Escalabilidade com docker - ASP.NET Conference 2016Rodolfo Fadino Junior
 
Performance Codificando Night Week 2016
Performance Codificando Night Week 2016Performance Codificando Night Week 2016
Performance Codificando Night Week 2016Rodolfo Fadino Junior
 
Fatec-SP Desenvolvendo Web/Mobile para 20 milões de usuários
Fatec-SP Desenvolvendo Web/Mobile para 20 milões de usuáriosFatec-SP Desenvolvendo Web/Mobile para 20 milões de usuários
Fatec-SP Desenvolvendo Web/Mobile para 20 milões de usuáriosRodolfo Fadino Junior
 

Mais de Rodolfo Fadino Junior (20)

Como gerenciar e manter minha equipe engajada [Avance 21]
Como gerenciar e manter minha equipe engajada [Avance 21]Como gerenciar e manter minha equipe engajada [Avance 21]
Como gerenciar e manter minha equipe engajada [Avance 21]
 
Performance tdc sp 2020 final
Performance tdc sp 2020 finalPerformance tdc sp 2020 final
Performance tdc sp 2020 final
 
Mvp conf middlewares com asp.net core
Mvp conf   middlewares com asp.net coreMvp conf   middlewares com asp.net core
Mvp conf middlewares com asp.net core
 
Middlewares com asp.net core
Middlewares com asp.net coreMiddlewares com asp.net core
Middlewares com asp.net core
 
Desenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São CarlosDesenvolvimento web com .NET Core - Meetup São Carlos
Desenvolvimento web com .NET Core - Meetup São Carlos
 
DevXperience WPO com .NET CORE
DevXperience WPO com .NET COREDevXperience WPO com .NET CORE
DevXperience WPO com .NET CORE
 
Design e boas práticas de api's com CSharp
Design e boas práticas de api's com CSharpDesign e boas práticas de api's com CSharp
Design e boas práticas de api's com CSharp
 
Design e boas praticas de apis com CSharp
Design e boas praticas de apis com CSharpDesign e boas praticas de apis com CSharp
Design e boas praticas de apis com CSharp
 
Web Performance Optimization com ASP.NET Core
Web Performance Optimization com ASP.NET CoreWeb Performance Optimization com ASP.NET Core
Web Performance Optimization com ASP.NET Core
 
ASP.NET Core e MVC - Fatec-SP 2016
ASP.NET Core e MVC - Fatec-SP 2016ASP.NET Core e MVC - Fatec-SP 2016
ASP.NET Core e MVC - Fatec-SP 2016
 
Escalabilidade com docker - ASP.NET Conference 2016
Escalabilidade com docker - ASP.NET Conference 2016Escalabilidade com docker - ASP.NET Conference 2016
Escalabilidade com docker - ASP.NET Conference 2016
 
Performance Codificando Night Week 2016
Performance Codificando Night Week 2016Performance Codificando Night Week 2016
Performance Codificando Night Week 2016
 
Desenvolvimento Web com ASP.NET MVC
Desenvolvimento Web com ASP.NET MVCDesenvolvimento Web com ASP.NET MVC
Desenvolvimento Web com ASP.NET MVC
 
Fatec-SP Desenvolvendo Web/Mobile para 20 milões de usuários
Fatec-SP Desenvolvendo Web/Mobile para 20 milões de usuáriosFatec-SP Desenvolvendo Web/Mobile para 20 milões de usuários
Fatec-SP Desenvolvendo Web/Mobile para 20 milões de usuários
 
Minha Vida Fiap - Desenvolvimento
Minha Vida Fiap - DesenvolvimentoMinha Vida Fiap - Desenvolvimento
Minha Vida Fiap - Desenvolvimento
 
SignalR Visual Studio Summit
SignalR Visual Studio SummitSignalR Visual Studio Summit
SignalR Visual Studio Summit
 
Performance Web com ASP.NET MVC
Performance Web com ASP.NET MVCPerformance Web com ASP.NET MVC
Performance Web com ASP.NET MVC
 
TDC, Quem derrubou o meu site?
TDC, Quem derrubou o meu site?TDC, Quem derrubou o meu site?
TDC, Quem derrubou o meu site?
 
Entregabilidade e Emails
Entregabilidade e EmailsEntregabilidade e Emails
Entregabilidade e Emails
 
EmberJS + SPA
EmberJS + SPAEmberJS + SPA
EmberJS + SPA
 

Último

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsDanilo Pinotti
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx2m Assessoria
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx2m Assessoria
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx2m Assessoria
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfNatalia Granato
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploDanilo Pinotti
 

Último (6)

Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
Assessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdfAssessement Boas Praticas em Kubernetes.pdf
Assessement Boas Praticas em Kubernetes.pdf
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 

TDC 2019 Clean Architeture com .net core

Notas do Editor

  1. SRP - Single responsibility principle Uma classe deve ter uma, e somente uma responsabilidade
  2. OCP - Open/closed principle Capacidade de estender um comportamento de uma classe sem a necessidade de modificá-lo.
  3. LSP - Liskov substitution principle As classes derivadas devem ser substituíveis por suas classes bases.
  4. ISP - Interface segregation principle Muitas interfaces específicas são melhores do que uma interface única geral.
  5. DIP - Dependency inversion principle Princípio da inversão de dependência - Dependa de abstrações e não de implementações.