Boas-vindas ao curso de arquitetura limpa de .NET (pronuncia-se "dótineti") aqui da Alura. Eu sou Daniel Portugal, instrutor e desenvolvedor .NET, e te guiarei ao longo desses conteúdos.
Audiodescrição: Daniel se identifica como um homem branco. Possui cabelos pretos curtos, olhos castanhos, barba por fazer e bigode. No rosto, usa óculos de grau quadrado. No corpo, veste uma camiseta laranja. Ao fundo, há uma parede iluminada em tons de azul, um guarda roupa de madeira no centro e um baixo acústico à direita.
Para absorver melhor os conteúdos deste curso, é necessário ter conhecimento de:
Também é importante:
Primeiro, estabeleceremos uma base fundamentada sobre a definição de arquitetura de software, seus benefícios e a importância de ter uma arquitetura de software bem definida em um projeto. Em seguida, abordaremos o tema principal, que é a arquitetura limpa. Vamos entender seus componentes, como eles interagem entre si e quais regras precisamos seguir para manter essa arquitetura limpa.
Com isso, teremos um projeto de software mais fácil de desenvolver, manter e muito mais econômico para o time e para a empresa em que estivermos trabalhando. Conforme o padrão da Alura, trabalharemos todos esses conceitos, teorias e assuntos de forma prática. Faremos parte de um time de desenvolvimento de um sistema de aluguel de contêineres.
Não ficaremos apenas nos vídeos. Eles são importantes, mas também temos exercícios que complementam e aprofundam alguns temas. Portanto, não deixe de ler e realizar todas as atividades.
Também contamos com o apoio do fórum do curso e uma comunidade no Discord que é bastante ativa. Gostaríamos muito de ver vocês lá, fazendo perguntas e enviando sugestões para que possamos melhorar cada vez mais nossos cursos.
No próximo vídeo, é hora de começar a estudar de fato a arquitetura limpa.
A empresa ContainRs nos contratou como pessoas desenvolvedoras. O negócio dessa empresa é o aluguel de contêineres, caixas de aço usadas para residências, escritórios e eventos. Eles possuem um sistema que realiza a manutenção dos seus processos.
Neste curso, vamos trabalhar com apenas uma parte desse sistema, que é o registro das pessoas clientes interessadas no aluguel. Abaixo, temos o formulário de registro, que contém bastante informações para estudos.
Vamos acessar essa tela e cadastrar uma pessoa como exemplo, preenchendo campos como "Nome", "E-mail", "CPF", "Celular" e "Endereço". Ao clicar no botão "Registrar", a caixa de diálogo abaixo substituirá a tela de registro:
Com isso, a pessoa terá sido cadastrada no banco de dados e receberá uma mensagem de sucesso. Caso desejado, é possível clicar no botão "Novo Registro" nessa caixa para retornar ao formulário. Este é apenas um exemplo de formulário de registro para trabalhar no curso.
Como pessoas desenvolvedoras, somos curiosas, especialmente ao assumir o papel de desenvolver e evoluir um projeto. Temos interesse em entender como a solução está definida. Vamos abrir o projeto no Visual Studio para examinar essa solução.
No Visual Studio, focaremos na visão da aba "Gerenciador de Soluções", localizada na lateral esquerda. Em seu interior, temos a seguinte estrutura:
Estrutura do projeto
appsettings.json
Program.cs
A solução se chama "ContainRs" e contém um projeto chamado "ContainRs.WebApp", que é a aplicação web com o formulário de registro e todo o código associado. Este projeto está organizado em pastas, como "Properties", "Controllers", "Data", "Models" e "Services". Há também uma pasta especial para aplicações web, a "wwwroot", que, embora não tenha o ícone de uma pasta comum, é uma pasta no sistema de arquivos.
Além disso, há dois arquivos na raiz do projeto: appset.json
e program.cs
. Dentro das pastas, encontramos arquivos C# e outros tipos de arquivos.
Ao analisar uma solução, observamos a organização de suas pastas, o que é importante para definir a arquitetura. Vamos discutir algumas definições de arquitetura para fundamentar nosso estudo.
A primeira definição de arquitetura, do dicionário Michaelis, refere-se à construção civil, descrevendo arquitetura como:
"(…) modo como se dispõem as partes ou os elementos de um edifício (…), tendo em vista a criação de espaços agradáveis (…)"
Uma definição mais genérica é:
"(…) estrutura, disposição e organização de um conjunto geralmente harmônico."
No contexto de software, segundo Robert C. Martin, autor do livro Arquitetura Limpa, a arquitetura de software é:
"(…) a divisão em componentes, o arranjo desses componentes e as formas como eles se comunicam entre si."
As três definições destacam componentes e sua comunicação, com o objetivo de trazer harmonia e utilidade ao conjunto.
Voltando ao Visual Studio, vamos entender as partes da aplicação web "ContainRs.WebApp", que está arquitetada em "Controllers", "Data", "Models", "Views" e "Services". Outros arquivos também contribuem para a harmonia e interação entre essas partes.
Discutiremos essa comunicação entre as partes a seguir.
Já conhecemos a definição de arquitetura de software e agora vamos continuar essa reflexão, trazendo um problema prático.
Recebemos uma demanda para incluir um novo campo em um formulário de registro, de modo que apenas pessoas clientes com mais de 18 anos possam ser registradas. A solução poderia ser:
Após definir as possibilidades, vamos supor que decidamos adicionar um campo de nascimento. Precisamos, então, partir para a implementação.
Voltaremos ao Visual Studio, com a aba do gerenciador de soluções aberta. Após pesquisar, perceberemos que, para adicionar um campo que aparecerá no navegador, é necessário escrever um HTML. Esses arquivos HTML estão na pasta "Views". Dentro dessa pasta, o formulário está no arquivo index.cshtml
, localizado na subpasta "Registro".
Ao acessar o arquivo index.cshtml
, notaremos que o formulário de registro contém div
s com campos como e-mail, CPF, celular e endereço. Nessa região, adicionaríamos outra div
com o campo de nascimento, definindo-o como obrigatório.
Além disso, temos que usar essa informação, pois não podemos permitir o salvamento de informações de pessoas menores de 18 anos no banco. Por isso, precisamos encontrar o código C Sharp para implementar essa regra de negócio.
Realizando pesquisas, podemos descobrir que o código que grava informações do formulário no banco de dados está dentro da pasta "Controllers", no arquivo RegistroController.cs
. Ao acessar esse arquivo, notaremos a classe RegistroController
, que herda de Controller
, dentro da qual á o método CreateAsync()
, que valida o formulário e persiste o objeto Cliente
criado.
Usaríamos a informação da data de nascimento neste trecho, definindo se a gravação dos dados deve ocorrer ou não.
Ao explorar a organização dos arquivos, conforme o processo realizado acima, notaremos que é uma prática útil navegar e entender como os elementos estão estruturados, especialmente quando não conhecemos bem a arquitetura do projeto. Após definir a solução e antes de iniciar a implementação, quanto mais soubermos sobre a localização dos componentes com os quais trabalharemos, mais o nosso trabalho é facilitado e o esforço, minimizado.
Vamos recapitular os benefícios de trabalhar com uma arquitetura de software bem definida. Boas arquiteturas tornam o sistema:
Ao abordar códigos mal-organizados, usamos o termo "código macarrônico", por ter uma estrutura "emaranhada", sem identificação clara de onde começam e terminam as responsabilidades. Por outro lado, para códigos bem-organizados, usamos o termo "código transparente", pois ao consultá-los, sabemos exatamente o que fazer e quais serão os resultados da ação.
Nenhum código é totalmente organizado ou desorganizado. Há um espectro que posiciona os projetos entre "macarrônico" e "transparente". Entretanto, definir uma boa arquitetura, com componentes e regras claras, levam o projeto para o lado "transparente" do espectro.
Robert C. Martin, mencionado anteriormente, sintetiza essa discussão afirmando que uma boa arquitetura leva a um código transparente, minimizando os recursos necessários para construir um sistema. Assim, atingimos o grande objetivo da arquitetura de software: facilitar o desenvolvimento e minimizar os recursos, permitindo evolução e crescimento com fluidez.
O curso Arquitetura .NET: descomplicando a Clean Architecture possui 161 minutos de vídeos, em um total de 54 atividades. Gostou? Conheça nossos outros cursos de .NET em Programação, ou leia nossos artigos de Programação.
Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:
Impulsione a sua carreira com os melhores cursos e faça parte da maior comunidade tech.
1 ano de Alura
Assine o PLUS e garanta:
Formações com mais de 1500 cursos atualizados e novos lançamentos semanais, em Programação, Inteligência Artificial, Front-end, UX & Design, Data Science, Mobile, DevOps e Inovação & Gestão.
A cada curso ou formação concluído, um novo certificado para turbinar seu currículo e LinkedIn.
No Discord, você tem acesso a eventos exclusivos, grupos de estudos e mentorias com especialistas de diferentes áreas.
Faça parte da maior comunidade Dev do país e crie conexões com mais de 120 mil pessoas no Discord.
Acesso ilimitado ao catálogo de Imersões da Alura para praticar conhecimentos em diferentes áreas.
Explore um universo de possibilidades na palma da sua mão. Baixe as aulas para assistir offline, onde e quando quiser.
Acelere o seu aprendizado com a IA da Alura e prepare-se para o mercado internacional.
1 ano de Alura
Todos os benefícios do PLUS e mais vantagens exclusivas:
Luri é nossa inteligência artificial que tira dúvidas, dá exemplos práticos, corrige exercícios e ajuda a mergulhar ainda mais durante as aulas. Você pode conversar com a Luri até 100 mensagens por semana.
Aprenda um novo idioma e expanda seus horizontes profissionais. Cursos de Inglês, Espanhol e Inglês para Devs, 100% focado em tecnologia.
Transforme a sua jornada com benefícios exclusivos e evolua ainda mais na sua carreira.
1 ano de Alura
Todos os benefícios do PRO e mais vantagens exclusivas:
Mensagens ilimitadas para estudar com a Luri, a IA da Alura, disponível 24hs para tirar suas dúvidas, dar exemplos práticos, corrigir exercícios e impulsionar seus estudos.
Envie imagens para a Luri e ela te ajuda a solucionar problemas, identificar erros, esclarecer gráficos, analisar design e muito mais.
Escolha os ebooks da Casa do Código, a editora da Alura, que apoiarão a sua jornada de aprendizado para sempre.