ASP.NET MVC: Criando um fórum de discussão com Bootstrap
Neste artigo veremos como criar uma aplicação completa para um fórum de discussão no ASP.NET MVC com o framework Bootstrap.
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"
[...] continue lendo...
Artigos relacionados
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo