SlideShare uma empresa Scribd logo
1 de 25
Baixar para ler offline
Globalcode – Open4education
Clean Architecture com .NET Core
Gabriel Schade Cardoso
Microsoft MVP | Software Engineer | Mestre em Computação Aplicada |
Professor | Escritor
Globalcode – Open4education
Mestre em computação aplicada a IA
Microsoft MVP – Dev. Technologies
Desenvolvedor, Professor e Revisor
Autor dos livros
Gabriel Schade Cardoso
Globalcode – Open4education
Produtividade
Como vai a produtividade da sua equipe?
Globalcode – Open4education
Bugs
Efeitos colaterais no software?
Globalcode – Open4education
Tem que entregar!
Commita assim mesmo, depois a gente arruma!
Globalcode – Open4education
Tem que entregar!
Spoiler: não vamos arrumar.
Fazer bagunça sempre é mais
lento que manter o código limpo.
Globalcode – Open4education
Pensando em arquitetura
A arquitetura dita como os elementos do seu software irão
interagir entre si.
Existem várias arquiteturas diferentes;
Sempre depende do problema que você vai resolver.
Globalcode – Open4education
Arquitetura
Vamos falar de:
Arquitetura hexagonal;
Ports and Adapters;
Arquitetura limpa.
Globalcode – Open4education
Arquitetura
Independente de:
Framework;
Interface de Usuário;
Banco de dados;
Linguagem
Globalcode – Open4education
Arquitetura Limpa
Globalcode – Open4education
Arquitetura Limpa
Núcleo da aplicação:
Entidades;
Regras de negócio;
Resolve o problema
proposto;
Não enxerga nada além dela;
Globalcode – Open4education
Arquitetura Limpa
Adaptadores:
Adapters;
Controllers;
Faz a cola entre o mundo externo
e o mundo da sua aplicação;
Essa camada em alguns casos
pode se tornar transparente
Globalcode – Open4education
Arquitetura Limpa
Externo:
DB;
Web;
Serviços;
Arquivos;
Console;
...
Globalcode – Open4education
O mundo externo
O mundo externo são detalhes;
Sua aplicação ser web, usar SQL Server, C# ou F#... Detalhes;
Isso porque na visão da arquitetura limpa, isso não altera em
nada o que sua aplicação faz.
Globalcode – Open4education
DEMO
Uma aplicação que armazena dados sobre usuários;
Mais de um target de linguagem;
Mais de um target de interface;
Mecanismo de armazenamento;
Globalcode – Open4education
DEMO
Globalcode – Open4education
DEMO
Globalcode – Open4education
DEMO
Globalcode – Open4education
DEMO
Globalcode – Open4education
DEMO
Globalcode – Open4education
DEMO
Globalcode – Open4education
DEMO
Globalcode – Open4education
DEMO
Globalcode – Open4education
DEMO
/gabrielschade /gabrielschade
https://gabrielschade.github.io

Mais conteúdo relacionado

Mais procurados

Clean architecture
Clean architectureClean architecture
Clean architecture.NET Crowd
 
Padrões de Projeto - Design Patterns e Anti-Patterns
Padrões de Projeto - Design Patterns e Anti-PatternsPadrões de Projeto - Design Patterns e Anti-Patterns
Padrões de Projeto - Design Patterns e Anti-PatternsRodrigo Kono
 
Junções e subconsultas
Junções e subconsultasJunções e subconsultas
Junções e subconsultasjulianaveregue
 
Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...
 Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t... Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...
Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...AboutYouGmbH
 
OpenAPI and gRPC Side by-Side
OpenAPI and gRPC Side by-SideOpenAPI and gRPC Side by-Side
OpenAPI and gRPC Side by-SideTim Burks
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring FrameworkNatanael Fonseca
 
Introdução à Gerência de configuração de Software
Introdução à Gerência de configuração de SoftwareIntrodução à Gerência de configuração de Software
Introdução à Gerência de configuração de SoftwareLucas Amaral
 
Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxMarceloRosenbrock1
 
D2 domain driven-design
D2 domain driven-designD2 domain driven-design
D2 domain driven-designArnaud Bouchez
 
