a letra que tu criar do projeto dot net ou você chegou o momento de estruturar a arquitetar o teu projeto do asp.net mas quando tu vai buscar referências tu ver que o desenvolvedor a vocês uma forma o desenvolvedor B fiz de outra e só tava te confundindo ainda mais no vídeo de hoje eu quero te mostrar uma arquitetura simples e Clara no quesito de responsabilidades que utiliza basicamente em todos os meus projetos e eu tenho certeza que vai te ajudar aí também no teu projecto então fica comigo aqui no vídeo bora [Música] Fala galera Henrique
já tá por aqui e quando a gente começa a falar sobre arquitetura de software automaticamente a gente já entra num oceano de opções aí galera infelizmente arquitetura de software não é uma receita de bolo a gente tem várias arquiteturas para vários tipos diferentes de projeto porém dentro dessas arquiteturas a gente tem aquilo que a gente chama de coringa que são arquiteturas que vão servir muito bem pronto para tua aplicação independente do Propósito esse nós criarmos uma boa o nosso projeto lá no futuro Isso vai nos poupar muito tempo e dinheiro porque quando a gente começa
a falar sobre novas features manutenção reusabilidade de algumas coisas dentro da nossa aplicação essa nossa arquitetura Inicial lá quando a gente começou o projeto vai fazer a diferença então por isso que eu sempre digo sempre pensa em arquitetura de uma forma muito carinhosa porque no futuro ela vai te dizer isso vai ter muita dor de cabeça e trabalho para poder dar continuidade no sol e exatamente isso que eu quero te mostrar no vídeo de hoje na verdade eu quero te prevenir para que tu passa por esses problemas que é que mostrando uma arquitetura simples e
direta uma arquitetura que ela divide em três camadas de responsabilidade basicamente tudo o que tu precisa dentro da tua aplicação então eu te peço que escreve aqui no canal porque eu sempre vou estar postando aqui para que esse tipo de conteúdo que vai te ajudar e muito seja jato um deve experiente ou alguém que já trabalhou muitos anos com tecnologia ou sim aquela pessoa que tá entrando hoje no mercado de tecnologia eu tenho e o que ele vai te ajudar e muito então já clica aqui no botão de inscrever-se é totalmente gratuito e sempre que
eu postar um novo conteúdo aqui no canal tu vai ser notificado por primeiro para receber esse conteúdo muito bem galera já estamos aqui no meu computador e a primeira coisa que a gente pode votar nesse projeto e que ele é dividido basicamente em duas pastas principais se a gente subir no nível aqui a gente vai ter que ter o clima architecture isso é a nossa solução dentro dos fechar que a gente tem uma extensão que é. Sln que sempre quando a gente crie um novo projeto vai criar por padrão para nós e dentro da nossa
solução a gente pode colocar quantos projetos a gente quiser e aqui dentro da clínica architecture A gente já consegue ver que tem duas pastas distintas com seus projetos né seus respectivos projetos dentro a primeira pasta é a Sr seus olhos né que a pasta onde a gente vai ter basicamente todos os projetos da nossa aplicação e aqui a gente tem a pasta de testes que logicamente como o nome já diz a gente vai ter todos os testes referente a essa aplicação porque que ela era hoje é muito comum a os testes e ponta a ponta
dentro da nossa aplicação Então nada mais justo do que a gente dividir isso para não ficar aquela velha salada de fruta então o com mais recomendado hoje é realmente a gente dividir como tá aqui a gente pode ter umas força a gente pode ser um projeto de testes Ou a gente pode ser qualquer outra subdivisão para que fique mais claro o entendimento né EA responsabilidade de cada coisa dentro da nossa aplicação é válido lembrar galera que essa aplicação aqui eu tô pegando com o exemplo do Jason Taylor né que é basicamente utiliza muito Clean code
utiliza muita responsabilidade única Então nada mais justo do que pegar essa aplicação que é uma aplicação muito boa nisso e mostrar aqui para vocês não era a gente abrindo aqui a pastas força a gente vai ver que a gente tem quatro projetos distintos certo application do Meio infraestrutura web Uai esse projeto de web Uai vocês podem ver com outro nome também como presentation eu já vi que muitos desenvolvedores e muitos autores usam esse nome mas basicamente aqui a gente tem quatro projetos distintos que vão o preço camadas de responsabilidade distintas dentro do nosso software e
vocês vão entender isso agora mesmo eu quero mostrar para vocês aqui essa imagem porque essa imagem vai nos mostrar e vai nos deixar claro Qual é a responsabilidade né O que que é cada camada dentro da nossa aplicação então aqui no centro a gente vê que tem a camada de dormir essa eu diria que é o coração nosso projeto é a camada mais importante porque ela vai ser a nossa representação do banco de dados que a gente tem Claro que dentro da camada de domingo a gente pode ter outras coisas como tipos como numeradores a
gente pode ter que cépticos ou qualquer algo do tipo mas basicamente a nossa camada de dormir é a camada que vai representar o nosso banco de dados e é por isso que essa camada aqui galera ela não precisa de nenhuma referência de outra camada para poder funcionar ela é a única camada que não precisa de referência partindo aqui galera a gente tem a camada the application e essa camada é uma camada interessante porque normalmente a gente divide Allen Duas né aplicação em si EA infraestrutura e qual que é basicamente a diferença entre as duas na
aplicação tu vai realmente dizendo vai ter a lógica do que é para ser feito mas tu não vai dizer como é para ser feito isso entra dentro da nossa camada de infraestrutura então basicamente essas duas camadas aqui galera ela se comunicam através de injeção de dependência Ou seja a gente Pode injetar a infraestrutura dentro da application e usar recursos que a gente tem dentro da infraestrutura tá então basicamente Essa é a divisão entre a aplicação EA infraestrutura essa camada aqui de infraestrutura galera Tem muita gente que utiliza o nome de croscant igual ou simplesmente algo
relacionado a um universo contra o câncer da vida ou algo do tipo mas basicamente aplicação infraestrutura elas estão no mesmo nível porém a gente divide elas para cada uma terá sua responsabilidade Então ela aplicação ela vai te mostrar o que tem que ser feito e a infraestrutura vai te mostrar como que tem que ser feito Esporte Então galera a gente tem a camada mais externa aqui que é a camada do presentation que muita gente o whitner vocês viram ali no exemplo de Jason mas essa camada nada mais é do que a interface com o usuário
é nessa camada aqui que o usuário vai interagir com a tua aplicação então só que pode ser um blazer da vida um mvc humano com angular mulher que ou qualquer coisa do tipo essa camada aqui é a camada que vai ser digamos assim a porta de entrada a interface entre a tua aplicação e o cliente final que ela era então a primeira coisa que a gente pode fazer aqui é realmente dá uma olhada dentro do do Meio dentro da camada de domínio e aqui dentro Claro a gente pode dividir em quantas faz a gente quiser
aqui para ficar mais claro né e para ficar mais limpo o nosso código mas basicamente aqui a gente tem um pasta em que diz que eu queria que é a principal pasta aqui dentro né Tem muita gente que chama de modo ausentes embora modos e entes tenha uma mínima diferença que são assunto para outro vídeo mas indiferente tu vai ver isso como o modo como a gente dizer aqui nada mais é do que a classe que é responsável por ser e assim no espelho do nosso banco de dados então que eu tenho as propriedades dela
aqui eu posso ter comportamento posso ter estados enfim qualquer coisa que represente isso no meu banco de dados eu tenho que ter aqui dentro da minha classe principal e eu posso ter aqui quantas vezes eu quiser vamos supor que eu tenho a 15 tabelas do banco de dados eu vou ter aqui 15 entes ou mais né dependendo de como que fica a clareza do código aqui de como que eu estou estruturando essa arquitetura tá então aqui a gente pode ver que a gente tem exceptions também que a gente pode criar aqui Exception os padrões né
para quando der algum problema a gente levanta essa exceção né hoje eu vou fechar que a gente tem os trolls mwexception né ou um sou o argumento Exception qualquer coisa do tipo que a gente pode definir isso aqui como padrão Ou pode customizar isso tendo uma classe principal para isso enfim a gente pode fazer dessa forma e depois só chamar aonde a gente precisa certo a gente pode trabalhar também aqui com evento está galera por exemplo aqui a gente tem um tudo clientes evento Você pode ter um evento de quando ele foi criado né o
Cada vez que a gente fizer alguma ação a gente chama esse evento para ter um controle melhor sobre as coisas então tudo isso aqui galera a gente pode ter dentro da nossa camada de domínio dentro do nosso projeto de domingo partir daqui então para nossa camada the application galera a gente pode ver aqui por exemplo dentro de tudo itens como ele tá dividindo aqui em comandos e vamos handlers e criadores Com certeza a gente está usando cqrs dentro desse projeto né que é o cômodo Harry responsabilidade civil gay tá basicamente cqrs Ele te disse que
tu pode usar um banco para escrita em outro banco com a leitura então quando a gente está falando de o RN como entity Framework por exemplo ou mínimo RM como Dapper a gente pode utilizar o leite de foi morto para escrita pelos Recursos que ele tem para poder validar o nosso objeto e salvar no banco de dados e a gente pode ter o Dapper para leitura porque dá para é muito mais simples e muito mais leve de se usar o que vai fazer com que a nossa consulta no banco de dados se torne mais performático
então é em o vídeo cqrs prega Sim a gente pode ver que aqui ele já tá usando então por exemplo se a gente olha que incômodos a gente tem por exemplo um cliente do ar então aqui dentro do nosso cliente do ar tem como de galera a gente vai ter um metro correndo e esse método vai ser responsável por criar realmente o nosso Twitter então Claro se a gente pegar aqui abrir as cores e vier aqui por exemplo em débito do por exemplo esse primeiro aqui ó a gente pode ver que aqui ele vai direto
no nosso banco de dados e buscar informação que a gente precisa Então basicamente é essa divisão aqui que ele tá fazendo Tá galera Então a gente tem as quais Existem os romanos que vão realmente gerenciar toda essa parte então aqui galera a partida para camada de infraestrutura uma das principais funções que ela tem é realmente definir como que vai funcionar o nosso banco de dados né como que tem que ser feito isso então se a gente veio aqui por exemplo dentro de persistência a gente tem um application um bebê context e essa classe aqui é
a classe principal que é uma classe que a gente vai usar injetada em ouro a vocês que a gente for precisar por exemplo fazer um convite no banco de dados ou algum Jet ou qualquer outra transação então aqui por exemplo a gente tem toda a configuração do nosso banco de dados logicamente né a gente tem somente duas entidades assistencialmente 2 dentes aqui no nosso projeto mas o modo que se a gente tivesse 15 20 a gente teria que vir aqui e configurar então basicamente na classe de infraestrutura como a gente conversou lá atrás ela vai
dizer como que tem que ser feito as coisas para que a gente depois consiga injetar e isso dentro do nosso serviço aonde quer que for né dependendo da Independência que a gente tá usando para que a gente consiga usar de forma efetiva né tudo que essa camada de infraestrutura nos sugere por último Então galera aqui dentro da camada de web no ar a gente vai ter tudo referente a interface com cliente basicamente nessa pasta que controllers a gente vai ter todas as rotas que a gente tem da aplicação então por exemplo se o usuário final
foi lá e acessar www e tu nome empresa/Jet alguma coisa ele vai cair aqui dentro da controle então por exemplo galera se eu for aqui e pegar por exemplo o tio do itens controla e vamos pegar aqui por exemplo uma rota padrão aqui por exemplo o dele ti tá quando a gente quiser deletar alguma coisa a gente vai passar uma foto dele que vai passar o Eyed da informação que a gente quer deletar para a gente poder fazer isso no banco de dados logicamente que a gente tá usando o meio de Heitor até porque ela
questão do CRS tá isso aqui não vem a gente entrar no vídeo agora mas basicamente a controla vai ser a porta Inicial digamos assim nossa aplicação tudo que o usuário fizer vai passar pela controla e a controla ela vai dimensionar isso a controlo e vai chamar to application application vai fazer tudo que tem que ser feito logicamente com a infraestrutura junto vai acionar o do meio quando for necessário que cada coisa que a gente precisa fazer aqui dentro do projeto a nossa Controller vai ser a nossa página mãe digamos assim vai ser a nossa classe
e mãe é porque tudo que foi feito vai passar aqui que ela controla e a controla que vai realmente direcionar galera que se a gente pegar por exemplo usar no mínimo with as ou qualquer coisa do tipo que não tem o conceito de controle essa talvez isso cai um pouco em desuso mas hoje em dia a gente utiliza muito ainda as controladas e eu até digo que se a gente tem uma aplicação grande uma controla vai ser sempre muito bem-vinda porque ela vai centralizar essas informações galera Então olha só hoje a gente conseguiu ver aqui
o arquitetura muito simples e muito funcional que o intuito aqui não era mostrar para vocês o que que tem dentro de cada coisa e como Cada coisa funciona o intuito meu aqui é realmente mostrar como que vocês podem dividir a aplicação de vocês em camadas de responsabilidade Então hoje a gente viu o padrão de três camadas né que a gente tem um presentation a gente tem application né junto com a infraestrutura EA gente tem a domingo realmente espero de coração que esse vídeo tenha te ajudado já deixa aqui nos comentários Qual é o tipo de
arquitetura que que utiliza se tu já a Prefeitura de três camadas no seu projeto para a gente trocar uma ideia eu espero que fique muito bem eu te vejo na semana que vem e até