introdução felipe fujiy. tecnologias web períodotecnologiavantagensdesvantagens jurássicocommon...

20
Introdução Felipe Fujiy

Upload: internet

Post on 18-Apr-2015

107 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

Introdução

Felipe Fujiy

Page 2: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

Tecnologias WebPeríodo Tecnologia Vantagens Desvantagens

Jurássico Common GatewayInterface (CGI)*

SimplesFlexívelÚnica opção na época

Roda fora do servidor, lento, cria um processo por chamada.

Era do bronze Microsoft InternetDatabase Connector(IDC)

Roda dentro do servidor

Somente uma camada para queries SQL

1996 Active Server Pages (ASP)

Propósito Geral Interpretado, código espaguete

2002/03 ASP.NET 1.0/1.1

Compilado, IU “Stateful”, Vasta Infra-estrutura, Orientação à Objetos

Pesado(tráfego), HTML “sujo”, Intestável2005 ASP.NET 2.0

2007 ASP.NET AJAX

2008 ASP.NET 3.5

Page 3: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

WebFormsVantagens

RADRich ControlsViewStateFácilJavascript “automático”

Page 4: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

WebFormsDesvantagens

ViewStateNão há controle sobre o HTMLNão é testávelNão impõe o uso de Design PatternsNão há separação de responsabilidadesPage Life Cycle

Page 5: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

MVCVantagens

Separação de Responsabilidades(SoC)Controle sobre o HTML geradoTestávelSEOFácil integração com frameworks JavaScript(jQuery)Não há ViewState/PostbackSegue a natureza StateLess da WebExtensívelIntegração “limpa” com AjaxOportunidade de aprender novos conceitosOpen Source

Page 6: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

MVCDesvantagens

Exige mais do desenvolvedorInicialmente exige mais tempoNão há Rich ControlsNão há tanto “material”

Page 7: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

Quando usar MVC - PolíticoTempo do projeto deve permitirTime maduroTime disposto ao desafioTime motivado a aprenderTime possui cultura de testes

Fonte: http://unplugged.giggio.net/unplugged/post/Webcast-de-ASPNet-MVC-introdutorio-com-o-Codificando-apresentacao.aspx

Page 8: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

Quando usar MVC - TécnicoControle sobre o HTMLFoco em padrões de projetos e arquiteturaFlexibilidadeFoco em bons princípios de programação:

KISS(Keep it simple, stupid), DRY (don´t repeat yourself)

SEOFonte: http://unplugged.giggio.net/unplugged/post/Webcast-de-ASPNet-MVC-introdutorio-com-o-Codificando-apresentacao.aspx

Page 9: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

Ciclo de VidaA tabela de rotas é criadaO UrlRoutingModule intercepta o Request e

determina a rotaO MvcHandler é ativado e cria o controlador

esperadoA ação do controller é executadaAlgum dado do modelo é obtidoO método View é chamado e uma View é

criadaA View renderiza

Fonte: http://unplugged.giggio.net/unplugged/post/Webcast-de-ASPNet-MVC-introdutorio-com-o-Codificando-apresentacao.aspx

Page 10: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

Modelo

Page 11: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

Interface Controller->ViewViewDataTempDataModel (Tipado)

Page 12: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

HTML HelpersActionLink()BeginForm()EndForm()CheckBox()DropDownList()Hidden()ListBox()Password()RadioButton()TextArea()TextBox()Encode()<a href="<%= Url.Action("Delete") %>"><img

src=“del.png“ /></a>

Page 13: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

Pontos de AtençãoAcceptVerbs ([AcceptVerbs(HttpVerbs.Post)])ActionName ([ActionName("Index")])HandleUnknownActionValidateInput ([ValidateInput(false)])[Bind(Exclude="Id")]

(Create([Bind(Exclude="Id")]Product product))

Html.Encode para evitar JavaScript Injection

Page 14: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

ModelBinder Nos primeiros Previews do ASP.NET MVC só era possível receber tipos

primitivos como argumento dos métodos. Com o uso dos ModelBinders você pode receber um objeto complexo.

Os ModelBinder são classes que implementam o IModelBinder. Pode-se criar um ModelBinder para cada tipo, ou criar um para uso geral.

Os ModelBinder podem ser registrados de 4 formas, na seguinte ordem: Como um atributo do argumento:

Como um atributo no tipo do argumento:

Registrar no ModelBinders.Binders no Start da aplicação Registrar no ModelBinders.Binders. DefaultBinder da aplicação:

Page 15: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

ModelStateO ModelState é parte do ViewData, usado para o

Controller indicar à View que há erros no modelo passado à ela.

Além disso, graças aos ModelState, quando o usuário envia um formulário com dados inválidos, e o formulário é re-apresentado, os dados digitados anteriormente não são perdidos.

Podemos programar o Controller para adicionar itens no ModelState, mas geralmente esse trabalho fica no ModelBinder e UpdateModel(usando o ModelBinder) que faz isso automaticamente.

IDataErrorInfo, usado para configurar as mensagens de erro

Page 16: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

Repository Pattern/IoCController:

Controller Factory:

Page 17: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

Dependency InjectionDependency Injection ou Injeção de Dependência é uma

forma de Inversion of Control(Inversão de controle).Injeção de dependência é um padrão de

desenvolvimento utilizado quando é necessário manter baixo o nível de acoplamento entre diferentes módulos de um sistema. Nesta solução as dependências entre os módulos não são definidas programaticamente, mas sim pela configuração de uma infraestrutura de software (container) que é responsável por "injetar" em cada componente suas dependências declaradas. (Wikipedia).

Útil nos testes unitários, onde trocamos o Repositório que acessa o banco de dados por um Mock, que retorna dados falsos, assim conseguimos testar apenas o nosso método, sem depender do banco de dados.

Page 18: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

Testes Unitários

Page 19: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

Anti-Forgery Tokens Seu cliente está logado no seu banco (www.banco.com), e entra em um

site que tem a seguinte imagem: <img src=”http://www.banco.com/sacar/?valor=9999” />.

Com isso o método sacar vai ser executado, roubando 9999 reais da conta do seu cliente.

Para validar as chamadas às Actions existe o atributo [ValidateAntiForgeryToken]:

Se o método tiver este atributo só vai executar caso receba o Token de validação.

Suas páginas com link para o método deve ter o Token, para isso use o: <%= Html.AntiForgeryToken() %>

Será gerado algo como: <input name="__RequestVerificationToken" type="hidden" value="6tbg3PWU9oAD3bhw6jZwxrYRyWPhKede87K/PFgaw6MI3huvHgpjlCcPzDzrTkn8" />

Page 20: Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção

Linkshttp://blog.fujiy.net/http://www.fujiy.net/overflow/http://www.asp.net/mvc/http://weblogs.asp.net/scottgu/http://www.javafree.org/artigo/871453/