Por que eu devo ler este artigo:Este artigo é útil para desenvolvedores front-end que trabalham com o framework Bootstrap na criação de layouts modernos e responsivos, bem como para desenvolvedores back-end que utilizam o ASP.NET MVC para codificação Server Side.

Este artigo tem como propósito desenvolver um projeto web para um fórum de discussão, dividindo as responsabilidades entre as partes front-end e back-end, de forma que leitor possa entender melhor como deve ser essa divisão de trabalho em projetos reais.

Organizar os processos para o desenvolvimento de software não é uma tarefa fácil, muito menos escolher o melhor ciclo de vida para um determinado contexto de um projeto de software a ser desenvolvido.

Embora os processos de desenvolvimento de software tenham amadurecido com surgimento de metodologias, guias para gestão, frameworks e ferramentas para acompanhamento de tarefas durante o projeto e o desenvolvimento do software, a formação de equipes e separação de responsabilidades ainda pode ser uma tarefa árdua e complexa.

Outro ponto chave em um projeto é a escolha de qual tecnologia usar, isso é sem dúvida uma tarefa difícil e depende muito do tipo de projeto a ser desenvolvido e qual o grau de familiaridade da equipe de desenvolvimento com determinas tecnologias candidatas à utilização.

Pensando no contexto proposto por este artigo, o projeto do web site para fórum de discussão tem como objetivo mostrar os passos do desenvolvimento nas etapas do back-end e front-end, assim sendo, será utilizado o ASP.NET MVC no back-end e Bootstrap no front-end da aplicação. Após separadas as responsabilidades e definidas quais tecnologias serão utilizadas, vamos iniciar o projeto e mostrar a integração entre o desenvolvimento back-end e front-end.

O Visual Studio é muito importante neste projeto, pois o mesmo proporciona que a equipe de desenvolvimento trabalhe simultaneamente em partes distintas no desenvolvimento do software sem uma afetar a outra.

Com a escolha do ASP.NET MVC fica bem mais simples separar as responsabilidades dentro da aplicação utilizando o padrão Model-View-Controller, desta forma a equipe de front-end trabalha na camada View, enquanto a equipe back-end trabalha nas camadas Controller, Model e Vew quando necessário.

Requisitos para o projeto do Fórum de discussão

Antes de iniciar a implementação de qualquer software sempre será necessária alguma documentação e especificações do que deve ser desenvolvido, para que se possa guiar o processo em direção ao produto final desejado. A documentação deve conter os requisitos do software a ser desenvolvido, informações sobre funcionalidades do sistema, escopo, regras de negócio da empresa a ser aplicada no sistema, requisitos funcionais, requisitos não funcionais, fluxo principal, fluxo alternativo dentre outros dados.

A forma de documentação de um software e os artefatos que serão gerados dependem muito da metodologia e guia que serão utilizadas no projeto e no desenvolvimento. Entre essas metodologias destacam-se o SCRUM, XP, Kanban, PMBOK, dentre outras.

Podemos então começar listando alguns requisitos funcionais que devem estar presentes no fórum de discussão que criaremos:

1. O sistema deve possibilitar a autenticação de usuários para poderem fazer postagens no fórum, ou seja, não será possível postar algo sem estar devidamente autenticado no sistema;

2. O web site deve ter uma página para o usuário fazer login ou se cadastrar;

3. O web site deve ter uma página para manter os tópicos do fórum;

4. Uma postagem deve pertencer a um tópico, assim sendo, deve ter uma página para cadastro de novos tópicos no fórum;

5. O sistema deve possibilitar a postagem de posts pelos usuários cadastrados no sistema.

Assim temos descritas de forma clara e objetiva as principais funcionalidades do sistema, além de também especificarmos algumas regras de negócio, como a obrigatoriedade de autenticação de usuário para realizar postagem no fórum.

Com base nesses requisitos iniciaremos o desenvolvimento da aplicação, realizando desde as etapas de modelagem do domínio até a implementação da interface com o usuário, sempre objetivando atender as especificações.

Modelagem e implementação do banco de dados

Tendo sido definidos os requisitos iniciais, podemos modelar nosso banco de dados, que será a primeira representação do domínio da nossa aplicação e no qual nos basearemos para implementar as classes de negócio no ASP.NET MVC.

