Single Page Application(SPA) usando AngularJS com Web API – Parte 01
Neste artigo, mostrar como criar uma aplicação ASP .NET Single Page Application usando os recursos do AngularJS com Web API.
Neste artigo, vou mostrar como criar uma aplicação ASP .NET Single Page Application usando os recursos do AngularJS com Web API.
O template ASP.NET Single Page Application(SPA) o ajuda a construir aplicações que incluem interações significativas do lado do cliente, usando HTML 5, CSS 3 e JavaScript. Agora ficou mais fácil do que nunca começar a escrever aplicações web altamente interativas.
A ASP.NET e Web Tools 2.012.2 vem com um novo modelo para a construção de aplicativos de página única, usando knockout.js, AngularJS e ASP.NET Web API.
Uma “Application Single-page” (SPA) é o termo geral para uma aplicação web que carrega uma página HTML e, em seguida, atualiza a página dinamicamente, em vez de carregar novas páginas. Após o carregamento da página inicial, o SPA se comunica com o servidor através de requisições AJAX.
A tecnologia AJAX não é nova, mas hoje existem frameworks JavaScript que tornam mais fácil construir e manter um aplicativo SPA grande e sofisticado. Além disso, o HTML 5 e CSS3 estão tornando mais fácil criar interfaces ricas.
Uma técnica para gerenciar a complexidade de uma SPA é usar um framework que nos ajuda a esconder essa complexidade. Atualmente, existem muitos frameworks JavaScripts do lado cliente como EmberJS, Knockout.js, AngularJS etc. Neste artigo, eu vou usar o AngularJS junto com a ASP .NET para criar uma aplicação SPA com acesso a dados.
Basicamente, vamos incluir o AngularJS em uma aplicação ASP .NET MVC 5 e criar uma API usando os recursos da Web API para fornecer dos dados para o AngularJS consumir. Assim podemos usar os poderosos recursos do AngularJS como o two-way-databinding para exibir e editar os dados além de explorar recursos como controllers, models, modules e services.
Para saber mais sobre o AngularJS leia os artigos do site já publicados e também assista minhas vídeo aulas no Youtube.
Com esse objetivo em mente, vamos ao trabalho.
Recursos usados:
- Visual Studio 2015 Community
- AngularJS
- Web API
- Entity Framework
Nota: Baixe e use a versão Community 2015 do VS. Ela é grátis e equivalente a versão Professional.
Criando a solução no Visual Studio Community 2015
Abra o VS Community 2015 e clique em New Project. Selecione a linguagem Visual C# -> Web e o template ASP .NET Web Application e informe o nome Filmoteca e clique em OK.
Neste projeto, muitas views serão construídas usando arquivos HTML e o cliente irá requisitar dados no formato JSON ao servidor.
Neste cenário, a melhor escolha é usar o template Web API que iremos selecionar na próxima tela:
Observe que o template Web API também inclui o suporte ao ASP .NET MVC, o qual fornece somente a página inicial o que é ideal para o nosso objetivo.
Nota: Não vamos usar autenticação, nem hospedagem na nuvem.
Clicando no botão OK, teremos a solução criada com a estrutura básica do projeto Web API com suporte ao ASP .NET MVC.
Incluindo o AngularJS no projeto
Podemos instalar o AngularJS em nosso projeto das seguintes formas:
- Manualmente – Baixando o pacote no site oficial e incluindo na pasta Scripts do projeto;
- Usar o Nuget Package Manager Console e digitar na linha de comando: Install-Package AngularJS.core;
- Usar o Manage Nuget Packages for Solution no menu Tools e instalar o pacote AngularJS.Core.
Ao final, teremos o pacote Angular.js na pasta Scripts do projeto:
Configurando o banco de dados usando o Entity Framework
O template que usamos para criar a solução não inclui o Entity Framework de forma que teremos que incluir esse recurso usando o Nuget.
No menu Tools, clique em Nuget Package Manager -> Package Manager Console e, a seguir, na janela do console, digite: Install-Package EntityFramework
Vamos usar o Entity Framework para armazenar as informações no SQL Server.
Quais informações? Vamos criar uma classe chamada Filme na pasta Models do projeto e esta classe irá representar o nosso domínio armazenando informações sobre filmes.
Definindo o domínio: a classe Filme e o contexto
Clique com o botão direito do mouse sobre a pasta Models e, a seguir, clique em Add-> Class.
Informe o nome Filme e digite o código abaixo nesta classe:
public class Filme
{
public int Id { get; set; }
public string Titulo { get; set; }
public int AnoLancamento { get; set; }
public int Duracao { get; set; }
}
Precisamos criar uma classe que representa o nosso contexto e que vai derivar da classe DbContext onde temos uma propriedade tipadaDbSet para adicionar, deletar e consultar os objetos filmes.
Repita o procedimento anterior e crie a classe FilmeDb na pasta Models com o seguinte código:
using System.Data.Entity;
namespace Filmoteca.Models
{
public class FilmeDb : DbContext
{
public DbSet<Filme> Filmes { get; set; }
}
}
Observe que precisamos usar o namespace System.Data.Entity.
Habilitando o Migrations em nosso projeto
Vamos, agora, habilitar o migrations do Entity Framework em nosso projeto.
No menu Tools, clique em Nuget Package Manager -> Package Manager Console. Depois, na janela do console, digite: Enable-Migrations
O Migrations permite o gerenciamento do esquema do banco de dados, possibilitando alterações no esquema. Mas nesse artigo iremos usar o Migrations apenas para alimentar o banco de dados com dados inicial.
Ao final do processo, será criada uma pasta chamada Migrations no projeto contendo o arquivo configuration.cs. Este arquivo contém uma classe e o método Seed que vamos usar para preencher com dados iniciais o nosso banco de dados.
Vamos adicionar o código abaixo nesta classe, removendo o código gerado por padrão, para alimentar nosso banco de dados com informações de cinco objetos filme:
namespace Filmoteca.Migrations
{
using System.Data.Entity.Migrations;
using Filmoteca.Models;
internal sealed class Configuration : DbMigrationsConfiguration<Filmoteca.Models.FilmeDb>
{
public Configuration()
{
AutomaticMigrationsEnabled = true;
}
protected override void Seed(FilmeDb context)
{
// This method will be called after migrating to the latest version.
// You can use the DbSet<T>.AddOrUpdate() helper extension method
// to avoid creating duplicate seed data. E.g.
context.Filmes.AddOrUpdate(
p => p.Titulo,
new Filme { Titulo = "Star Wars", AnoLancamento = 2016, Duracao = 170 },
new Filme { Titulo = "Casino Royale ", AnoLancamento = 2006, Duracao = 121 },
new Filme { Titulo = "Riddick", AnoLancamento = 2004, Duracao = 130 },
new Filme { Titulo = "Identidade Bourne", AnoLancamento = 2002, Duracao = 110 },
new Filme { Titulo = "A Ilha", AnoLancamento = 2005, Duracao = 135 }
);
}
}
}
Observação: Os dados são fictícios.
Observe que também habilitamos a migração automática para realizar o processo de adicionar novos recursos definindo no AutomaticMigrationsEnabled = true; construtor da classe.
Com esses ajustes, já podemos criar o nosso banco de dados usando o Package Manager Console e digitando o comando: Update-Database.
Dessa forma, já temos o nosso banco de dados criado e podemos prosseguir para a próxima etapa; mas antes, vamos confirmar a criação do banco de dados e verificar os dados que foram incluídos.
Abrindo o SQL Server podemos ver o banco de dados Filmoteca.Models.FilmeDb criado e a tabela Filmes exibindo os cinco filmes incluídos:
Na próxima parte do artigo iremos criar a Web API.


















