palestra asp.net mvc
TRANSCRIPT
Moacir Casemiro
Gestão e Arquitetura de Software
MCP,MCAD,MCTS e MCPD
www.moacircasemiro.com
# Quem sou eu !
Moacir Casemiro
• Arquitetura e Gestão na prática
• Experiência de 10 anos em Web
• MCP, MCAD, MCTS e MCPD Enterprise Aplicação
• Participei de projetos de vários níveis e tamanho
• Palestrante desde 2006
• Instrutor desde 2006
• Contatos : @moacircasemiro
• Email : [email protected]
• www.moacircasemiro.com
# Nossa Agenda
1 - Padrões de Projetos
2 - MVC
3 - ASP.NET MVC
# Padrões de Projeto
O que é Padrão ?
O que é Padrão ?
O que é Padrão ?
O que é Padrão ?
O que é Padrão ? O
qu
e é
Pad
rão
?
# Algumas definições
• “Documento aprovado por um organismo
reconhecido que provê, pelo uso comum e
repetitivo, regras, diretrizes ou características de
produtos, processos ou serviços cuja obediência
não é obrigatória"
# Algumas definições
“Cada padrão descreve um problema que ocorre
freqüentemente em seu ambiente, e então descreve
o cerne da solução para aquele problema, de um
modo tal que
você pode usar esta solução milhões de vezes, sem
nunca fazer a mesma coisa repetida”.
Christopher Alexander
(Arquiteto e Urbanista)
# Algumas definições
# Característ icas principais sobre Padrões
• São Conceitos (não tecnologias);
• Resolvem problemas específicos.
# Padrões de Projeto
• Gang-of-Four
(Gangue-dos-Quatro) o Erich Gamma,
o Richard Helm,
o Ralph Johnson e
o John Vlissides
# Organização dos Padrões GOF
# Interações dos Padrões
# MVC
# O que é M VC ?
• MVC (Model-View-Controller)
o Padrão de Arquitetura
o É um conceito
o Fácil manutenção
o Objetivos
o Frameworks
# Int rodução ao M VC Framework
• Model-view-controller (MVC) é um padrão de
arquitetura de software que visa a separar a lógica
de negócio da lógica de apresentação,
permitindo o desenvolvimento, teste e
manutenção isolado de ambos.
# Int rodução ao M VC Framework
# Int rodução ao M VC Framework
Pagina HTML
Pagina ASP
Outros Clientes
Controlador
Persistência
Negócio
Visualização Controle Modelo
# ASP.NET MVC
# Antes de tudo, o que é ASP.NET ?
• é a plataforma da Microsoft para o
desenvolvimento de aplicações Web é o sucessor
da tecnologia ASP. É um componente do IIS que
permite através de uma linguagem de
programação integrada na .NET Framework criar
páginas dinâmicas.
ASP.NET M VC
• ASP.NET MVC
# ASP.NET M VC
Framework é baseado na arquitetura de software MVC. O objetivo é manter uma clara separação de conceitos: interface, modelo de dados e controle de chamadas das páginas. Uma aplicação em ASP.NET MVC é estruturada da seguinte maneira: • Model: Contém códigos de validação, regras de negócio e acesso a dados. • View: Camada de apresentação (layout). • Controllers: Controla o fluxo da aplicação. Em outras palavras, consiste no controle das chamadas das Views (realizadas pelos browsers) e alterações do comportamento do Model
# M VC - M odel
• Objetos que mantêm o estado
do aplicativo
Interage com o (banco de
dados) do repositório
Controlador de cria-los em
ações e passa para as Views
Exibir dados de acessos no
Objeto
Exemplos: DataSet,
DataReader, LINQ to SQL, etc.
Model
# M VC – Cont roller
[HandleError]
public class HomeController : Controller
{
public ActionResult Index()
{
ViewData["Title"] = "Home Page";
ViewData["Message"] = "Welcome to ASP.NET MVC!";
return View();
}
}
Controller
# M VC –View View
<%@ Page Title=“Category" Language="C#"
MasterPageFile="~/Views/Shared/Site.Master"
AutoEventWireup="true"
CodeBehind="Category.aspx.cs"
Inherits="NorthwindMVC.Views.Products.Category"
%>
• Views (property Model) can be “strongly typed”
public partial class Category :
ViewPage<NorthwindMVC.Models.Category>
• In RC1 “code behind” for Views has been eliminated – to facilitate IntelliSence
• PASSOS PARA UTILIZAR ASP.NET MVC
# ASP.NET M VC
• PASSOS PARA UTILIZAR ASP.NET MVC
# ASP.NET M VC
• PASSOS PARA UTILIZAR ASP.NET MVC
# ASP.NET M VC
• PASSOS PARA UTILIZAR ASP.NET MVC
O HomeController é um controlador, ele é responsável pela chamada das páginas Index e About que estão dentro da pasta Home. A url do seu projeto, por padrão é: http://MeuServer/home/index. Quando essa url é chamada pelo browser, o servidor vai processar o método Index que retorna o arquivo Views/Home/Index.aspx. Os métodos do controlador ainda podem passar dados do Modelo para as Views para serem manipulados na camada de apresentação.
# ASP.NET M VC
• PASSOS PARA UTILIZAR ASP.NET MVC
Para cada método no controlador ele vai retornar uma View com o nome correspondente(HomeController è pasta /Home, Método Índex è Arquivo Index.aspx
# ASP.NET M VC
# Entendendo o Ciclo de Vida de uma aplicação
• Web Forms
• Quando uma requisição chega para uma aplicação ASP.NET baseada no modelo tradicional, a página requisitada é mapeada para uma página (*.aspx). Esta página contém código HTML que representa a visualização da mesma e que será processada pelo ASP.NET e, em seguida, gerado um output e enviado ao usuário que a requisitou. • Quando uma requisição chega a uma aplicação ASP.NET, o runtime primeiramente executará vários passos até que a página ASPX seja efetivamente executada. Com os objetos devidamente criados, em algum momento, o ASP.NET determina qual será o handler responsável por executar a página; assim que este handler é determinado, o método ProcessRequest da página é executado e o ciclo de vida da mesma inicia, executando os métodos que criam os controles na página (baseando-se no HTML), os eventos da própria página, como Init, Load, etc., e eventos de controles.
# Routeamento protected void Application_Start(object sender, EventArgs e)
{
RegisterRoutes(RouteTable.Routes);
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.Add(new Route
(
"Category/{action}/{categoryName}"
, new CategoryRouteHandler()
));
}
HTTP Handler
Initialization
LoadViewState
LoadPostbackData
Load
RaisePostBackEvent
SaveViewState
PreRender
Render
# Entendendo o Ciclo de Vida de uma aplicação
• Web Forms
# Entendendo o Ciclo de Vida de uma aplicação
• ASP.NET MVC
• Na requisição para uma página, você requisitará uma ação. Esta ação nada mais é do que um método que estará dentro de um determinado Controller. O Controller é responsável por capturar as informações fornecidas pelo protocolo HTTP ou pelo usuário, manipular essas informações, acessar o Model e, finalmente, renderizar o conteúdo, através de uma View, para o usuário.
# Entendendo o Ciclo de Vida de uma aplicação
Browser URL Routing Controller Model View
POST
new
Invoke action Invoke method
Lookup view
Render (viewData)
HTML
• ASP.NET MVC
# Comparando Web Forms
e M VC
• Beneficios : o Recurso como clica e arrasta semelhante ao desenvolvimento de
aplicações Desktop.
o Utilização de Viewstate e postbacks
o Desenvolvedor não precisa ter conhecimento em HTML e JavaScript.
o Manipulação de eventos clássicos, como Init, Load, PreRender, além de
eventos de controle específicos, como OnClick para um controle Button.
• Web Forms
• Pontos Fraco : o Não tem um controle sobre o HTML gerado, pois boa parte do código
gerado é fornecido pelos controles colocados no Web Forms;
o Através dos Web forms não é possivel testes unitários na interface com o
usuário;
o O estado da pagina fica mantido em um campo oculto (viewstate) ;
o A abstração do HTML impede acessibilidade, compatibilidade de
navegador e integração com estruturas de JavaScript populares como
jQuery, Dojo e PrototypeJS.
• Web Forms
# Comparando Web Forms e ASP.NET
• Beneficios : o Não há nenhuma dependência em arquivos de servidor físico ASPX;
o Modular, o ASP.Net MVC é muito bem dividido em módulos e partes;
o O controlador escolhe qual modo para exibir com base na URL solicitada
e dados pertinentes. Cada solicitação é resolvida invocando um método
em uma classe de controlador;
o Não utiliza ViewState para manter os dados da página;
o Não possui controles de servidor para produzir o HTML ;
o O padrão MVC é a base ASP.Net MVC.
• ASP.NET MVC
# Comparando Web Forms e ASP.NET
• Pontos Fracos : o Desenvolvedor precisa ter conhecimento em HTML e JavaScript;
o Não possui controles com databinding (exemplos: GridView, DataList…);
o Pouca produtividade em comparação para aplicações Web Forms no
inicio do projeto.
• ASP.NET MVC
# Comparando Web Forms e ASP.NET
# Exemplos Reais
Demo
Referencias
• SP.NET Model-View-Controller Applications
http://quickstarts.asp.net/previews/mvc/default.ht
m
• ASP.Net Routing http://msdn.microsoft.com/en-
us/library/cc668201.aspx
• MVC Tutorials http://www.asp.net/learn/mvc/
• Building Web Apps without Web Forms
http://msdn.microsoft.com/en-
us/magazine/cc337884.aspx