Renato Groffe
Agosto/2015
 Mais de 15 anos de experiência na área de Tecnologia
 Pós-graduação em Engenharia de Software – ênfase em
SOA
 MBA em Business Intelligence
 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
 Página no Facebook
https://www.facebook.com/RenatoGroffeSW
 Perfil no Facebook
https://www.facebook.com/renatogroff
 LinkedIn
http://br.linkedin.com/in/renatogroffe
 Microsoft Visual Studio Community 2015
 ASP.NET 5 (Beta 5)
 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, Gulp e Bower
 Reusabilidade com View Components
 Simplificando a codificação de Views com Tag Helpers
 O novo mecanismo de cache do ASP.NET 5
 Melhoramentos na IDE (debug de expressões lambda,
IntelliTest, NuGet reformulado, dentre outras funcionalidades)
 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
 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
 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 uso de
um processo 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
 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, Gulp e Bower
 View Components
 Tag Helpers
 Um novo mecanismo de cache
 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
 Visual Studio Code → editor de código que representa
uma alternativa para o desenvolvimento em Linux e Mac
 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
 Templates disponíveis:
 A indicação de quais componentes serão utilizados
acontece nos métodos ConfigureServices e Configure da
classe Startup
 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
 Exemplo
 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
 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
 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
 Exemplo - Interfaces
 Exemplo - Implementações
 Exemplo – Definindo os mapeamentos no método ConfigureServices
 Configurando as dependências em um Controller (construtor + atributo FromServices)
 Configurando as dependências em uma View (cláusula @inject)
 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.Configuration) 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
 Exemplo – Configurando o uso de IConfiguration no método ConfigureServices
 Exemplo – arquivo config.json com alguns itens de configuração
 Exemplo - Utilizando IConfiguration em um Controller
 Exemplo - Utilizando IConfiguration em uma View
 Bower → gerenciador empregado na instalação e
restauração de pacotes client-side (arquivos CSS e de
scripts)
 Gulp → 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 Gulp serão executadas
 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
 Arquivo bower.json → dependências de pacotes client-side controladas por meio da
ferramenta Bower (exemplo de inclusão da biblioteca Open Weather)
 Plugin Open Weather incluído no projeto
 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
 Estrutura de um ViewComponent (classe na pasta Components +
View Default.cshtml em ViewsSharedComponents)
 Exemplo – Classe que implementa um View Component (derivada
do tipo básico ViewComponent)
 Exemplo – View Default.cshtml (parte das funcionalidades)
 Exemplo – Consumindo o View Component ClimaCidade
 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
 Exemplo – Utilizando uma Tag Helper em uma View
 3 possibilidades
◦ Uso de instância da interface IMemoryCache
(namespace Microsoft.Framework.Caching.Memory)
◦ A tag cache em Views MVC 6
◦ O atributo ResponseCache
 Interface IMemoryCache – configurando a utilização
 Interface IMemoryCache – manipulando cache
 A tag cache em Views MVC 6
 O atributo ResponseCache vinculado a uma Action
Dúvidas, sugestões???
 ASP.NET 5 Documentation
http://docs.asp.net/en/latest/
 ASP.NET 5 Schedule and Roadmap
https://github.com/aspnet/Home/wiki/Roadmap
 Exemplos Práticos
https://gallery.technet.microsoft.com/ASPNET-5-Exemplos-
42e5645e
Obrigado!!!

