Em termos práticos, quando o assunto é conexão com fontes de dados em uma
aplicação ASP.NET MVC, estamos falando necessariamente em conexão através de
models a fontes de dados heterogêneas (serviços, arquivos etc.), conforme havíamos mencionado no início deste capítulo. Se mudarmos esta expressão para conexão
com bancos de dados (que é o que faremos de fato em nossa aplicação exemplo) em uma aplicação ASP.NET MVC, ainda assim, estaremos falando de conexão através
de models, entretanto, é de fundamental importância entender que para esta abordagem, existem diferentes formatos para se realizar tal procedimento. Os três mais difundidos no mercado são:
Através da utilização direta das classes ADO.NET;
Através de ORMs (no modelo database first);
Através de ORMs (no modelo code-first);
Através de ORMs (no modelo model-first).
42
Casa do Código
Capítulo 4. Models: Desenhando os modelos da nossa aplicação
Uma pitadinha de ADO.NET
ADO é o acrônimo para ActiveX Data Object. Trata-se de um conjunto de classes
e recursos pertencentes ao conjunto de namespaces da plataforma .NET (daí o nome ADO.NET), disponibilizado para possibilitar o acesso às estruturas de bancos de dados por parte das aplicações. Através dela, é possível realizar diferentes tipos de acessos. Você pode optar, por exemplo, entre buscar dados na memória do servidor ou ir até o banco de dados a cada requisição, dentre diversos outros recursos. A figura 4.1 apresenta uma visão conceitual geral do namespace System.Data.
Figura 4.1: Visão conceitual do ADO.NET
Em aplicações ASP.NET MVC, você pode optar por criar seus repositórios de
acesso a dados utilizando, de forma direta, as classes e recursos do ADO.NET. Neste caso, basta que você crie seu método de conexão ao banco e os demais métodos de acesso e execução das sentenças SQL.
Se você está sendo apresentado a este set de recursos através deste texto, os trechos de código apresentados na sequência poderão ajudar a entender o modos operandi deste modelo.
Se houvesse a necessidade de nos conectarmos a um banco de dados, levando-se
em consideração o fato de que a string de conexão pudesse variar, por exemplo, poderíamos ter um método de conexão fictício ConectaNoBancoDeDados. Ele utiliza a classe SqlConnection presente no namespace System.Data.SqlClient, conforme apresenta a listagem 1.
43
4.2. Abordagens para a criação de Models
Casa do Código
Listagem 4.1 - Método fictício para conexão com o banco de dados via ADO.NET:
using System.Data.SqlClient;
public bool ConectaNoBancoDeDados(string stringDeConexao)
{
SqlConnection objetoDeConexao = new SqlConnection(stringDeConexao);
try
{
objetoDeConexao.Open();
if(objetoDeConexao.State == ConnectionState.Open)
{
return true;
}
}
catch(Exception ex)
{
throw new Exception(ex.Message)
}
}
Desta forma, bastaria ir compondo sua(s) classe(s) de acesso a dados. Em um
projeto ASP.NET MVC, estas estruturações deveriam (de acordo com a convenção
do framework) ocorrer no diretório Models.
Vale lembrar neste momento que nosso objetivo aqui não é apresentar deta-
lhes acerca do ADO.NET, mas sim, apresentar a abordagem como uma possibi-
lidade dentro de aplicações ASP.NET MVC. Você pode encontrar mais informa-
ções acerca do set de recursos disponibilizados pelo ADO.NET através do link:
http://bit.ly/mvc-adonet.
ORMs entrando em ação
Se você já possui alguma experiência com desenvolvimento de software, por
certo já ouviu falar sobre um aspecto de suma importância para projetos de software: os ORMs (Object Relational Model em inglês e Objeto Modelo-Relacional
em português).
ORMs são recursos (ferramentas) criados para facilitar aos desenvolvedores o
processo de conexão por parte de suas aplicações, às fontes de dados. Em linhas gerais, o que estas ferramentas fazem
é criar uma camada de abstração em relação ao 44
Casa do Código
Capítulo 4. Models: Desenhando os modelos da nossa aplicação
banco de dados, disponibilizando portanto um modelo em nível mais alto (progra-mático) para acessar e manipular os dados.
ORMs apresentam características funcionais importantes que contribuem em
grande escala para sua adoção em projetos de softwares modernos. Dentre estas características destacam-se:
Simplicidade: talvez a principal característica proporcionada pelos ORMs é a simplificação do modelo de acesso aos dados. Graças a esta simplificação, desenvolvedores podem trabalhar com as aplicações sem necessariamente pos-
suírem conhecimentos avançados de SQL e bancos de dados;
Produtividade: como o desenvolvedor acessa e manipula os dados através de um modelo programático simplificado, desenvolvedores tendem a ser mais
produtivos, uma vez que o modelo de desenvolvimento lhe é familiar;
Redução de código: como o acesso aos dados é feito em um nível mais alto, automaticamente o número de linhas de código escritas para acessar os dados reduz drasticamente. Você poderá constatar este fato na medida em que
avançamos com a criação da aplicação Cadê meu médico;