Curso ASP.NET MVC 3 - Vinicius Quaiato

10,796
-1

Published on

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.

Published in: Technology

Curso ASP.NET MVC 3 - Vinicius Quaiato

  1. 1. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com ASP.NET MVC 3 Mais poder no ASP.NET MVC
  2. 2. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com About: Vinicius Quaiato • Arquitetura e desenvolvimento • Apaixonado pelo que faz • Apaixonado por MVC • .NET Architects • .NET Magazine • Vegetariano • Pai • Santista • Geek
  3. 3. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com Contact: me • http://viniciusquaiato.com • vinicius.quaiato@gmail.com – msn e gtalk • @vquaiato
  4. 4. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com Lambda3 • Parceria • http://lambda3.com.br
  5. 5. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com Objetivos
  6. 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. 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!
  8. 8. Globalcode – open4educationVinicius Quaiato @vquaiato http://viniciusquaiato.com O que é ASP.NET?
  9. 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. 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
  11. 11. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com O que é ASP.NET MVC?
  12. 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. 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
  14. 14. Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
  15. 15. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com ASP.NET Page life cycle
  16. 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
  17. 17. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
  18. 18. Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
  19. 19. Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
  20. 20. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com • Então...
  21. 21. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Não precisa ser tão complicado!
  22. 22. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com ASP.NET MVC é cool!
  23. 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. 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
  25. 25. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Quando usar MVC? • Sempre?!
  26. 26. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Quando não usar MVC? • Projetos simples não devem usar MVC
  27. 27. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Quando não usar MVC? • Projetos simples não devem usar MVC Mentira!
  28. 28. Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Quando não usar MVC? • A equipe não conhece o ASP.NET MVC
  29. 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. 30. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Quando não usar MVC? • Precisar de controles prontos
  31. 31. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Quando não usar MVC? • Precisar de controles prontos Mentira!
  32. 32. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Quando não usar MVC? • Precisar trabalhar com AJAX
  33. 33. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Quando não usar MVC? • Precisar trabalhar com AJAX Mentira!
  34. 34. Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Quando não usar MVC? • Meu projeto já é WebForms
  35. 35. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Quando não usar MVC? • Meu projeto já é WebForms Verdade!
  36. 36. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Quando não usar MVC? • Preciso de um framework maduro
  37. 37. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Quando não usar MVC? • Preciso de um framework maduro Mentira!
  38. 38. Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Quando não usar MVC? • Precisar de mais profissionais do mercado
  39. 39. Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Quando não usar MVC? • Precisar de mais profissionais do mercado Mentira!
  40. 40. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Quando não usar MVC? • Preciso fazer meu projeto rápido
  41. 41. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Quando não usar MVC? • Preciso fazer meu projeto rápido Mentira!
  42. 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. 43. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Qual usar? • ASP.NET MVC 1? • ASP.NET MVC 2? • ASP.NET MVC 3?
  44. 44. Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com ASP.NET mvc 3
  45. 45. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com O que há de novo no MVC 3?
  46. 46. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Razor
  47. 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. 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. 49. Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Primeiro contato com Razor
  50. 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. 51. Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Conhecendo a sintaxe do Razor
  52. 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. 53. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Escrevendo Helpers com Razor • Escrevendo functions com Razor
  54. 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
  55. 55. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Layout Pages com Razor
  56. 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
  57. 57. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Mantendo DRY com _ViewStart.cshtml
  58. 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
  59. 59. Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Dynamic ViewModel
  60. 60. Globalcode – open4education0 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Usando Dynamic ViewModels
  61. 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. 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
  63. 63. Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • WebChart, WebMail e WebGrid helpers
  64. 64. Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com ActionResult types • Dois novos tipos de ActionResult • Retornam status code apropriados • HttpNotFound • HttpStatusCode • Informações importantes para search engines
  65. 65. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Usando os novos ActionResult types
  66. 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
  67. 67. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Utilizando Global Filters
  68. 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
  69. 69. Globalcode – open4education9 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Simplificando com IDependencyResolver
  70. 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. 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
  72. 72. Globalcode – open4education2 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Trabalhando com sessionless controllers
  73. 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
  74. 74. Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Demo • Usando output cache para child actions
  75. 75. Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com O que faltou? • JavaScript/JQuery não obstrusivo • Atributos de validação • Request Validations • IViewActivator e IControllerActivator
  76. 76. Globalcode – open4education6 Vinicius Quaiato @vquaiato http://viniciusquaiato.com • Muito obrigado!
  77. 77. Globalcode – open4education7 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Contact: me • http://viniciusquaiato.com • vinicius.quaiato@gmail.com – msn e gtalk • @vquaiato
  78. 78. Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com Links • http://asp.net/mvc • http://asp.net/mvc/mvc3 • http://weblogs.asp.net/scottgu/ • http://haacked.com/ • http://viniciusquaiato.com/blog/asp-net-mvc-3/
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×