asp.net web forms x asp.net mvc
DESCRIPTION
Segunda reunião do DotNetArchitects apresentada por Daniel FerreiraTRANSCRIPT
Web Forms x ASP.NET MVC
Daniel FerreiraEngenheiro de Sistemas @ C.E.S.A.RMSP | MCP | MCTS | MCPD
About me
− Engenheiro de Sistemas C.E.S.A.R (Recife)− Formado em Ciências da Computação pela
UFPE− Mestrando em Bancos de Dados
Geográficos pela UFPE
− Microsoft Student Partner Co-lead (N/NE)− MCTS ASP.NET, MCTS WPF, MCPD ASP.NET
− Contato: [email protected]
Agenda
− Entendendo o Web Forms− Vantagens e Desvantagens do WF− O padrão MVC− O ASP.NET MVC Framework− Comparativos− Conclusões
Entendendo os Web Forms
− Primeiro framework de desenvolvimento web com ASP.NET
− Existe desde 2001/2002− Rapidamente tomou parte do
mercado, efetivamente matando o ASP 3
− Era a única solução de desenvolvimento web com .NET
Usar esse trecotem vantagens?
Sim, e muito!
− Rápido, realmente RAD− Designer Visual− Controles ricos− Gerenciamento de estado abstraído− Fácil de trabalhar− Migração de Windows Forms para Web
Forms é muito simples− Javascript “escondido”do programador− Fácil integração com o Sharepoint
Mas nem tudosão flores…
Na vida de Joseph Climber
− Difícil controle sobre o HTML gerado− Inicialmente tinha problemas com
standards− É fácil continuar sem standards
− Dificuldade de integração com frameworks javascript
− Arquitetura não estimula a busca de padrões arquiteturais, apesar de suportá-las
− Quase impossível testar GUI
MVC
O padrão MVC
− MVC = Model View Controller− Padrão de arquitetura que separa
lógica de negócio da apresentação
Model
ViewController
O ASP.NET MVC Framework
− O que é:− Implementação do padrão MVC para o
ASP.NET− Um novo template de projeto no Visual
Studio− Uma nova maneira de desenvolver com
ASP.NET− Uma opção
− O que não é:− Um substituto ao Webforms− Uma nova versão dos Webforms
Um novo template…
Dependências
− Um único assembly e namespace:− System.Web.Mvc
− Depende de:− System.Web (2.0)− System.Web (3.0)− System.Web.Extensions (3.5)− System.Web.Abstractions (3.5 SP1)− System.Web.Routing (3.5 SP1)
− Não é parte do SP1 do .NET 3.5/VS 2008
Abstractions
Routing
MVC
http://www.asp.net/mvc
OpenSource!
http://codeplex.com/aspnet
Ciclo de Vida
− A tabela de rotas é criada− O UrlRoutingMode intercepta o
request e determina a rota− O MVC Handler é ativado e cria o
controlador esperado− A ação do controller é executada− Algum dado do modelo é obtido− O método View é chamado e uma
view é criada− A View é renderizada
18
HTML Helpers
ouAntes
Agora
Qualquer umpode usar?
Não é para todos!
− É mais complexo− Exige mais do desenvolvedor− Exige conhecimento de HTML− Exige conhecimento de Javascript,
CSS, etc.− Curva de aprendizado do web forms
elevada.
demo
Devo usar Web Forms ou
MVC??
Web Forms
− Sua aplicação já está concluída (ou com boa parte pronta) com Web Forms. Não faça uma aplicação meio MVC, meio Web Forms.
− Tiver pouco tempo de desenvolvimento e a equipe não conhecer o padrão MVC, o framework ASP.Net MVC, ou os dois.
− Você gostar muito do modelo proporcionado pelo Web Forms de ilusão de manutenção de estado proporcionado pelo Viewstate.
Web Forms
− Suas necessidades de AJAX ou manipulação de Javascript forem muito altas, ou você odeia programar Javascript.
− Você é fã de carteirinha de alguns controles complexos, como o gridview, os de membership, ou ainda, você gosta muito de databinding;
− Você precisar utilizar programação de webparts para o Sharepoint.
MVC
− Precisar mais controle sobre o HTML gerado
− Quiser ter uma aplicação focada em padrões mais reconhecidos, inclusive no front-end.
− Quiser trabalhar com testes unitários também na interface com o usuário.
− Precisar de uma aplicação mais modular, inclusive no front-end.
MVC
− Quiser ter mais liberadade para extender alguns pedaços do framework. Com ASP.Net MVC você pode substituir os controllers, o engine de View, a maneira de procurar Views, o framework de testes, etc.
− Quiser utilizar XSLT, XML, texto puro, ou sei lá o que mais para renderizar as páginas web.
− Tiver a intenção de gerar uma página menor em bytes
<form/>
<form/>
<form/>
Mindset
- Nós precisamos de um controle Repeater!
- Nós já o temos, se chama: laço de foreach.
Conversa entre desenvolvedores da Microsoft, segundo relatado por Scott
Hanselman, do time do MVC.
Arquitetando…
Desvantagens do Web Forms− Não tem separação de preocupações (SoC)− Ambiente de runtime monolítico
− Não é facilmente estendido− Não é conectável e flexível
− Alta asbtração do HTML− Acessibilidade− Compatibilidade com navegadores− Integração com estruturas de JavaScript
populares− JQuery, Dojo e PrototypeJS
− Postback torna a página difícil de ser indexada por mecanismos de busca e classificação
− Estimula o arrastar-e-soltar
Desvantagens do MVC
− Baixa produtividade− Não mantem estado− Sem facilidades para gerar HTML− Necessidade de conhecimento do padrão
MVC− Não tem controles “prontos”
Páginas X Ações
Concluíndo…
WebFormsPlug-and-Play
MVCExpõe a arquitetura
WebFormsPágina Codificação
MVCMod. dos dados Página
System.Web.Mvc.GridView
?
Segurança no MVC .NET
− Membership e Roles continuam valendo− Com exceção da restrição de paginas por
grupo/usuário
<location path="Contas/ContaCorrente.aspx"> <system.web> <authorization> <allow roles="Gerentes" /> <deny users="*" /> </authorization> </system.web></location>
Testes com Web Forms
− Uma única página/classe:− Tratar a exibição dos dados− Exibir os dados− Capturar as informações fornecidas pelo
usuário− Validar e manter estados− Enviar as informações novamente para a
aplicação.− Necessário execução dentro do IIS− = Forte acoplamento
Testes com MVC .NET
− Facilidade devido ao desacoplamento do padrão MVC
− Cada classe, controler e método pode ser testado separadamente
− Testes unitários e template de projeto pronto
Links úteis
− Blog do Phil Haack− http://haacked.com
− Blog do ScottGu− http://weblogs.asp.net/scottgu/ − http://weblogs.asp.net/scottguportuguese
− MSDN - ASP.NET MVC Forum− http://social.msdn.microsoft.com/Forums/
pt-BR/mvcpt/threads− Comparing WebForms and ASP.NET
MVC− Dino Esposito
42
Concluíndo…