Introdução Felipe Fujiy

Slides:



Advertisements
Apresentações semelhantes
Soluções elegantes para problemas recorrentes
Advertisements


Mini-curso desenvolvendo aplicações com Zend Framework
Nota do Editor: dica para criar o PPT
JBanana.
Área de Desenvolvimento de Sistemas
Desenvolvimento Web.
Framework para desenvolvimento web
Camada de Acesso a Dados em ASP.NET
Introdução ao ASP.NET 2º Semestre 2009 > PUCPR > Tecnologia de Programação 2 Bruno C. de Paula.
Conhecendo o VS2008: Windows Forms X Web Forms X Web Services
.Net para Web Apresentação da Disciplina 1º Semestre 2009 > PUCPR > Pós em Web Bruno C. de Paula.
Módulo II Arquitetura em Camadas
Tecnologia para Web Controles de Validação
MedEl: Uma solução de E-Learning utilizando tecnologia Microsoft ASP
Introdução a EJB 3.0 Eduardo Martins Guerra Instituto Tecnológico de Aeronáutica Curso de Pós-Graduação em Engenharia de Software Programação Distribuída.
Sistema de Gestão de Manutenção
Estudo comparativo de arquitecturas para aplicações empresariais
Model-View-Controller (MVC) em Aplicações Web Eduardo Martins Guerra Desenvolvimento de Soluções WEB.
Lan Manager Integrantes: Bruno Moleiro Regis Felipe Fujiy Pessoto
Lan Manager Integrantes: Bruno Moleiro Regis Felipe Fujiy Pessoto
Desenvolvimento de Projetos e Aplicações Web
Aplicativos Web Com Orientação a Objetos
II Semana TI Raphael Zanon Rodrigues Curso ASP.NET AJAX UNIVEM - Prof. Elvis Fusco.
Introdução à Programação para a Web Fernando Martins 9 de Julho de 2008.
Rodrigo Cristiano Silva
Introdução ao Framework Django
MVP Virtual Conference 2013
PESQUISADOR: CASSIANO DALCIN / 2010 Trabalho de Conclusão de Curso MINISTÉRIO DA EDUCAÇÃO Universidade Tecnológica Federal do Paraná Campus Medianeira.
Adriano Melo Introdução ao ASP.NET Adriano Melo
CURSO DE EXTENSÃO PROGRAMAÇÃO C# .NET
Prof. Alexandre Monteiro Recife
Professor: Márcio Amador
Linguagens Web - Cliente
Projeto de Arquitetura de Software Visão Geral
JSP e Servlets ISEP – LP2 Filipe Costa – /2004.
Aplicativos Web Com Orientação a Objetos
Felipe Ferreri Tonello
Arquitetura de Desenvolvimento Web MVC vs. Three Tiers
Arquitetura das JSP - Aula 2
Implementação MVC Pedro Antonino.
Aplicações Web com Orientação a Objetos
Unidade 6 – Formulários HTML Prof.: Henrique Santos
Aula 1 - Fundamentos Web Servidor
Padrão- MVC Model, View, Controller
O que é? É o processo de investigação técnica com intuito de identificar a qualidade, a segurança e a exatidão do software desenvolvido. A validação do.
Bruno Inojosa MCP.NET Framework.NET com C#. Aula V  Tópicos abordados:  Desenvolvendo para internet (Parte III) Gerenciamento de Estados User Controls.
Padrões de Interação com o Usuário
Unidade 1 – Introdução a J2EE Prof.: Henrique Santos
Introdução ao ASP.Net 1º Semestre 2010 > PUCPR > BSI Bruno C. de Paula.
Decisão #1 Decisão-chaveUtilização de C para desenvolvimento do MCTCore. DriversRNF: O código deve ser escrito na linguagem C. Descrição O sistema legado.
Linguagem de programação. Histórico  Concebida em 1993 por Yukihiro Matsumoto  Primeiro livro em inglês saiu em setembro de 2000  Ruby on Rails é lançado.
Fundamentos da Linguagem C#
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Introdução a Aplicações Web.
JavaServer Faces Rapid Web Application Development em Java Ricardo Cavalcanti Jobson Ronan
PHP vs java Pontos fortes e fracos;
Programação para Internet
Tema 2: Técnicas de desenvolvimento seguro
Projeto Supervisionado no Desenvolvimento de Aplicações Profissionais na Web Servidores.
Aula 1 - Fundamentos Web Servidor Instituto Metodista Izabela Hendrix Curso de Tecnologia em Análise e Desenvolvimento de Sistemas Prof. Gilmar Medeiros.
Student Tech Clubs Desenvolvimento WEB Antonio Ladeia Graduando em Tecnologia em Análise e Desenvolvimento de Sistemas Instituto Federal da Bahia Introdução.
Academia de Ensino Superior Prof. André Morais Desenvolvimento de Aplicações Web na plataforma Microsoft Desenhando a página.
Universidade Federal de Sergipe Departamento de Sistemas de Informação Bruno Cruz Jessica Rodrigo Aragão – ASP.NET MVC 3.
Desenvolvimento WEB II Aula 3 – Conexão com o Banco de Dados
Programação PHP Gustavo Eduardo Terra.
Desenvolvimento WEB II Ajax – Utilização de Frameworks Javascript Professora: Kelly de Paula Cunha.
Aplicativos para internet Prof. Wolley
YOUR LOGO Tópicos Avançados em Internet Prof. Lincoln Ferreira Dantas Sistemas de Informação UNIESP – Presidente Epitácio.
Aplicativos para Web MVC Prof. Odair Indena Jr.
Testes de Unidade. 2 Pauta Testes de Unidade; Testes de Unidade; Desenvolvimento orientado a testes; Desenvolvimento orientado a testes; Testes unitários.
Transcrição da apresentação:

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

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

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

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

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

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

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: http://unplugged.giggio.net/unplugged/post/Webcast-de-ASPNet-MVC-introdutorio-com-o-Codificando-apresentacao.aspx

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: http://unplugged.giggio.net/unplugged/post/Webcast-de-ASPNet-MVC-introdutorio-com-o-Codificando-apresentacao.aspx

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: http://unplugged.giggio.net/unplugged/post/Webcast-de-ASPNet-MVC-introdutorio-com-o-Codificando-apresentacao.aspx

Modelo

Interface Controller->View ViewData TempData Model (Tipado)

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

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

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:

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

Repository Pattern/IoC Controller: Controller Factory:

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.

Testes Unitários

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

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