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

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

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

Apresentações semelhantes


Apresentação em tema: "Introdução Felipe Fujiy. Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção."— Transcrição da apresentação:

1 Introdução Felipe Fujiy

2 Tecnologias Web PeríodoTecnologiaVantagensDesvantagens JurássicoCommon Gateway Interface (CGI)* Simples Flexível Única opção na época Roda fora do servidor, lento, cria um processo por chamada. Era do bronzeMicrosoft Internet Database Connector (IDC) Roda dentro do servidor Somente uma camada para queries SQL 1996Active Server Pages (ASP) Propósito GeralInterpretado, código espaguete 2002/03ASP.NET 1.0/1.1Compilado, IU Stateful, Vasta Infra-estrutura, Orientação à Objetos Pesado(tráfego), HTML sujo, Intestável 2005ASP.NET ASP.NET AJAX 2008ASP.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: introdutorio-com-o-Codificando-apresentacao.aspx

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: introdutorio-com-o-Codificando-apresentacao.aspx

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: introdutorio-com-o-Codificando-apresentacao.aspx

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() ">

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:. 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: Será gerado algo como:

20 Links


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

Apresentações semelhantes


Anúncios Google