Slides do minicurso de ASP.NET MVC 3 ministrado por Vinicius Quaiato na GlobalCode.
O ninicurso mostra as novidades do ASP.NET MVC: Razor, WebHelpers, IDependencyResolver, dynamic ViewModel, Global Filters, Output cache, etc.
6. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com
O que é ASP.NET?
• Framework web
• Free
• Roda em cima do .NET
• Utiliza-se C# ou VB.NET
• Independe de Browser
• Aplicações rodam no IIS
7. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com
O que é ASP.NET?
• Conjunto de componentes
• Possibilita escolha de componentes
– Terceiros
– Microsoft
• Possui uma enorme comunidade
• Milhares de aplicações
• Não é o mesmo que WebForms!
9. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com
O que é ASP.NET MVC?
• Parte do ASP.NET
• Uma forma de programar ASP.NET
• Um framework
– Classes
– Componentes
– Templates de projeto
10. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
O que é ASP.NET MVC?
• Framework que implementa padrão MVC
• MVC é um padrão arquitetural
– Não é apenas uma tecnologia
12. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
WebForms é ruim?
• Depende!
• Uma plataforma madura
• Possui cerca de 10 anos de mercado
• Fornece uma vasta variedade de
controles
• Trabalha com o modelo de Forms comum
aos desenvolvedores desktop
13. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
WebForms é ruim?
• Ciclo de vida muito complexo
• Dificuldade em testar
• Difícil separar lógica de domínio de lógica
de interface
• Difícil controlar a saída para o browser
• Difícil trabalhar com Ajax
• MS Ajax é muito ruim
16. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
WebForms é ruim?
• Há quem consiga trabalhar bem com ele
• Há quem consiga fazer bons projetos
• Há quem esteja acostumado com ele
23. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Por que usar ASP.NET MVC?
• Padrão de arquitetura
• Framework possibilita SoC
– Separação de conceitos/resposabilidades
– Maior coesão
– Maior clareza
– Facilidade no desenvolvimento
24. Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Por que usar ASP.NET MVC?
• Permite o trabalho com TDD
– É tudo testável!
• Você tem controle do HTML gerado
• Lógica de negócios não se mistura com
lógica de interface
26. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Projetos simples não devem usar MVC
27. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Projetos simples não devem usar MVC
Mentira!
28. Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• A equipe não conhece o ASP.NET MVC
29. Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• A equipe não conhece o ASP.NET MVC
Mentira!
30. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Precisar de controles prontos
31. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Precisar de controles prontos
Mentira!
32. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Precisar trabalhar com AJAX
33. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Precisar trabalhar com AJAX
Mentira!
34. Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Meu projeto já é WebForms
35. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Meu projeto já é WebForms
Verdade!
36. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Preciso de um framework maduro
37. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Preciso de um framework maduro
Mentira!
38. Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Precisar de mais profissionais do mercado
39. Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Precisar de mais profissionais do mercado
Mentira!
40. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Preciso fazer meu projeto rápido
41. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Preciso fazer meu projeto rápido
Mentira!
42. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando usar ASP.NET MVC?
• Então...
• ...use ASP.NET MVC em todas as
situações anteriores!
43. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Qual usar?
• ASP.NET MVC 1?
• ASP.NET MVC 2?
• ASP.NET MVC 3?
47. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Razor
• View Engine
• Uma forma de criar as Views
• Não é uma nova linguagem
– Usa-se C# ou VB
• Criado para facilitar o trabalho com as
views
• Transição de HTML para server side
quase transparente
• Ele é muito inteligente
48. Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Razor
• Objetivo é facilitar
• Chega de <% %>
• Agora é simplesmente @
• Conhece HTML e conhece C#/VB
• Agora no Release Candidate há
colorização e intellisense
49. Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Primeiro contato com Razor
50. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Razor
• Podemos trabalhar com statements
– Condicionais
– Declarações de variáveis
– Multi line statements
– Mesclar HTML + server code
• Sim, o Razor é inteligente demais!
51. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Conhecendo a sintaxe do Razor
52. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Razor
• A idéia é facilitar o uso com o Razor:
– Helpers
– Functions
• Helpers no geral são código server side
que produz código HTML
• Functions são métodos não não possuem
output HTML
53. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Escrevendo Helpers com Razor
• Escrevendo functions com Razor
54. Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Razor
• Facilidades na criação de templates
• Não é necessário trabalhar com
MasterPages
• Criam-se páginas de layout e sections
– As sections são customizadas
56. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Razor
• Possibilidade de executar código da View
antes de carregar
• Ajuda a manter algumas coisas em um
único ponto
• Mantém o DRY
58. Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Dynamic ViewModel
• Facilidade no acesso e manipulação do
ViewData
• Utiliza recursos de programação dinâmica
do .NET 4
• Funciona tanto do lado do controller
quanto da view
• Mantém o código mais legível
61. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
WebHelpers
• Helpers criados para facilitar algumas
ativiades:
– Envio de emails
– Criação e exibição de charts
– Criação e manipulação de dados tabulares
(grid)
– Anti forgery
– Criptografia
– Json
– E outros.
62. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
WebHelpers
• A idéia é facilitar
• Reaproveitar o trabalho
• Se preocupar mais com o negócio do que
com a tecnologia
• Utilizar o poder do framework
66. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Global Filters
• Filtros definidos para controllers
• Aplica-se de forma global a todos os
controllers
• Conseguem fazer a interceptação das
actions
• Conseguem executar atividades em
momentos chave
• Mantém o DRY
68. Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
IDependencyResolver
• Uma forma simples de resolver
dependências
• Tudo via configuração
• TDD fica mais simples
• Responsabilidades ficam separadas
• Só é necessário informar quem sabe
resolver as coisas
70. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
ASP.NET MVC 3 RC
• Suporte a controle de session state dos
controllers
• Output cache para child actions
• Colorização e intellisense do Razor
• Novos atributos de validação
– Compare
– Remote
71. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Sessionless controllers
• HTTP é stateless, não mantém estado
• Ajuda evitar uso descabível se sessions
• Sessões não são para passar parâmetros
• Sessões não são “banco de dados”
• Session não é thread safe
– Múltiplos requests do mesmo user criarão
uma fila
– Sessionless permite processar em paralelo
73. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Output cache
• Já existe no ASP.NET
• A novidade é output cache para child
actions
• Faz cache da action e não de toda uma
view
• Granular
– Pode variar por parâmetros
– Facilmente configurável com atributtes