A sugestão deste artigo é que seja utilizada a ferramenta gratuita DBDesigner Fork (seção Links), que permite fazer a modelagem em modo gráfico e exporta o script para vários bancos, como o SQL Server que será utilizado aqui. Porém, nada impede de se utilizar o próprio editor do SQL Server, ou outra ferramenta equivalente para este fim.

A Figura 1 mostra o Diagrama Entidade Relacionamento do banco, que é composto por três tabelas: Usuário, Tópico do fórum e Postagem.

Figura 1. DER banco de dados.

A tabela usuario irá armazenar todos os usuários do sistema que irão cadastrar novos tópicos e realizar postagens. Nesta tabela o ID do usuário é auto incremento, ou seja, será gerado automaticamente pelo SGBD.

Existem alguns campos para o nome, login que será o próprio e-mail do usuário, senha que será criptografada, adm que informa se o usuário é administrado do fórum e data de cadastro do usuário.

Já a tabela topico_forum servirá para armazenar os tópicos do fórum. Os campos desta tabela são auto descritivos contendo um ID, nome, descrição e data de cadastro.

Por fim temos a tabela postagem, que é bem importante pois será a mais movimentada no banco e irá conter todos os posts criados pelos usuários. A mesma tem os campos ID, a chave estrangeira apontando para o tópico fórum, id usuário que postou a mensagem.

A partir do DER podemos gerar o script de criação da base de dados, que pode ser visto na Listagem 1. É preciso então criar um novo banco de dados no SQL Server Management Studio (aqui chamado de BD_FORUM), selecioná-lo e em uma nova query executar o script de criação das tabelas.

Nota: No DBDesigner, caso opte por utilizá-lo, esse script pode ser obtido através do menu File> Export> SQL Create Script, selecionando o SQL Server como SGBD de destino.

Listagem 1. Script SQL para gerar banco de dados do fórum.


  01 CREATE TABLE usuario(
  02   id_usuario INTEGER  NOT NULL   IDENTITY ,
  03   nome VARCHAR(100)    ,
  04   login_email VARCHAR(100)    ,
  05   senha VARCHAR(50)    ,
  06   adm CHAR(1)    ,
  07   data_cadastro DATETIME,
  08 PRIMARY KEY(id_usuario));
  09 GO
  10 
  11 CREATE TABLE topico_forum(
  12   id_topico_forum INTEGER  NOT NULL   IDENTITY ,
  13   nome VARCHAR(100)    ,
  14   descricao TEXT,
  15   data_cadastro DATETIME      ,
  16 PRIMARY KEY(id_topico_forum));
  17 GO
  18 
  19 CREATE TABLE postagem(
  20   id_postagem INTEGER  NOT NULL   IDENTITY ,
  21   id_topico_forum INTEGER  NOT NULL,
  22   id_usuario INTEGER  NOT NULL,
  23   mensagem TEXT,
  24   data_publicacao DATETIME,
  25 PRIMARY KEY(id_postagem)    ,
  26   FOREIGN KEY(id_topico_forum)
  27     REFERENCES topico_forum(id_topico_forum),
  28   FOREIGN KEY(id_usuario)
  29     REFERENCES usuario(id_usuario));
  30 GO
  31 
  32 CREATE INDEX postagem_FKIndex1 ON postagem(id_usuario);
  33 GO
  34 CREATE INDEX postagem_FKIndex2 ON postagem(id_topico_forum);
  35 GO
  36 CREATE INDEX IFK_Rel_Topico_Postagem ON postagem(id_topico_forum);
  37 GO
  38 CREATE INDEX IFK_Rel_Usuario__Postagem ON postagem(id_usuario);
  39 GO

Criando o projeto ASP.NET MVC

Iniciaremos pelo back-end da aplicação, criando um projeto ASP.NET MVC com o Visual Studio 2013 a partir do menu File> New> Project. Dentro da categoria Web, selecione o template ASP.NET Web Application e nomeie-o como preferir (aqui foi usado o nome ForumTech).

Na tela seguinte selecione o template MVC, clique no botão Change Authentication e selecione a opção “No Authentication”, pois iremos ...

Quer ler esse conteúdo completo? Tenha acesso completo