Arquitetura MVC no C#
- #HTML
- #SQL
Grande parte dos sistemas web utilizam um banco de dados para guardar as informações, sejam informações de login de usuário, informações que precisam ser persistidas de alguma forma para poderem ser consumidas e tratadas posteriormente e/ou em tempo real (como é o caso dos apps ou sistemas de gestão de tarefas [ToDo]) e, para se realizar todo este controle, especificamente no C#, pode-se utilizar a arquitetura MVC (Model - View - Controller)
Mas como funciona essa arquitetura?
Ela se baseia em três pilares:
- Model - tratando da parte de dados e lógica;
- Controller - que é o controlador (semelhante a um cérebro do sistema) que irá controlar e decidir como os dados são apresentados;
- View - que é a interface do usuário (UI), apresentando os dados e representa estado atual do modelo (model)
Vamos detalhar cada um dos pilares abaixo
Model
A Controller irá atualizar a Model com base na interação do usuário com a View, ou seja, se ele inserir algum dado ou modificar alguma coisa na View, a Controller receberá estas modificações e enviará para a Model, atualizando-a.
Pra o caso de persistência de dados em um banco de dados, após a interação do usuário com a View, enviando os dados através da Controller e a Controller atualizando a Model, ela atualizará o banco de dados com os novos registros ou com os registros mais recentes.
O inverso também é verdadeiro. A Model irá informar a View que houve alterações nos dados e/ou nos elementos da página e a própria View irá recuperar os dados advindos da Model e irá se atualizar para apresentar os dados mais recentes.
Controller
A controller é o cérebro do sistema, sendo responsável por receber toda a lógica que desejamos implementar nela, recebendo as variáveis, realizando cálculos, exibição condicional e os métodos que irão determinar certos comportamentos.
De uma forma mais simples podemos ter em uma controller chamada Home dois métodos, um para apresentar a página inicial e outro para realizar uma operação matemática.
int numero1 = 10;
int numero2 = 10;
public IActionResult Index()
{
return View();
}
public int Somar(numero1, numero2)
{
resultado = numero1 + numero2;
return resultado;
}
O código acima possui dois métodos, um chamado de Index que irá retornar uma página HTML que criarmos (que será utilizado posteriormente na View) e um segundo que realiza uma soma de dois inteiros (numero1 e numero2) e retorna este valor para que possamos utilizar posteriormente.
Como pode ser observado, toda a lógica do sistema será colocada na Controller para podermos utilizar nas Views.
View
A view é a parte que ficará disponível para o usuário interagir com o sistema, apresentando todos os elementos gráficos da página, sejam eles texto, imagens, botões e demais elementos.
Dentro do C#, o parte web (que é a view) recebe uma extensão específica, a .cshtml, que é um HTML que recebe parâmetros que são inerentes ao C#. Dessa forma, trabalhando com a arquitetura MVC, as tags HTML podem receber valores como asp-area, asp-controller e asp-action.
A asp-controller irá determinar que aquela determinada tag HTML irá utilizar algum código que está presente em uma controller, por exemplo, se temos uma controller com o nome Home e inserirmos esse nome na tag, ele irá verificar todos os códigos que temos na controller Home.
Este parâmetro é utilizado juntamente com o asp-action, onde, dentro da controller indicada no parâmetro anterior, o asp-action irá verificar na controller o parâmetro nela informado e aplicar toda a lógica existente dentro do método informado.
Para exemplificar este processo veja o seguinte código:
<a asp-area="" asp-controller="Home" asp-action="Index">Acessar a Home</a>
Como pode ser observado, temos um link que irá utilizar a controller Home e o método Index existente nela. Este método pode retornar apenas uma página com mais HTML ou toda uma lógica.
O que achou da arquitetura MVC do C#?
Se ficou com dúvidas, utilize os comentários para realizar sua pergunta.
Caso tenha interesse em aprender mais sobre C# e sobre a arquitetura MVC, a DIO tem diversos bootcamps, labs e cursos de C# onde você poderá aprender desde o básico até o avançado, criando um sistema completo utilizando MVC e APIs.