A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Introdução Felipe Fujiy

Apresentações semelhantes


Apresentação em tema: "Introdução Felipe Fujiy"— Transcrição da apresentação:

1 Introdução Felipe Fujiy
ASP.NET MVC Introdução Felipe Fujiy

2 Tecnologias Web Período Tecnologia Vantagens Desvantagens Jurássico
Common Gateway Interface (CGI)* Simples Flexível Única opção na época Roda fora do servidor, lento, cria um processo por chamada. Era do bronze Microsoft Internet Database 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ável 2005 ASP.NET 2.0 2007 ASP.NET AJAX 2008 ASP.NET 3.5

3 WebForms Vantagens RAD Rich Controls ViewState Fácil
Javascript “automático”

4 WebForms Desvantagens ViewState Não há controle sobre o HTML
Não é testável Não impõe o uso de Design Patterns Não há separação de responsabilidades Page Life Cycle

5 MVC Vantagens Separação de Responsabilidades(SoC)
Controle sobre o HTML gerado Testável SEO Fácil integração com frameworks JavaScript(jQuery) Não há ViewState/Postback Segue a natureza StateLess da Web Extensível Integração “limpa” com Ajax Oportunidade de aprender novos conceitos Open Source

6 MVC Desvantagens Exige mais do desenvolvedor
Inicialmente exige mais tempo Não há Rich Controls Não há tanto “material”

7 Quando usar MVC - Político
Tempo do projeto deve permitir Time maduro Time disposto ao desafio Time motivado a aprender Time possui cultura de testes Fonte:

8 Quando usar MVC - Técnico
Controle sobre o HTML Foco em padrões de projetos e arquitetura Flexibilidade Foco em bons princípios de programação: KISS(Keep it simple, stupid), DRY (don´t repeat yourself) SEO Fonte:

9 Ciclo de Vida A tabela de rotas é criada
O UrlRoutingModule intercepta o Request e determina a rota O MvcHandler é 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 renderiza Fonte:

10 Modelo

11 Interface Controller->View
ViewData TempData Model (Tipado)

12 HTML Helpers ActionLink() BeginForm() EndForm() CheckBox()
DropDownList() Hidden() ListBox() Password() RadioButton() TextArea() TextBox() Encode() <a href="<%= Url.Action("Delete") %>"><img src=“del.png“ /></a>

13 Pontos de Atenção AcceptVerbs ([AcceptVerbs(HttpVerbs.Post)])
ActionName ([ActionName("Index")]) HandleUnknownAction ValidateInput ([ValidateInput(false)]) [Bind(Exclude="Id")] (Create([Bind(Exclude="Id")]Product product)) Html.Encode para evitar JavaScript Injection

14 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:

15 ModelState O 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

16 Repository Pattern/IoC
Controller: Controller Factory:

17 Dependency Injection Dependency 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.

18 Testes Unitários

19 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" />

20 Links http://blog.fujiy.net/ http://www.fujiy.net/overflow/


Carregar ppt "Introdução Felipe Fujiy"

Apresentações semelhantes


Anúncios Google