ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

55
ASP.NET 5 – Novidades do Desenvolvimento Web em .NET Renato Groffe Junho/2015

Transcript of ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

Page 1: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Novidades do Desenvolvimento Web em .NET

Renato GroffeJunho/2015

Page 2: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

Apresentação – Renato Groffe

Mais de 15 anos de experiência na área de Tecnologia

Pós-graduação em Engenharia de Software – ênfase em SOA

Cursando MBA em Business Intelligence (FIAP)

Graduação em Sistemas de Informação

Técnico em Processamento de Dados

MTAC (Microsoft Technical Audience Contributor), MCP, Microsoft Specialist, MCTS, OCA, ITIL, COBIT

Page 3: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

Contatos Página no Facebook

https://www.facebook.com/RenatoGroffeSW

Perfil no Facebookhttps://www.facebook.com/renatogroff

LinkedInhttp://br.linkedin.com/in/renatogroffe

Page 4: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

Recursos Utilizados Visual Studio 2015 Release Candidate

ASP.NET 5

Page 5: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

Visual Studio 2015 e as novidades da plataforma .NET

ASP.NET 5: uma visão geral

Um novo mecanismo nativo para injeção de dependências

Itens de configuração no ASP.NET 5

Gerenciamento de pacotes client-side com npm, Grunt e Bower

Reusabilidade com View Components

Simplificando a codificação de Views com Tag Helpers

Agenda

Page 6: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

Visual Studio 2015 e as novidades da plataforma .NET

Melhoramentos na IDE (debug de expressões lambda, IntelliTest, NuGet reformulado, dentre outras funcionalidades) → Release Candidate (versão mais atual - Junho/2015)

C# 6.0 → nova versão da linguagem, com melhorias visando simplificar o desenvolvimento de soluções

Novo compilador (Roslyn)

Boa parte da plataforma .NET é agora open source, estando hospedada no GitHub

ASP.NET 5 → plataforma Web totalmente reformulada

Page 7: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5: uma visão geral

Possibilidade de desenvolvimento de soluções multiplataforma

Novos tipos de projetos

Mudanças na forma como os projetos encontram-se estruturados no Visual Studio

Arquitetura mais enxuta e modular → a biblioteca System.Web.dll não será mais utilizada

MVC 6 → modelo de programação Web unificado, combinando MVC e Web API em um único framework

Page 8: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5: uma visão geral

Compilação dinâmica

◦ Mudanças podem ser realizadas a partir do Visual Studio, com a aplicação em execução

◦ Não há necessidade de recompilar o projeto para as modificações surtirem efeito

Possibilidade de hospedagem no IIS ou, até mesmo, de implementação de um projeto que cuide disto

A geração de projetos sob a forma de dlls deu lugar a módulos que seguem os padrões de pacotes do utilitário NuGet

Page 9: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5: uma visão geral

Mecanismo nativo para injeção de dependências

Modificações na forma como itens de configuração são manipulados

Gerenciamento de pacotes client-side com npm, Grunt e Bower

View Components

Tag Helpers

Page 10: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Desenvolvimento Multiplataforma

2 runtimes possíveis para a execução de aplicações → .NET Core e .NET Framework

.NET Core◦ Versão mais enxuta (apenas recursos realmente necessários)◦ Suporte a ambientes Windows, Linux e Mac OS X◦ Deploy de soluções com os packages que formam este runtime →

mudanças no .NET Framework de um servidor não afetarão aplicações que empregam esta alternativa

.NET Framework◦ Versão mais completa que a anterior, com acesso total às APIs

do .NET Framework

Page 11: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Desenvolvimento Multiplataforma

Visual Studio Code → editor de código que representa uma alternativa para o desenvolvimento em Linux e Mac

Page 12: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Novos Tipos de Projetos

3 novos tipos de projetos:

◦ ASP.NET Web Application

◦ Class Library (Package)

◦ Console Application (Package)

Todos estes templates são baseados na utilização de recursos do ASP.NET 5

Os compiláveis seguem a estrutura de um package do NuGet

Page 13: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Novos Tipos de Projetos

