Upload
vinicius-quaiato
View
10.376
Download
4
Embed Size (px)
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.
Citation preview
Globalcode – open4education1 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
ASP.NET MVC 3Mais poder no ASP.NET MVC
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
Globalcode – open4education3 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Contact: me
• http://viniciusquaiato.com
• [email protected]– msn e gtalk
• @vquaiato
Globalcode – open4education4 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Lambda3
• Parceria
• http://lambda3.com.br
Globalcode – open4education5 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Objetivos
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
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!
Globalcode – open4education8 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
O que é ASP.NET?
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
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
Globalcode – open4education11 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
O que é ASP.NET MVC?
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
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
Globalcode – open4education14 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Globalcode – open4education15 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
ASP.NET Page life cycle
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
Globalcode – open4education17 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Globalcode – open4education18 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Globalcode – open4education19 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Globalcode – open4education20 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
• Então...
Globalcode – open4education21 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Não precisa ser tão complicado!
Globalcode – open4education22 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
ASP.NET MVC é cool!
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
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
Globalcode – open4education25 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando usar MVC?
• Sempre?!
Globalcode – open4education26 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Projetos simples não devem usar MVC
Globalcode – open4education27 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Projetos simples não devem usar MVC
Mentira!
Globalcode – open4education28 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• A equipe não conhece o ASP.NET MVC
Globalcode – open4education29 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• A equipe não conhece o ASP.NET MVC
Mentira!
Globalcode – open4education30 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Precisar de controles prontos
Globalcode – open4education31 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Precisar de controles prontos
Mentira!
Globalcode – open4education32 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Precisar trabalhar com AJAX
Globalcode – open4education33 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Precisar trabalhar com AJAX
Mentira!
Globalcode – open4education34 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Meu projeto já é WebForms
Globalcode – open4education35 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Meu projeto já é WebForms
Verdade!
Globalcode – open4education36 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Preciso de um framework maduro
Globalcode – open4education37 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Preciso de um framework maduro
Mentira!
Globalcode – open4education38 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Precisar de mais profissionais do mercado
Globalcode – open4education39 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Precisar de mais profissionais do mercado
Mentira!
Globalcode – open4education40 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Preciso fazer meu projeto rápido
Globalcode – open4education41 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Quando não usar MVC?
• Preciso fazer meu projeto rápido
Mentira!
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!
Globalcode – open4education43 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Qual usar?
• ASP.NET MVC 1?
• ASP.NET MVC 2?
• ASP.NET MVC 3?
Globalcode – open4education44 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
ASP.NET
mvc 3
Globalcode – open4education45 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
O que há de novo no MVC 3?
Globalcode – open4education46 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Razor
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
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
Globalcode – open4education49 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Primeiro contato com Razor
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!
Globalcode – open4education51 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Conhecendo a sintaxe do Razor
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
Globalcode – open4education53 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Escrevendo Helpers com Razor
• Escrevendo functions com Razor
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
Globalcode – open4education55 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Layout Pages com Razor
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
Globalcode – open4education57 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Mantendo DRY com _ViewStart.cshtml
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
Globalcode – open4education59 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Dynamic ViewModel
Globalcode – open4education60 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Usando Dynamic ViewModels
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.
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
Globalcode – open4education63 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• WebChart, WebMail e WebGrid helpers
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
Globalcode – open4education65 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Usando os novos ActionResult types
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
Globalcode – open4education67 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Utilizando Global Filters
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
Globalcode – open4education69 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Simplificando com IDependencyResolver
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
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
Globalcode – open4education72 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Trabalhando com sessionless controllers
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
Globalcode – open4education74 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Demo
• Usando output cache para child actions
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
Globalcode – open4education76 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
• Muito obrigado!
Globalcode – open4education77 Vinicius Quaiato @vquaiato http://viniciusquaiato.com
Contact: me
• http://viniciusquaiato.com
• [email protected]– msn e gtalk
• @vquaiato
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/