Introducing Clean Architecture
Introducing Clean ArchitectureIntroducing Clean Architecture
Introducing Clean ArchitectureRoc Boronat
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScriptCarlos Eduardo Kadu
 
Spring Cloud Function: Where We Were, Where We Are, and Where We’re Going
Spring Cloud Function: Where We Were, Where We Are, and Where We’re GoingSpring Cloud Function: Where We Were, Where We Are, and Where We’re Going
Spring Cloud Function: Where We Were, Where We Are, and Where We’re GoingVMware Tanzu
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento WebSérgio Souza Costa
 
Engenharia de Software Pressman
Engenharia de Software PressmanEngenharia de Software Pressman
Engenharia de Software PressmanSimoneinfo
 
Arquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialAlexandre Leão
 
Coding standards for java
Coding standards for javaCoding standards for java
Coding standards for javamaheshm1206
 

Mais procurados (20)

Qualidade de Software
Qualidade de SoftwareQualidade de Software
Qualidade de Software
 
Clean architecture
Clean architectureClean architecture
Clean architecture
 
Padrões de Projeto - Design Patterns e Anti-Patterns
Padrões de Projeto - Design Patterns e Anti-PatternsPadrões de Projeto - Design Patterns e Anti-Patterns
Padrões de Projeto - Design Patterns e Anti-Patterns
 
Junções e subconsultas
Junções e subconsultasJunções e subconsultas
Junções e subconsultas
 
Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...
 Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t... Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...
Robert Kubis - gRPC - boilerplate to high-performance scalable APIs - code.t...
 
OpenAPI and gRPC Side by-Side
OpenAPI and gRPC Side by-SideOpenAPI and gRPC Side by-Side
OpenAPI and gRPC Side by-Side
 
Introdução ao Spring Framework
Introdução ao Spring FrameworkIntrodução ao Spring Framework
Introdução ao Spring Framework
 
Introdução à Gerência de configuração de Software
Introdução à Gerência de configuração de SoftwareIntrodução à Gerência de configuração de Software
Introdução à Gerência de configuração de Software
 
Introdução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptxIntrodução ao desenvolvimento da web.pptx
Introdução ao desenvolvimento da web.pptx
 
Arquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADAArquitetura de Software EXPLICADA
Arquitetura de Software EXPLICADA
 
D2 domain driven-design
D2 domain driven-designD2 domain driven-design
D2 domain driven-design
 
GRPC.pptx
GRPC.pptxGRPC.pptx
GRPC.pptx
 
Laravel
LaravelLaravel
Laravel
 
Introducing Clean Architecture
Introducing Clean ArchitectureIntroducing Clean Architecture
Introducing Clean Architecture
 
Introdução básica ao JavaScript
Introdução básica ao JavaScriptIntrodução básica ao JavaScript
Introdução básica ao JavaScript
 
Spring Cloud Function: Where We Were, Where We Are, and Where We’re Going
Spring Cloud Function: Where We Were, Where We Are, and Where We’re GoingSpring Cloud Function: Where We Were, Where We Are, and Where We’re Going
Spring Cloud Function: Where We Were, Where We Are, and Where We’re Going
 
Introdução ao desenvolvimento Web
Introdução ao desenvolvimento WebIntrodução ao desenvolvimento Web
Introdução ao desenvolvimento Web
 
Engenharia de Software Pressman
Engenharia de Software PressmanEngenharia de Software Pressman
Engenharia de Software Pressman
 
Arquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencialArquitetura de Software - Uma visão gerencial
Arquitetura de Software - Uma visão gerencial
 
Coding standards for java
Coding standards for javaCoding standards for java
Coding standards for java
 

Semelhante a Clean Arq .NET Core

Seu código fonte é sustentável?
Seu código fonte é sustentável?Seu código fonte é sustentável?
Seu código fonte é sustentável?Isaac de Souza
 
TDC2018SP | Trilha Prog Funcional - Programacao funcional para humanos
TDC2018SP | Trilha Prog Funcional - Programacao funcional para humanosTDC2018SP | Trilha Prog Funcional - Programacao funcional para humanos
TDC2018SP | Trilha Prog Funcional - Programacao funcional para humanostdc-globalcode
 