ASP.NET 5 - Novidades do Desenvolvimento Web em .NET (Agosto/2015)

  • 1.
  • 2.
     Mais de15 anos de experiência na área de Tecnologia  Pós-graduação em Engenharia de Software – ênfase em SOA  MBA em Business Intelligence  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
  • 3.
     Página noFacebook https://www.facebook.com/RenatoGroffeSW  Perfil no Facebook https://www.facebook.com/renatogroff  LinkedIn http://br.linkedin.com/in/renatogroffe
  • 4.
     Microsoft VisualStudio Community 2015  ASP.NET 5 (Beta 5)
  • 5.
     Visual Studio2015 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, Gulp e Bower  Reusabilidade com View Components  Simplificando a codificação de Views com Tag Helpers  O novo mecanismo de cache do ASP.NET 5
  • 6.
     Melhoramentos naIDE (debug de expressões lambda, IntelliTest, NuGet reformulado, dentre outras funcionalidades)  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
  • 8.
     Possibilidade dedesenvolvimento 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
  • 9.
     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 uso de um processo 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
  • 10.
     Mecanismo nativopara injeção de dependências  Modificações na forma como itens de configuração são manipulados  Gerenciamento de pacotes client-side com npm, Gulp e Bower  View Components  Tag Helpers  Um novo mecanismo de cache
  • 11.
     2 runtimespossí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
  • 12.
     Visual StudioCode → editor de código que representa uma alternativa para o desenvolvimento em Linux e Mac
  • 13.
     3 novostipos 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
  • 15.
  • 17.
     A indicaçãode quais componentes serão utilizados acontece nos métodos ConfigureServices e Configure da classe Startup  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
  • 18.
  • 19.
     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
  • 20.
     Injeção deDependê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
  • 21.
     Versões anterioresdo 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
  • 22.
     Exemplo -Interfaces
  • 23.
     Exemplo -Implementações
  • 24.
     Exemplo –Definindo os mapeamentos no método ConfigureServices
  • 25.
     Configurando asdependências em um Controller (construtor + atributo FromServices)
  • 26.
     Configurando asdependências em uma View (cláusula @inject)
  • 27.
     O arquivoWeb.config e a classe ConfigurationManager (namespace System.Configuration) não estão mais disponíveis  Uma implementação da interface IConfiguration (namespace Microsoft.Framework.Configuration) 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
  • 28.
     Exemplo –Configurando o uso de IConfiguration no método ConfigureServices
  • 29.
     Exemplo –arquivo config.json com alguns itens de configuração
  • 30.
     Exemplo -Utilizando IConfiguration em um Controller
  • 31.
     Exemplo -Utilizando IConfiguration em uma View
  • 32.
     Bower →gerenciador empregado na instalação e restauração de pacotes client-side (arquivos CSS e de scripts)  Gulp → 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 Gulp serão executadas
  • 33.
     Tarefas doprocesso 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
  • 34.
     Arquivo bower.json→ dependências de pacotes client-side controladas por meio da ferramenta Bower (exemplo de inclusão da biblioteca Open Weather)
  • 35.
     Plugin OpenWeather incluído no projeto
  • 36.
     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
  • 37.
     Estrutura deum ViewComponent (classe na pasta Components + View Default.cshtml em ViewsSharedComponents)
  • 38.
     Exemplo –Classe que implementa um View Component (derivada do tipo básico ViewComponent)
  • 39.
     Exemplo –View Default.cshtml (parte das funcionalidades)
  • 40.
     Exemplo –Consumindo o View Component ClimaCidade
  • 41.
     Alternativa aouso 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
  • 42.
     Exemplo –Utilizando uma Tag Helper em uma View
  • 43.
     3 possibilidades ◦Uso de instância da interface IMemoryCache (namespace Microsoft.Framework.Caching.Memory) ◦ A tag cache em Views MVC 6 ◦ O atributo ResponseCache
  • 44.
     Interface IMemoryCache– configurando a utilização
  • 45.
     Interface IMemoryCache– manipulando cache
  • 46.
     A tagcache em Views MVC 6
  • 47.
     O atributoResponseCache vinculado a uma Action
  • 48.
  • 49.
     ASP.NET 5Documentation http://docs.asp.net/en/latest/  ASP.NET 5 Schedule and Roadmap https://github.com/aspnet/Home/wiki/Roadmap  Exemplos Práticos https://gallery.technet.microsoft.com/ASPNET-5-Exemplos- 42e5645e
  • 50.