Page 14: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Novos Tipos de Projetos

Templates disponíveis:

Page 15: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Estrutura Básica de um Projeto

Page 16: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Arquitetura Modular

A indicação de quais componentes serão utilizados acontece nos métodos ConfigureServices e Configure da classe Startup (um equivalente do antigo Global.asax)

A biblioteca System.Web.dll não está mais disponível para projetos ASP.NET 5

A especificação apenas de recursos realmente necessários contribui para uma melhor performance da aplicação

Page 17: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Arquitetura Modular Exemplo

Page 18: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Modelo de Programação Web Unificado

Classe Controller (namespace Microsoft.AspNet.Mvc) → mesma base para a implementação de soluções MVC e Web API

Exemplo de implementação de um serviço Web API

Page 19: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Injeção de Dependências

Injeção de Dependências – Benefícios

◦ Favorece um menor acoplamento entre as partes de um sistema

◦ Priorização do uso de interfaces

◦ Flexibilidade diante da necessidade de mudanças

Page 20: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Injeção de Dependências

Versões anteriores do ASP.NET dependiam do uso de algum container para a injeção de dependências

◦ Unity, Ninject, Autofac e Spring.NET eram algumas das alternativas

O ASP.NET 5 conta agora com um novo mecanismo nativo, de forma a simplificar o uso de técnicas de injeção de dependências

Page 21: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Injeção de Dependências

Exemplo - Interfaces

Page 22: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Injeção de Dependências

Exemplo - Implementações

Page 23: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Injeção de Dependências

Exemplo – Definindo os mapeamentos no método ConfigureServices

Page 24: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Injeção de Dependências

Configurando as dependências em um Controller (construtor + atributo FromServices)

Page 25: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Injeção de Dependências

Configurando as dependências em uma View (cláusula @inject)

Page 26: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Itens de configuração

O arquivo Web.config e a classe ConfigurationManager (namespace System.Configuration) não estão mais disponíveis

Uma implementação da interface IConfiguration (namespace Microsoft.Framework.ConfigurationModel) deverá ser utilizada para acesso às configurações◦ O acesso a esta referência será feito via injeção de dependência

Por default, as configurações de um projeto são declaradas no arquivo config.json◦ Outros arquivos no formato JSON podem ser adicionados◦ Também é possível o uso de arquivos .ini ou variáveis de sistema

Page 27: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Itens de configuração Exemplo – Configurando o uso de IConfiguration no método ConfigureServices

Page 28: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Itens de configuração Exemplo – arquivo config.json com alguns itens de configuração

Page 29: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Itens de configuração

Exemplo - Utilizando IConfiguration em um Controller

Page 30: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Itens de configuração

Exemplo - Utilizando IConfiguration em uma View

Page 31: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Gerenciamento de pacotes client-side com npm, Grunt e Bower

Bower → gerenciador empregado na instalação e restauração de pacotes client-side (arquivos CSS e de scripts)

Grunt → automação de tarefas envolvendo manipulação de pacotes client-side, por meio de arquivos de instruções com uma sintaxe baseada em JavaScript

npm (Node Package Manager) → ambiente a partir do qual outras ferramentas como Bower e Grunt serão executadas

Page 32: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Gerenciamento de pacotes client-side com npm, Grunt e Bower

Tarefas do processo de build envolvendo scripts

◦ Bundling → combinação de arquivos em uma simples unidade, de forma a minimizar a quantidade de requisições HTTP enviadas ao servidor

◦ Minification → eliminação em tempo de execução de itens desnecessários (espaços, comentários) em arquivos CSS e de scripts

◦ Determinar qual versão de um pacote client-server será utilizada

◦ Possibilidade de uso de ferramentas para verificação automática de código JavaScript (como JSHint e JSLint)

◦ Uso de pré-processadores como LESS e SASS → viabilizam a utilização de variáveis, funções e mixins (agrupamentos de propriedades) em folhas de estilo

Page 33: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Gerenciamento de pacotes client-side com npm, Grunt e Bower Arquivo bower.json → dependências de pacotes client-side controladas por meio da