TDC 2014 - A influência dos processos de desenvolvimento na arquitetura
TDC 2014 - A influência dos processos de desenvolvimento na arquiteturaTDC 2014 - A influência dos processos de desenvolvimento na arquitetura
TDC 2014 - A influência dos processos de desenvolvimento na arquiteturaEric Lemes
 
Dos requisitos à implantação em uma palestra
Dos requisitos à implantação em uma palestraDos requisitos à implantação em uma palestra
Dos requisitos à implantação em uma palestraRafael Chaves
 
Design de Software com ASP.NET MVC
Design de Software com ASP.NET MVCDesign de Software com ASP.NET MVC
Design de Software com ASP.NET MVCWaldyr Felix
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Developer Academy
 
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPRodrigo Dos Santos
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realHenrique Schmidt
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo realWilly Salazar
 
Automação de testes em projetos ágeis
Automação de testes em projetos ágeisAutomação de testes em projetos ágeis
Automação de testes em projetos ágeisCristiano Caetano
 
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...André Paulovich
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#tdc-globalcode
 

Semelhante a Clean Arq .NET Core (20)

Clean Architecture com .NET Core
Clean Architecture com .NET CoreClean Architecture com .NET Core
Clean Architecture com .NET Core
 
Seu código fonte é sustentável?
Seu código fonte é sustentável?Seu código fonte é sustentável?
Seu código fonte é sustentável?
 
O que devo procurar em um code review
O que devo procurar em um code review O que devo procurar em um code review
O que devo procurar em um code review
 
TDC2018SP | Trilha Prog Funcional - Programacao funcional para humanos
TDC2018SP | Trilha Prog Funcional - Programacao funcional para humanosTDC2018SP | Trilha Prog Funcional - Programacao funcional para humanos
TDC2018SP | Trilha Prog Funcional - Programacao funcional para humanos
 
Programação Funcional para Humanos
Programação Funcional para HumanosProgramação Funcional para Humanos
Programação Funcional para Humanos
 
TDC 2014 - A influência dos processos de desenvolvimento na arquitetura
TDC 2014 - A influência dos processos de desenvolvimento na arquiteturaTDC 2014 - A influência dos processos de desenvolvimento na arquitetura
TDC 2014 - A influência dos processos de desenvolvimento na arquitetura
 
Dos requisitos à implantação em uma palestra
Dos requisitos à implantação em uma palestraDos requisitos à implantação em uma palestra
Dos requisitos à implantação em uma palestra
 
Design de Software com ASP.NET MVC
Design de Software com ASP.NET MVCDesign de Software com ASP.NET MVC
Design de Software com ASP.NET MVC
 
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
Apresentação do Workshop BDD (Desenvolvimento Guiado por Comportamento) com V...
 
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
 
Engenharia de Software Aula 1 - Intro
Engenharia de Software Aula 1 - IntroEngenharia de Software Aula 1 - Intro
Engenharia de Software Aula 1 - Intro
 
Qualidade no desenvolvimento de softwre
Qualidade no desenvolvimento de softwreQualidade no desenvolvimento de softwre
Qualidade no desenvolvimento de softwre
 
Arquitetura de Software em Equipes Ágeis
Arquitetura de Software em Equipes ÁgeisArquitetura de Software em Equipes Ágeis
Arquitetura de Software em Equipes Ágeis
 
Desenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo realDesenvolvimento de software: Mundo ideal x Mundo real
Desenvolvimento de software: Mundo ideal x Mundo real
 
Desenvolvimento de software mundo ideal x mundo real
Desenvolvimento de software  mundo ideal x mundo realDesenvolvimento de software  mundo ideal x mundo real
Desenvolvimento de software mundo ideal x mundo real
 
Automação de testes em projetos ágeis
Automação de testes em projetos ágeisAutomação de testes em projetos ágeis
Automação de testes em projetos ágeis
 
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
[DevDay2018] Arquitetura de Software num cenário de incertezas - Arquitetura ...
 
São Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOpsSão Paulo MuleSoft Meetups - DevOps
São Paulo MuleSoft Meetups - DevOps
 
Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#Trilha .Net - Programacao funcional usando f#
Trilha .Net - Programacao funcional usando f#
 
