Curso ASP.NET MVC 3 - Vinicius Quaiato

78
Globalcode – open4education Vinicius Quaiato @vquaiato http://viniciusquaiato.com ASP.NET MVC 3 Mais poder no ASP.NET MVC

description

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.

Transcript of Curso ASP.NET MVC 3 - Vinicius Quaiato

Page 1: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

ASP.NET MVC 3Mais poder no ASP.NET MVC

Page 2: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education2 Vinicius 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

Page 3: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Contact: me

• http://viniciusquaiato.com

[email protected]– msn e gtalk

• @vquaiato

Page 4: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Lambda3

• Parceria

• http://lambda3.com.br

Page 5: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Objetivos

Page 6: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education6 Vinicius 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

Page 7: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education7 Vinicius 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!

Page 8: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

O que é ASP.NET?

Page 9: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education9 Vinicius 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

Page 10: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education10 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

Page 11: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education11 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

O que é ASP.NET MVC?

Page 12: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education12 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

Page 13: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education13 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

Page 14: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education14 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Page 15: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education15 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

ASP.NET Page life cycle

Page 16: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education16 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

Page 17: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education17 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Page 18: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education18 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Page 19: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education19 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Page 20: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education20 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

• Então...

Page 21: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education21 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Não precisa ser tão complicado!

Page 22: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education22 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

ASP.NET MVC é cool!

Page 23: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education23 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

Page 24: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education24 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

Page 25: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education25 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Quando usar MVC?

• Sempre?!

Page 26: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education26 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Quando não usar MVC?

• Projetos simples não devem usar MVC

Page 27: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education27 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Quando não usar MVC?

• Projetos simples não devem usar MVC

Mentira!

Page 28: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education28 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Quando não usar MVC?

• A equipe não conhece o ASP.NET MVC

Page 29: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education29 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Quando não usar MVC?

• A equipe não conhece o ASP.NET MVC

Mentira!

Page 30: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education30 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Quando não usar MVC?

• Precisar de controles prontos

Page 31: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education31 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Quando não usar MVC?

• Precisar de controles prontos

Mentira!

Page 32: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education32 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Quando não usar MVC?

• Precisar trabalhar com AJAX

Page 33: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education33 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Quando não usar MVC?

• Precisar trabalhar com AJAX

Mentira!

Page 34: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education34 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Quando não usar MVC?

• Meu projeto já é WebForms

Page 35: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education35 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Quando não usar MVC?

• Meu projeto já é WebForms

Verdade!

Page 36: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education36 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Quando não usar MVC?

• Preciso de um framework maduro

Page 37: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education37 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Quando não usar MVC?

• Preciso de um framework maduro

Mentira!

Page 38: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education38 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Quando não usar MVC?

• Precisar de mais profissionais do mercado

Page 39: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education39 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Quando não usar MVC?

• Precisar de mais profissionais do mercado

Mentira!

Page 40: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education40 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Quando não usar MVC?

• Preciso fazer meu projeto rápido

Page 41: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education41 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Quando não usar MVC?

• Preciso fazer meu projeto rápido

Mentira!

Page 42: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education42 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Quando usar ASP.NET MVC?

• Então...

• ...use ASP.NET MVC em todas as situações anteriores!

Page 43: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education43 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Qual usar?

• ASP.NET MVC 1?

• ASP.NET MVC 2?

• ASP.NET MVC 3?

Page 44: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education44 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

ASP.NET

mvc 3

Page 45: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education45 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

O que há de novo no MVC 3?

Page 46: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education46 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Razor

Page 47: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education47 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

Page 48: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education48 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

Page 49: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education49 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Demo

• Primeiro contato com Razor

Page 50: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education50 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!

Page 51: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education51 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Demo

• Conhecendo a sintaxe do Razor

Page 52: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education52 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

Page 53: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education53 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Demo

• Escrevendo Helpers com Razor

• Escrevendo functions com Razor

Page 54: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education54 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

Page 55: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education55 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Demo

• Layout Pages com Razor

Page 56: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education56 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

Page 57: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education57 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Demo

• Mantendo DRY com _ViewStart.cshtml

Page 58: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education58 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

Page 59: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education59 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Dynamic ViewModel

Page 60: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education60 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Demo

• Usando Dynamic ViewModels

Page 61: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education61 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.

Page 62: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education62 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

Page 63: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education63 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Demo

• WebChart, WebMail e WebGrid helpers

Page 64: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education64 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

Page 65: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education65 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Demo

• Usando os novos ActionResult types

Page 66: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education66 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

Page 67: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education67 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Demo

• Utilizando Global Filters

Page 68: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education68 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

Page 69: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education69 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Demo

• Simplificando com IDependencyResolver

Page 70: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education70 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

Page 71: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education71 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

Page 72: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education72 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Demo

• Trabalhando com sessionless controllers

Page 73: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education73 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

Page 74: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education74 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Demo

• Usando output cache para child actions

Page 75: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education75 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

O que faltou?

• JavaScript/JQuery não obstrusivo

• Atributos de validação

• Request Validations

• IViewActivator e IControllerActivator

Page 76: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education76 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

• Muito obrigado!

Page 77: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education77 Vinicius Quaiato @vquaiato http://viniciusquaiato.com

Contact: me

• http://viniciusquaiato.com

[email protected]– msn e gtalk

• @vquaiato

Page 78: Curso ASP.NET MVC 3 - Vinicius Quaiato

Globalcode – open4education78 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/