Você deve se lembrar também que nossa aplicação exemplo foi criada baseada
em um modelo (template) pré-construído, disponibilizado pelo Visual Studio. Esta escolha não foi por acaso. O template ao qual nos referimos traz uma estrutura de aplicação já pronta e segue algumas práticas interessantes, as quais estudaremos a seguir.
Olhando para a estrutura de diretórios
O primeiro aspecto para o qual gostaria de chamar a atenção na aplicação de
exemplo é a estrutura de diretórios (apresentada pela figura 1.3).
A primeira importante consideração em relação à estrutura de diretórios apre-
sentada é que, muito embora seja uma estrutura funcional e que atenda a boa parte das aplicações ASP.NET MVC, ela não é estática e/ou obrigatória. Sua aplicação pode possuir a estrutura de diretórios que achar mais conveniente. Entretanto, respeitando-se as convenções do framework MVC, você poderá encontrar alguns
benefícios, os quais serão vistos de forma mais diluída nos capítulos posteriores.
Convenções?
Para automatizar algumas operações, o ASP.NET MVC utiliza algu-
mas convenções (note que não se tratam de regras, mas de boas práticas
a serem respeitadas). Seja para nomes de variáveis, objetos, classes e até
mesmo diretórios.
Os diretórios mais importantes de nossa aplicação (justamente por estarem in-
corporados à convenção) são: Models, Views, Controllers, App_Data e App_Start.
Suas respectivas funções são apresentadas a seguir:
Models: responsável por agrupar os modelos de dados que serão utilizados pela aplicação. Você pode entender como modelo de dados tudo que se
aplica à expressão, como por exemplo: arquivos EDMX (modelos do Entity
Framework, XMLs, webservices, entidades de negócio, DTOs [(]em portu-
guês, Objeto de Transferência de Dados"] etc.);
12
Casa do Código
Capítulo 2. Entendendo a estrutura de uma aplicação ASP.NET MVC
Views: agrupa os elementos a serem visualizados pelo usuário final (as famosas views). Nome bem sugestivo, não?!
Controllers: reúne as classes (e seus respectivos métodos) responsáveis por definir os comportamentos da aplicação a nível de servidor. Se facilitar, você pode entender este diretório como sendo o coração de sua aplicação web;
App_Data: aqui o MVC entende que você poderá posicionar arquivos a serem consumidos por seu projeto, como imagens, vídeos, áudios etc;
App_Start: arquivos que implementam comportamentos específicos e que devem ser inicializados junto com o projeto, devem ser posicionados neste dire-
tório.
Existe ainda um diretório convencionado pelo ASP.NET MVC que não aparece
em nosso projeto exemplo e que, portanto, não foi apresentado na lista anterior.
Trata-se do App_Code. Ele não aparece na estrutura de diretórios da aplicação exemplo por um motivo muito simples: ele recebe arquivos Razor [3] provenientes de
Helpers terceiros e a aplicação exemplo não implementa qualquer helper terceiro.
Falaremos muito de helpers durante os capítulos posteriores, por isso, já é importante que você se familiarize com este termo.
2.3
Um pouco mais sobre convenções
Convenção sobre Configuração, ou somente CoC, visa simplificar e diminuir as decisões que precisam ser tomadas pelo desenvolvedor.
O trabalho fica muito mais fácil e simplificado já que algumas decisões estruturais e de nomes são sugeridos ou até exigidos em alguns casos, pelo framework.
Os Controllers e Views são ótimos exemplos.
No caso dos Controllers temos um diretório sugerido para a sua criação,
e também temos que respeitar a convenção de que todo controller deve pos-
suir o sufixo Controller, ou seja,
EmailController, ContatoController,
ClientesController etc.
As Views também possuem um diretório definido, e o MVC faz uso de uma con-
venção simples para identificar ou relacionar Views e Controllers. No caso do controller EmailController, uma pasta Email será criada dentro da pasta Views.
13
2.3. Um pouco mais sobre convenções
Casa do Código
Podemos observar essas convenções na estrutura do nosso primeiro projeto.
Veja na figura 2.1 os controllers HomeController, AccountController e as
pastas Home e Account para as Views.
Figura 2.1: Convenção sobre Configuração no nosso primeiro projeto
Evidentemente que o framework MVC se responsabiliza por indexar os diretó-
rios da solução (nome atribuído pelo Visual Studio para o ambiente que pode agrupar um ou múltiplos projetos), de forma com que seus respectivos conteúdos sejam facilmente acessíveis de qualquer ponto da aplicação.
Como você pôde perceber, em relação à estrutura de diretórios, temos um mo-
delo bem definido e simplificado. Evidentemente, à medida que formos avançando, você verá este modelo sendo incrementado. Mas isto é assunto para os próximos
capítulos.
14
Casa do Código
Capítulo 2. Entendendo a estrutura de uma aplicação ASP.NET MVC
2.4
Navegação baseada em rotas
A aplicação criada no primeiro capítulo apresenta outro aspecto fundamental relacionado ao modelo MVC de desenvolvimento: a navegação baseada em rotas. Volte suas atenções neste momento para a figura 1.4 do capítulo 1, mais precisamente, na barra de endereços exibida pelo navegador. Note que o endereço que está sendo exibido é http://localhost:1153/ . A pergunta que você pode estar se fazendo neste instante é: o que isso tem demais?