Programação Funcional usando F#
Programação Funcional usando F#Programação Funcional usando F#
Programação Funcional usando F#
 

Mais de Gabriel Schade Cardoso

Usando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasUsando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasGabriel Schade Cardoso
 
Machine Learning: Classificação de Comentários com Azure ML & Python
Machine Learning: Classificação de Comentários com Azure ML & PythonMachine Learning: Classificação de Comentários com Azure ML & Python
Machine Learning: Classificação de Comentários com Azure ML & PythonGabriel Schade Cardoso
 
Programação Funcional usando C# e F#
Programação Funcional usando C# e F#Programação Funcional usando C# e F#
Programação Funcional usando C# e F#Gabriel Schade Cardoso
 
Aplicações inteligentes com o Azure Cognitive Services
Aplicações inteligentes com o Azure Cognitive ServicesAplicações inteligentes com o Azure Cognitive Services
Aplicações inteligentes com o Azure Cognitive ServicesGabriel Schade Cardoso
 
Abordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETAbordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETGabriel Schade Cardoso
 
Uma abordagem funcional para gerenciamento de erros
Uma abordagem funcional para gerenciamento de errosUma abordagem funcional para gerenciamento de erros
Uma abordagem funcional para gerenciamento de errosGabriel Schade Cardoso
 
Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcionalGabriel Schade Cardoso
 
A importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaA importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaGabriel Schade Cardoso
 
DDD linguagem ubiqua + codigo expressivo
DDD  linguagem ubiqua + codigo expressivoDDD  linguagem ubiqua + codigo expressivo
DDD linguagem ubiqua + codigo expressivoGabriel Schade Cardoso
 

Mais de Gabriel Schade Cardoso (15)

Usando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em LibrasUsando Visão Computacional para Identificar Letras em Libras
Usando Visão Computacional para Identificar Letras em Libras
 
C# 8 e ML.NET
C# 8 e ML.NETC# 8 e ML.NET
C# 8 e ML.NET
 
Machine Learning: Classificação de Comentários com Azure ML & Python
Machine Learning: Classificação de Comentários com Azure ML & PythonMachine Learning: Classificação de Comentários com Azure ML & Python
Machine Learning: Classificação de Comentários com Azure ML & Python
 
Desmistificando Machine Learning
Desmistificando Machine LearningDesmistificando Machine Learning
Desmistificando Machine Learning
 
Programação Funcional usando C# e F#
Programação Funcional usando C# e F#Programação Funcional usando C# e F#
Programação Funcional usando C# e F#
 
Programação Funcional usando C#
Programação Funcional usando C#Programação Funcional usando C#
Programação Funcional usando C#
 
Aplicações inteligentes com o Azure Cognitive Services
Aplicações inteligentes com o Azure Cognitive ServicesAplicações inteligentes com o Azure Cognitive Services
Aplicações inteligentes com o Azure Cognitive Services
 
Abordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NETAbordagem Funcional para Gerenciamento de Erros em .NET
Abordagem Funcional para Gerenciamento de Erros em .NET
 
Desmistificando machine learning
Desmistificando machine learningDesmistificando machine learning
Desmistificando machine learning
 
Uma abordagem funcional para gerenciamento de erros
Uma abordagem funcional para gerenciamento de errosUma abordagem funcional para gerenciamento de erros
Uma abordagem funcional para gerenciamento de erros
 
Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcional
 
A importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-diaA importância da programação funcional no dia a-dia
A importância da programação funcional no dia a-dia
 
DDD linguagem ubiqua + codigo expressivo
DDD  linguagem ubiqua + codigo expressivoDDD  linguagem ubiqua + codigo expressivo
DDD linguagem ubiqua + codigo expressivo
 
TDC - Desenvolvendo com Kinect
TDC - Desenvolvendo com KinectTDC - Desenvolvendo com Kinect
TDC - Desenvolvendo com Kinect
 
Desenvolvendo com Kinect
Desenvolvendo com KinectDesenvolvendo com Kinect
Desenvolvendo com Kinect
 

Clean Arq .NET Core