5 Implementação do Sistema
5.2 Ambiente de desenvolvimento e linguagens utilizadas
Utilizando a IDE Microsoft Visual Studio Community 2015 a estrutura básica do MVC é criada automaticamente, porém algumas modificações nessa estrutura foram ne- cessárias a fim de destacar as camadas do MVC. Essas alterações serão apresenta- das mais adiante neste capítulo.
Apesar desta IDE permitir o desenvolvimento em diversas linguagens como Vi-
sual Basic, C++, Python e F#, para este estudo, a linguagem C# foi utilizada.
O banco de dados utilizado é o SQL Server Express 2012, que é uma versão gratuita, porém limitada da versão SQL Server 2012. Este é o sistema de gerencia- mento de banco de dados (SGBD - do inglês Data Base Management System ou DBMS) com maior compatibilidade e o que requer menor configuração quando usado em conjuto com qualquer versão do Visual Studio.
A figura 16 mostra a estrutura básica de um projeto MVC criado no Visual Studio. A seguir, cada item da estrutura será discutido.
Figura 16 - Estrutura de pastas
• Properties: Estrutura utilizada para definir as propriedades do projeto. Contém apenas, para este projeto especificamente, o arquivo Assem-
blyInfo.cs, que é utilizado para controlar os atributos do assembly, como
título do projeto, direitos autorais, versão, etc.
• References: Possui as referências dos assemblys adicionados no projeto. Por exemplo, a referência ao Entity Framework responsável pela comuni- cação com o Banco de Dados.
• App_Data: Utilizada para armazenar arquivos de banco de dados ou ar- quivo de dados, que podem ser arquivos XML.
• App_Start: Pasta utilizada para armazenar arquivos de configuração como os arquivos BundleConfig.cs (utilizado na configuração de Bundle e
Minification, que serve para compactar arquivos .css (Cascading Style Sheet ou folhas de estilo) e arquivos de script) [14], FilterConfig.cs (utili-
zado para registrar os filtros globais do MVC) e RouteConfig.cs (utilizado para registrar rotas) [15].
• Content: Pasta utilizada para armazenar os arquivos CSS que são utiliza- dos no projeto.
• Controllers: Contém os controles da aplicação. • Fonts: Pasta padrão utilizada pelo bootstrap.
• Models: Utilizada para armazenar o modelo da aplicação, representado pelas classes que representam as entidades do modelo e outras que são responsáveis pela comunicação com o banco de dados.
• Scripts: Armazena arquivos JavaScript.
• Views: Utilizada para armazenar todos os arquivos responsáveis por im- plementar a interface gráfica do usuário, ou seja, as páginas HTML. Para cada Controle existe uma subpasta dentro da pasta Views. Esta também contém uma pasta chamada Shared, que é utilizada para armazenar o arquivo _Layout.cshtml (que funciona como a Master Page da aplicação),
views (que são arquivos HTML) e partial views (também são arquivos
HTML, porém com a diferença de não possuir toda a estrutura de um ar- quivo HTML completo, é usado principalmente quando uma parte da um
view, como uma tabela por exemplo, precisa ser usada em varias outras views) que são compartilhados pelo projeto. Contém ainda dois arquivos
chamados ViewStart.cshtml (utilizado para configurar qual será a Master
Page. Por padrão, é a _Layout.cshtml) e Web.config (a funcionalidade
principal desse arquivo é proibir o acesso direto às views). • Favicon.ico: ícone que aparece no browser ao lado da URL.
• Global.asax: Utilizado para configurar eventos, por exemplo, quando a aplicação inicia ou é encerrada, etc.
• Package.config: Utilizado para controlar os pacotes que são utilizados no projeto.
• Project_Readme.html: Um arquivo de help (ajuda), que contém links ex- plicando as funcionalidades do ASP.NET MVC.
• Web.config: Utilizado para configurar appSettings, conexões de banco de dados, autenticação, autorização, referências de assemblys, etc.
O objetivo principal deste trabalho é a apresentação das vantagens da arquite- tura MVC. Como primeiro passo para a construção do software de exemplo, é adicio- nado na pasta App_Data um item do tipo SQL Server Database como mostrado na Figura 17. Isso cria um arquivo MDF, que é um banco de dados local.
Figura 17 - Adiconado o Banco de Dados
Após isso, é necessário criar as tabelas do banco de dados, esta etapa de mo- delagem não será mostrada aqui, porém para deixar claro, foram criadas quatro tabe- las: Anexo, Chamado, Mensagem e Usuario.
Em seguida, é adicionado ao projeto um novo item à pasta Models, que é res- ponsável pela comunicação com o bando de dados através do Entity Framework, ge- rando todas as entidades, ou seja, as classes (Anexo.cs, Chamado.cs, Mensagem.cs e Usuario.cs) automaticamente. A Figura 18 mostra a adição ao projeto do item
ADO.NET Entity Data Model. Este processo de criar primeiramente o banco de dados
Figura 18 - Adicionando a conexão
A figura 19 mostra a estrutura de arquivos atual do projeto, contendo as classes citadas anteriormente.
Figura 19 - Estrutura atual
As classes que foram geradas ainda necessitam de algumas validações e customiza- ções. A Figura 20 e 21 mostram os atributos da classe Chamado gerada automatica- mente e esses mesmos atributos após o uso do Data Annotation respectivamente. O processo de criação de Data Annotation é análogo para as outras classes do modelo. As anotações de atributos utilizadas são as seguintes:
• Key: Usado para definir a chave primária da tabela que uma determinada classe representa. Esta anotação pode ser dispensável quando é criado um atributo nomeado de Id, pois dessa forma o SGBD identifica-o como chave primária automaticamente.
• Required: Define o atributo como obrigatório, ou seja, não será possivel enviar uma requisição sem que exista valor atribuído.
• ErrorMessage: Mensagem de erro exibida quando o usuário violar alguma va- lidação.
• Display: Usado para exibir uma Etiqueta (Label) quando o atributo for utilizado. Caso não seja especificado um Label, o próprio nome do atributo é apresentado na tela do sistema. Conforme a Figura 21, o atributo DataInicio possui esta anotação com o valor ‘Data de Abertura’, assim este é o nome exibido na ge- ração da View.
• StringLength: Define o tamanho máximo de um campo (quando for gerada a
View).
• DisplayFormat: Usado para formatar o conteúdo de um campo. A Figura 21 mostra o uso desta anotação para formatar a data do atributo DataInicio, con- vertendo o formato DateTime (MM/dd/yyyy HH:MM:SS AM) para o fomato ‘dd/MM/yyyy’, ou seja, ‘dia/mês/ano’ de acordo com o formato brasileiro de data.
Figura 21 - Atributos após edição
.
Após a realização dos passos descritos previamente, foi criado o Controle, que é responsável pela comunicação entre o Modelo e a Visão. Na pasta Controllers, foi adicionada a classe HomeController. No Visual Studio, há a opção de criar um novo controle com algumas Actions (Ações) pré-definidas, como um template. Neste pro- jeto, foi usado para o HomeController o template “MVC 5 Controller with read/write
actions”, ou seja, um controle com ações de escrita e leitura. Isso significa que na
criação do controle já existem algumas ações prontas, que correspondem a Index,
Details, Edit (Get e Post), Create (Get e Post), Edit (Get e Post) e Delete (Get e Post).
As Actions get e post se diferenciam pelo fato de que as action get são acionadas quando o usuário requisita acesso a uma determinada view e as actions post são acionadas quando se subtmete um formulário de alguma view. Por exemplo, a action do tipo get permite ao usuário acessar a uma página de edição e com a action do tipo
Antes de começar a desenvolver as actions, é necessário instanciar o banco de dados para que ele possa ser acessado. Isso é implementado através do código mos- trado na Figura 22, especificado pela classe HomeController fora de qualquer action a fim de mantê-lo acessível por todas elas.
Figura 22 - Instância do banco de dados