ferramenta Bower (exemplo de inclusão da biblioteca Open Weather)

Page 34: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Gerenciamento de pacotes client-side com npm, Grunt e Bower

Plugin Open Weather ainda não instalado

Page 35: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Gerenciamento de pacotes client-side com npm, Grunt e Bower

Acessando o Task Runner Explorer

Page 36: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Gerenciamento de pacotes client-side com npm, Grunt e Bower

Executando as tarefas para a ferramenta Bower

Page 37: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Gerenciamento de pacotes client-side com npm, Grunt e Bower

Resultado da execução das tarefas no Task Runner Explorer

Page 38: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Gerenciamento de pacotes client-side com npm, Grunt e Bower

Plugin Open Weather já instalado

Page 39: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Reusabilidade com View Components

Não é mais possível o uso de Partial Views no ASP.NET 5

Disponibilizado agora um novo recurso conhecido como View Component

◦ Favorece o reuso

◦ Dispensa a codificação de um novo Controller, com uma Action relacionada ao processamento de um item

◦ Possibilita a inserção de conteúdo em pontos específicos das páginas de uma aplicação

Page 40: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Reusabilidade com View Components

Estrutura de um ViewComponent (classe na pasta Components + View Default.cshtml em \Views\Shared\Components)

Page 41: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Reusabilidade com View Components

Exemplo – Classe que implementa um View Component (derivada do tipo básico ViewComponent)

Page 42: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Reusabilidade com View Components

Exemplo – View Default.cshtml (parte das funcionalidades)

Page 43: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Reusabilidade com View Components

Exemplo – Consumindo o View Component ClimaCidade

Page 44: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Reusabilidade com View Components

Exemplo – View Component assíncrono

Page 45: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Reusabilidade com View Components

Exemplo – Arquivo Default.cshtml (View Component assíncrono)

Page 46: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Reusabilidade com View Components

Exemplo – Consumindo o View Component assíncrono

Page 47: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Tag Helpers

Alternativa ao uso de HTML Helpers convencionais, visando simplificar a codificação de Views

Faz uso de uma sintaxe similar àquela empregada em código HTML padrão

Page 48: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Tag Helpers

Exemplo – Ativando o uso de Tag Helpers (NuGet)

Page 49: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Tag Helpers

Exemplo – Selecionando o package necessário

Page 50: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Tag Helpers

Exemplo – Package Microsoft.AspNet.Mvc.TagHelpers instalado

Page 51: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Tag Helpers

Exemplo – Modificando a View _ViewStart.cshtml para possibilitar o uso de Tag Helpers (cláusula @addtaghelper)

Page 52: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

ASP.NET 5 – Tag Helpers

Exemplo – Utilizando uma Tag Helper em uma View

Page 53: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

Dúvidas, sugestões???

Page 54: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

Referências ASP.NET 5 Documentation

http://docs.asp.net/en/latest/

Gerenciando bibliotecas de scripts no Visual Studio 2015http://www.devmedia.com.br/gerenciando-bibliotecas-de-scripts-no-visual-studio-2015/31869

O novo mecanismo de Cache do ASP.NET 5http://netcoders.com.br/blog/asp-net-5-cache/

O novo mecanismo de Injeção de Dependências do ASP.NET 5http://netcoders.com.br/blog/asp-net-5-injecao-dependencias/

Visual Studio 2015: Implementando uma aplicação ASP.NET MVC 6http://www.devmedia.com.br/visual-studio-2015-implementando-uma-aplicacao-asp-net-mvc-6/32265

Visual Studio 2015: Implementando uma aplicação Web APIhttp://social.technet.microsoft.com/wiki/pt-br/contents/articles/30528.visual-studio-2015-implementando-uma-aplicacao-web-api.aspx

Visual Studio Code: criando um projeto MVC 6http://social.technet.microsoft.com/wiki/pt-br/contents/articles/30967.visual-studio-code-criando-um-projeto-mvc-6.aspx

Page 55: ASP.NET 5 - Novidades do Desenvolvimento Web em .NET

Obrigado!!!