Академический Документы
Профессиональный Документы
Культура Документы
1
Introduo
Framework e a Linguagem C#
Plataforma
.NET
VDEO AULA 01
Um novo modelo de desenvolvimento
A partir dos anos 90 a internet comeou a mudar a forma como as
organizaes se comunicavam. Aplicaes tradicionais como
processadores de texto e planilhas eletrnicas eram criadas para
funcionar
individualmente,
acessando
dados
que
estavam
armazenados na prpria maquina que o aplicativo era executado. A
maioria dos novos softwares desenvolvida para funcionarem de
forma distribuda, acessando bases remotas e provendo servios para
outros programas, chamados de aplicativos clientes. Como resultado
o primeiro objetivo dos novos softwares suportar o
compartilhamento de informaes pela rede e a distribuio delas
atravs de mensagem eletrnica, e-mail e at mesmo redes sociais.
Basicamente o novo modelo de desenvolvimento de software est
deixando de apenas criar funcionalidades bsicas de um sistema
isolado para a criao de servios que possibilitam gerar solues
para uma grande quantidade de aplicaes.
Framework
Web pages
Web Services
Bibliotecas (DLLs)
Windows Forms
Console Application
O .NET Framework torna fcil a tarefa de publicao, na maioria dos
cenrios, basta copiar o aplicativo e seus componentes em uma pasta
e execut-lo. Isso possvel porque o .NET Framework localiza e
Pgina 1 de 118
Pgina 2 de 118
Pgina 3 de 118
Visual Studio
O Visual Studio uma IDE (Integrated Development Environment)
para desenvolvimento utilizando qualquer uma das linguagens
contidas no .NET Framework. O Visual Studio disponibiliza recursos
para trabalhar com diversas linguagens no mesmo ambiente. Contm
ferramentas para DEBUG, designers para HTML, XML, banco de dados
e cdigos de servidor. Alm disso conta com IntelliSense, recurso que
completa o cdigo, garantindo que o desenvolvedor evite erros, alm
de adicionar um alto ganho na produtividade.
Veja na tabela abaixo alguns recursos do Visual Studio:
Pgina 6 de 118
Windows Forms
Windows Forms o nome dado para o conjunto de classes que
contm funcionalidades que suportam criar aplicaes desktop
tradicionais, que contm uma interface grfica para interao do
usurio. O Windows Forms torna fcil o desenvolvimento de sistemas
para o usurio final utilizando qualquer uma das linguagens do .NET
Framework. O Visual Studio permite o desenvolvimento Windows
Forms arrastando controles em uma ferramenta visual, descartando a
necessidade de criar a parte grfica da aplicao utilizando cdigo,
recurso esse chamado de drag-and-drop (arrastar e soltar).
Pgina 7 de 118
mais: Introduo
ao
Windows
Forms
http://msdn.microsoft.com/pt-br/vbasic/ms789117.aspx
ASP.NET
Para o desenvolvimento de aplicaes WEB o .NET framework dispe
do
ASP.NET, uma
arquitetura
de
desenvolvimento
criada
especificamente para criar aplicaes WEB poderosas com alta
produtividade.
O ASP.NET dividido em vrias tecnologias, entre ela o ASP.NET Web
Forms, ASP.NET MVC e Web Services.
ASP.NET Web Forms
Desenvolvedores que no tm familiaridade com o desenvolvimento
para WEB podem perder muito tempo para descobrir como validar um
simples campo de e-mail em um formulrio de contato. Uma
validao pode ser executada tanto no lado cliente, como no lado
servidor. Decidir qual lado seguir pode ser complicado pelo fato de
que cada uma das abordagens tem suas vantagens e desvantagens,
algumas podem no ficar explicitamente visveis no momento do
desenvolvimento se no houver a ateno necessria. Se a validao
for feita no lado cliente utilizando Javascript, deve ser considerado o
risco do navegador do usurio no suportar Javascript, ou at mesmo
estar desativado. Dessa forma os dados seriam enviados sem estar
devidamente validados. Se os dados forem validados no servidor, o
tempo para enviar esses dados e obter uma resposta pode frustrar o
usurio, ou seja, a aplicao poder ser segura mas ir pecar na
usabilidade.
O Web Forms simplifica todos os processos da arquitetura clienteservidor, pois tem como objetivo facilitar a entrada de
desenvolvedores desktop no ambiente WEB, disponibilizando recursos
como o drag-and-drop para adicionar controles em uma pgina e
editar suas caractersticas visualmente.
Pgina 8 de 118
ao
ASP.NET
http://msdn.microsoft.com/pt-br/asp.net/gg252004.aspx
O ASP.NET MVC um framework para trabalhar com o padro de
projeto Model-View-Controller, permitindo o controle total sobre o que
enviado para o cliente e utilizando todo o poder do ASP.NET e do
.NET Framework. uma excelente plataforma para trabalhar com
desenvolvimento dirigido por testes por no conter cenrios
complexos como o ciclo de vida de pginas baseado em eventos
como o ASP.NET Web Forms. Tambm introduziu no ASP.NET a
possibilidade de configurar rotas para criar endereos amigveis,
permitindo assim um melhor desempenho na disponibilizao de
contedo atravs de mecanismos de busca.
Saiba
mais: Padro
MVC
http://msdn.microsoft.com/pt-br/magazine/cc337884.aspx
Pgina 9 de 118
Web Services
Um Web Service uma aplicao que expe funcionalidades na web
atravs de mtodos. Web Services so desenvolvidos para serem
consumidos por outras aplicaes e no tm a inteno de interagir
diretamente com o usurio final. Web Services tornam fceis a
criao de recursos para serem acessados remotamente. Aplicativos
clientes podem invocar os mtodos de um Web Service como se eles
estivesses definidos na prpria aplicao.
Linguagem C#
A linguagem C# foi criada pela Microsoft especificamente para a
plataforma .NET. A criadora da linguagem descreve a mesma como
simples, moderna, orientada a objetos, fortemente tipada (apesar
dos tipos dinmicos introduzidos na verso 4) derivada do C e C++.
Algumas pessoas por sua vez diriam que a linguagem tambm
derivada do Java, por algumas similaridades em seu design.
Sintaticamente o C# muito parecido com C++ e Java. Algumas
palavras chaves so iguais, blocos de cdigo so marcados com
chaves e as instrues so terminadas com ponto e vrgula. A
primeira impresso ao ver um bloco de cdigo escrito em C# que
ele muito parecido com C++ e Java. Apesar de toda essa
similaridade o C# muito mais simples de ser absorvido do que o C+
+, mas tendo quase o mesmo nvel de dificuldade do Java. Seu
design apesar de similar, mais moderno que as outras linguagens
citadas.
Algumas das principais caractersticas do C#:
Pgina 10 de 118
C# Bsico
Agora que foram apresentados os principais recursos da linguagem
C#, veremos como utiliz-los, compilando o cdigo de exemplo
abaixo:
Pgina 11 de 118
Saiba
mais: Compilador
C#
http://msdn.microsoft.com/pt-br/library/vstudio/2fdbz5xd.aspx
do
.net
Exemplo:
C:\Windows\Microsoft.NET\Framework\v4.0.30319
Para poder compilar um cdigo direto da linha de comando, deve ser
verificado se as ferramentas de linha de comando do .NET foram
instaladas no sistema.
Pgina 12 de 118
C# e sua sintaxe
Vamos observar alguns detalhes sobre a sintaxe do C#. Como em
outras linguagens, linhas de comando no C# so terminadas com
ponto e vrgula, e podem continuar em mltiplas linhas sem
necessidade de um caractere para informar essas continuaes, como
vemos a seguir:
Pgina 13 de 118
Para comentar uma linha basta utilizar duas barras (//). Para vrias
linhas deve ser iniciado com barra e asterisco ( /*) e terminar com a
mesma combinao ao contrrio ( */):
Pgina 14 de 118
Saiba
mais: Comentrios
com
XML
http://msdn.microsoft.com/pt-br/library/vstudio/b2s063f7.aspx
Todos esses aspectos mostram as similaridades do C# com o C++ e o
Java.
As primeiras linhas do cdigo anterior comeam com a utilizao de
namespaces, um recurso utilizado para agrupar classes que tm
responsabilidades similares. Os namespaces do C# so equivalentes
aos namespaces do C++ e os packages do Java. A palavra chave
namespace seguida de chaves declara em qual namespace uma
classe est contida.
A palavra chave using informa ao compilador em qual namespace
deve ser procurado para encontrar classes que foram referenciadas
em seu cdigo mas no foram definidas no mesmo namespace. Using
no C# equivalente palavra chave import do Java e using
namespace do C++.
Veremos no cdigo abaixo outra utilizao dos namespaces:
Pgina 15 de 118
Pgina 16 de 118
Saiba
mais: Orientao
Objetos
com
C#
http://msdn.microsoft.com/pt-br/library/cc580626.aspx
Por Exemplo:
Pgina 17 de 118
Pgina 19 de 118
Pgina 20 de 118
SUGESTO DE LEITURA
SHARP, John. Visual C# 2008 - passo a passo. Porto Alegre:
Bookman, 2008.
LOUREIRO, Henrique. C# 4.0 com visual studio 2010. Lisboa: FCA,
2011.
Pgina 22 de 118
Inferncia de tipo
Inferncia de tipo utilizada para omitir o tipo da varivel no
momento da declarao. Para utilizar esse recurso no C# utilizada a
palavra chave var. O compilador ir descobrir o tipo da varivel a
partir do momento da inicializao, por exemplo:
var x = 2;
ir se tornar:
int x = 2;
Pgina 23 de 118
Saiba
mais: A
lgica
da
Inferncia
http://pt.wikipedia.org/wiki/Infer%C3%AAncia
Depois de compilado, as duas instrues so iguais.
Veja mais um exemplo:
Apenas deve ser atentando para algumas regras. A varivel deve ser
sempre inicializada no momento da declarao. De outra forma, o
compilador no saberia definir o tipo da varivel. O valor inicializado
no pode ser null como visto abaixo:
Pgina 24 de 118
Vdeo: Introduo
ao
Visual
Basic
.NET
Pgina 25 de 118
eliminada;
Pgina 26 de 118
Pgina 27 de 118
Saiba
como
encontrar
erros
atravs
do
Visual
Studio:
http://msdn.microsoft.com/pt-br/library/vstudio/sc65sadd.aspx
O cdigo acima ir compilar mesmo tendo duas variveis J no escopo
do mtodo Main. Note que a primeira varivel J foi declarada a nvel
Pgina 28 de 118
Pgina 29 de 118
Pgina 30 de 118
que
so
ponteiros
na
programao:
http://pt.wikipedia.org/wiki/Ponteiro_%28programa
%C3%A7%C3%A3o%29
Porm, considere o cdigo abaixo:
Pgina 32 de 118
O tipo object
Muitas linguagens de programao e hierarquia de classes contm um
tipo base, cujo todos os outros tipos de dados derivam. O C# no
exceo. No C# o tipo object o tipo base para todos os outros tipos
de dados definidos na linguagem, pr-definidos ou criados pelo
usurio. Isso quer dizer que o tipo object pode ser utilizado para
algumas situaes:
Pgina 33 de 118
Pgina 34 de 118
Pgina 35 de 118
Estruturas Condicionais
Estruturas condicionais permitem que um bloco de cdigo seja
executado apenas se uma ou vrias condies forem atendidas. O C#
tem duas estruturas para trabalhar com condies, a estrutura if, que
permite testar se uma condio especfica foi atendida, e o bloco
switch, que permite testar uma expresso com um diferente nmero
de valores.
Estrutura condicional if
O C# herdou a construo if...else do C e C++. A sintaxe dessa
estrutura muita intuitiva para qualquer desenvolvedor que j tenha
programado com uma linguagem procedural:
Pgina 36 de 118
Pgina 37 de 118
Pgina 39 de 118
9 10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
Pgina 40 de 118
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
Pgina 41 de 118
Pgina 42 de 118
Pgina 43 de 118
Saiba
mais: O
que
so
Interfaces
http://www.linhadecodigo.com.br/artigo/2999/entendendointerfaces-com-csharp.aspx
O exemplo mostra uma iterao em um vetor de string utilizando a
estrutura foreach. Cada vez que executado o loop a varivel x
alterada para conter um elemento do vetor.
A inferncia de tipo muito utilizada em estruturas foreach:
Pgina 44 de 118
FRUM:
Como vimos nesta unidade a linguagem C# tem duas formas bsicas
de tipos de dados, por valor e referncia. Em sua opinio qual o
cenrio ideal para utilizar cada um desses tipos?
RESUMO:
Nesta unidade foram apresentados conceitos primordiais para
desenvolver aplicativos utilizando todas as vantagens que a
linguagem C# pode proporcionar. Vimos que existem diferenas na
escolha do tipo de dados e como esses tipos so gerenciados em
memria. Tambm foram mostradas as estruturas de repetio e
condicionais disponveis na linguagem, sua sintaxe e suas
similaridades com a linguagem C.
SUGESTES DE LEITURA
SHARP, John. Visual C# 2008 - passo a passo. Porto Alegre:
Bookman, 2008.
LOUREIRO, Henrique. C# 4.0 com visual studio 2010. Lisboa: FCA,
2011.
MSDN. .NET framework application essentials. Disponvel em: <
http://msdn.microsoft.com/en-US/library/vstudio/ms172157
>.
Acesso em: nov. 2012.
MSDN. Introduction to the C# language and the .NET
Framework.
Disponvel
em:
<
http://msdn.microsoft.com/library/vstudio/z1zx9t92 >. Acesso em:
nov. 2012.
Pgina 46 de 118
Requisies HTTP
O protocolo de comunicao utilizado pelos browsers para se
comunicar com qualquer site chamado de Hypertext Transfer
Protocol (HTTP).
O HTTP permite que um cliente (navegador) requisite uma pgina
para o servidor utilizando mtodos especficos para cada situao.
Entre os mais importantes esto os mtodos GET e POST.
A URL (Uniform Resource Locator) acima utilizada para recuperar os
dados do produto cujo identificador o 5. Quando os parmetros de
uma requisio so enviados na URL, como acontece com o cdigo no
caso acima, utilizada uma requisio do tipo GET. Quando uma
requisio pode ser executada vrias vezes (vrios usurios iro
acessar essa mesma pgina) recomendado que se use o mtodo
GET.
O mtodo POST recomendado para ser utilizado em formulrios
HTML como, por exemplo, na insero de uma nova notcia em uma
pgina. Como essa operao ir alterar o estado de um recurso no
servidor deve ser evitado utilizar o mtodo GET, pois essa operao
poderia ser executada facilmente pela URL, o que poderia causar
falhas de segurana. Tambm deve ser observado que uma requisio
feita utilizando o mtodo POST no altera o formato da URL, pois os
parmetros so enviados no corpo da requisio HTTP.
Hypertext Markup Language
O HTML uma linguagem de marcao utilizada para formatar
documentos, e todos os navegadores conseguem interpretar HTML.
A primeira verso do HTML utilizada em grande escala foi a verso
2.0. A verso 3.2 introduziu novos recursos como as tabelas e
applets. Atualmente o HTML se encontra na verso 5 e promete
revolucionar a forma como documentos so apresentados na WEB,
incluindo suporte nativo para udio, vdeo e outros recursos.
Ao trabalhar com ASP.NET veremos que ele gera a maior parte do
cdigo HTML que teramos que criar manualmente, mas importante
entender como funciona o HTML para ter um maior domnio sobre a
pgina gerada.
Pgina 47 de 118
Por exemplo, o cdigo HTML a seguir renderiza uma pgina com uma
lista de opes e um boto:
Introduo ao ASP.NET
O ASP.NET o framework da Microsoft para criar aplicaes para
Internet. o sucessor do antigo ASP e sua principal vantagem ter
disponvel todos os recursos do .net Framework, como segurana,
cdigo gerenciado e as diversas classes j existentes.
O ASP.NET totalmente integrado ao Visual Studio. Com isso nunca
foi to fcil desenvolver para WEB. O Visual Studio prov ferramentas
de design, uma toolbox para trabalhar com controles e recursos
poderosos para debug.
Pgina 49 de 118
Scripts: Bibliotecas em
o JQuery e Modernizr.
so
alocadas
nesta
pasta,
como
mais: O
que
JQuery
http://www.codigofonte.net/dicas/javascript/310_jquery-o-que-e-ecomo-usar
Saiba
mais: O
que
Modernizr
http://maujor.com/tutorial/css3-html5-modernizr.php
Pgina 52 de 118
Pgina 53 de 118
Sobre o cdigo:
Podemos notar que foi apenas enviado para o cliente o contedo
esttico (HTML) e nenhuma instruo de servidor. Da pgina aspx
criada para o cdigo fonte gerado houve apenas uma diferena, a
adio de uma div identificada pela classe aspNetHidden. Esse um
recurso chamado View State muito utilizado no modelo Web Forms e
ser discutido em um capitulo especfico.
Tratando Eventos
Eventos so mtodos especiais que so executados quando uma ao
disparada. Uma pgina ASP.NET pode conter quantos eventos forem
necessrios,
Um dos eventos mais utilizados de uma pgina o Page_Load. Esse
evento executado quando uma pgina requisitada e carregada.
Para entender como o evento Page_Load funciona adicione a seguinte
tag em uma pgina aspx:
Pgina 55 de 118
Entendendo o PostBack
Verificamos anteriormente que um Web Form nada mais que um
grande formulrio contendo todos os elementos da pgina. Mas o que
acontece quando um desses elementos acionado? Por exemplo,
quando um boto pressionado?
Pgina 56 de 118
Pgina 57 de 118
Pgina 58 de 118
Pgina 59 de 118
Pgina 60 de 118
Saiba
mais: Codificao
Base64
http://pt.kioskea.net/contents/base/base64.php3
Pgina 61 de 118
Redirecionamentos
Pgina 62 de 118
Saiba
mais: Lista
de
cdigos
de
status
HTTP
http://pt.wikipedia.org/wiki/Anexo:Lista_de_c
%C3%B3digos_de_status_HTTP
FRUM:
Em sua opinio quais so as vantagens de uma aplicao WEB sobre
uma
aplicao
desktop?
Quais os desafios ao se construir uma aplicao para Internet,
levando em considerao o tipo de arquitetura e a grande quantidade
de variveis existentes nesse tipo de aplicao?
RESUMO:
Apresentamos nesta unidade os processos e tecnologias envolvidas
na construo de uma aplicao voltada para a Internet.
Foi introduzida a plataforma ASP.NET Web Forms, que nada mais
que um ambiente para construo de aplicaes WEB, vimos que seu
modelo de desenvolvimento muito parecido com o padro de
construo de aplicaes para desktop. Tambm conhecemos alguns
recursos importantes da plataforma, como o PostBack e View State.
Pgina 63 de 118
NETWORKS.
2013.
Disponvel
em:
http://jdjua.com/networking.htm >. Acesso em: 28 fev. 2013.
<
SUGESTES DE LEITURA
SILVA, Maurcio Samy. Construindo sites com CSS e (X)HTML.
So Paulo: Novatec, 2008
SHEPERD, George. Microsoft ASP.NET 4 Step by Step. Redmond:
Microsoft Press, 2010
MSDN. ASP.NET
Reference. Disponvel
http://msdn.microsoft.com/pt-br/library/9k6k3k4a
%28VS.85%29.aspx >. Acesso em: nov. 2012.
em:
<
System.Data.OleDb:
variedade
de
Saiba
mais: Viso
Permite conectar
bancos
geral
em
de
do
Sql
uma
grande
dados.
Server
https://www.microsoft.com/sqlserver/pt/br/product-info/overviewcapabilities.aspx
Os 2 namespaces so muito parecidos no que se referem a
nomenclatura das classes e como elas deve ser utilizadas. Vejamos o
esquema a seguir:
Figura - Namespaces do ADO.NET
Pgina 65 de 118
DataSet
Veja no vdeo abaixo os detalhes de como trabalhar com o
DataSet:
http://youtu.be/3awsqUSN1YQ
O DataSet faz parte de um modelo do ADO.NET chamado de Modelo
Desconectado.
O DataSet permite uma aplicao ter a
representao do banco de dados em memria sem a necessidade de
estar conectado. Isso quer dizer que uma aplicao pode fazer as
modificaes necessrias em memria para posteriormente replicalas ao banco, permitindo dessa forma que o banco tenha mais
conexes disponveis para serem utilizadas.
Veremos a seguir como trabalhar com algumas das classes descritas
considerando a seguinte tabela:
Pgina 66 de 118
Nome: tbCliente
Colunas:
codigo
(int),
dataNascimento (datetime).
nome
(varchar),
cpf
(varchar),
Pgina 67 de 118
Entendendo o cdigo:
Primeiramente foi criada uma string que contm todos os dados para
abrir uma conexo, como caminho do servidor, nome do banco e
opcionalmente usurio e senha. importante notar que existem
vrios padres para construo de uma string de conexo. Para saber
o formato de string de conexo que deve ser utilizada para um banco
especfico acesse o site:
http://www.connectionstrings.com
Logo depois foi instanciado um objeto do tipo SqlConnection. Como
vimos anteriormente esse objeto ir abrir a conexo com o banco de
dados. O Objeto do tipo SqlCommand foi criado com a instruo SQL
para persistir o cliente no banco de dados, foram utilizados
parmetros para receber os dados.
Pgina 68 de 118
Pgina 69 de 118
Entendendo o cdigo:
Nesse exemplo foi utilizado o mtodo ExecuteReader que retorna um
objeto do tipo SqlDataReader que permite ler dados do banco. O
SqlDataReader contm um mtodo chamado Read que retorna um
valor booleano True enquanto existirem linhas para serem lidas,
dessa forma podemos facilmente utilizar uma estrutura de repetio
para ler todos os valores retornados pela instruo executada.
Entity Framework
Vimos anteriormente que muito fcil trabalhar com banco de dados
utilizando o ADO.NET. O problema do cdigo anterior que ele
trabalha com dados e no com objetos.
Atualmente a maioria dos bancos utilizados comercialmente trabalha
de forma relacional e seu modelo se baseia basicamente em dados
distribudos em tabelas, linhas e colunas.
O C# guarda as informaes em objetos, logo para enviar esses
dados para uma base relacional deve ser feito o mapeamento desses
dados. Esse trabalho pode gerar muito cdigo e custar um tempo
elevado de desenvolvimento.
Pgina 70 de 118
Pgina 71 de 118
Pgina 73 de 118
Pgina 74 de 118
Master Pages
A maioria dos sites da web trabalha com uma estrutura padro que
utilizada para todas as pginas, sendo assim apenas o espao para
informaes alterado dependendo da seo acessada.
Considere o site
abaixo: http://www.freewebsitetemplates.com/preview/skitemplate/
Pgina 75 de 118
User Controls
Saiba
mais: Conceitos
Exemplo
Prtico:
User
Control
http://programandodotnet.wordpress.com/2010/11/12/conceitos-eexemplo-pratico-user-control
Temas
Global
Pgina
Pgina 79 de 118
Arquivos Resource
Um arquivo Resource um arquivo XML que contm chaves e valores
em diferentes idiomas. Para cada idioma criado um arquivo
Resource com as mesmas chaves, mas valores diferentes como
mostrado abaixo:
Pgina 80 de 118
Local Resources
Um Local Resource um arquivo que pode ser utilizado em apenas
uma pgina ASP.NET e deve ser associado ao Web Form da seguinte
forma:
Web Form: default.aspx
Resources:
default.aspx.en.resx -> Ingls
default.aspx.pt-br.resx -> Portugus Brasil
Para utilizar na pgina basta utilizar a sintaxe:
Global Resources
Podem conter qualquer nome seguindo o padro mostrado
anteriormente e podem ser utilizados em qualquer pgina da
aplicao. Segue um exemplo de utilizao:
Pgina 81 de 118
Saiba
mais: Lendo
resources
automaticamente
http://www.devmedia.com.br/globalizacao-lendo-resourcesautomaticamente/6428
Em sua opinio qual a vantagem da utilizao de recursos para
reaproveitamento de layout e da internacionalizao de um site?
RESUMO:
Vimos nesta unidade como trabalhar com dados provindos de um
banco atravs do ASP.NET, alm de recursos poderosos como o Entity
Framework e o LINQ. Tambm foram apresentadas tcnicas para
trabalhar com a parte visual de um site e como deix-lo disponvel
para pessoas do mundo inteiro utilizando internacionalizao.
SUGESTES DE LEITURA
SILVA, Maurcio Samy. Construindo sites com CSS e (X)HTML.
So Paulo: Novatec, 2008
SHEPERD, George. Microsoft ASP.NET 4 Step by Step. Redmond:
Microsoft Press, 2010
Pgina 82 de 118
MSDN. ASP.NET
Reference. Disponvel
http://msdn.microsoft.com/pt-br/library/9k6k3k4a
%28VS.85%29.aspx >. Acesso em: nov. 2012.
em:
<
Saiba
mais: Serializao
JSON
http://www.json.org/json-pt.html
Note que todos os pontos citados tem alguma relao com a
apresentao final para o usurio, isso porque as regras de negcio
de uma aplicao so pouco alteradas se comparadas com a
interface. Logo elas devem ser separadas de alguma forma para
facilitar a manuteno de cdigo e permitir futuras extenses da
aplicao.
Pgina 84 de 118
Padro MVC
O MVC (Modelo-Viso-Controle) um padro de desenvolvimento que
separa a interface, as regras de negcio e as aes disponveis na
aplicao em 3 diferentes mdulos:
Pgina 85 de 118
mais: Padro
MVP
http://imasters.com.br/artigo/18683/dotnet/mvp-e-aspnetintroducao-ao-passive-view/
VDEO AULA 02
ASP.NET MVC
O ASP.NET MVC um framework que contm todos os recursos
disponveis no ASP.NET, permitindo criar aplicaes WEB ricas
utilizando o padro MVC.
Algo que deve ficar claro que o ASP.NET MVC no veio para
substituir o j consolidado ASP.NET Web Forms, e sim para adicionar
uma nova forma de construir aplicaes web poderosas utilizando a
plataforma .NET.
Pgina 86 de 118
http://youtu.be/GYxQSIjftqs
Com a incluso do ASP.NET MVC como mais uma opo para
desenvolvimento WEB devemos entender quando devemos deixar de
utilizar o j conhecido Web Forms em favor do MVC. Vejamos
algumas das vantagens dessa arquitetura:
Facilita
testes
por
ser
uma
arquitetura
simples.
Modelo
Temos no modelo basicamente classes de domnio (que representam
o negcio) e classes para acesso a fonte de dados. O modelo
responsvel por passar os dados para o controle.
Uma forma de se construir o modelo a utilizao do Entity
Framework, que alm de criar as classes de domnio tambm cria
todas as classes necessrias para acesso aos dados que representam
essas classes.
Viso
A viso responsvel por apresentar os dados da forma solicitada.
Quando falamos de WEB geralmente essa apresentao feita
atravs de HTML, CSS e Javascript.
Pgina 87 de 118
Controle
O Controle responsvel por receber as requisies dos clientes e
mape-las para mtodos chamados de aes. O papel das aes
pedir as informaes requisitadas para o modelo e devolve-las para
as vises.
importante entender que as Aes devem ter responsabilidades
nicas e geralmente so compostas por pouco cdigo. Se voc notar
que uma ao est muito extensa, desconfie, pois algo pode estar
errado.
Veremos a seguir como trabalhar com cada uma das partes do
ASP.NET MVC.
Pgina 88 de 118
Pgina 89 de 118
mais: A
importncia
do
Data
Annotation
http://msdn.microsoft.com/pt-br/library/jj129537.aspx
Pgina 90 de 118
Saiba
mais: Usando
Arquivos
de
Configurao
http://msdn.microsoft.com/pt-br/library/gg537280.aspx#intro
Vises
Uma viso no ASP.NET MVC composta basicamente de 2 tipos de
elementos:
- Estticos: a parte da viso que enviada diretamente para o
cliente sem nenhum tipo de processamento, entre ele podemos citar
o HTML, CSS e Javascript (esse ultimo sendo dinmico apenas no
cliente).
- Dinmicos: a seo da viso que processada no servidor antes
de ser enviada para o cliente, geralmente o resultado do
processamento gera contedo esttico para ser enviado para o
cliente.
Para criar contedo dinmico em vises no ASP.NET utilizamos um
conceito chamado de View Engine. Uma View Engine um mdulo
plugvel do ASP.NET, ou seja, pode ser substituda por outra. A
diferena bsica entre as diferente View Engines disponveis a
sintaxe utilizada por cada uma delas. Cada View Engine utiliza uma
sintaxe diferente para construo do contedo dinmico em uma
Viso, isso quer dizer que a escolha da View Engine ir impactar
Pgina 91 de 118
No exemplo acima foi utilizado o tipo DateTime, saiba mais sobre ele
no
link
abaixo:
http://msdn.microsoft.com/ptbr/library/vstudio/system.datetime.aspx
Pgina 92 de 118
Algo que devemos notar que para cada bloco de cdigo dinmico
utilizando a View Engine ASPX devemos ter pelo menos 4 caracteres
() para delimitar o comeo e fim do bloco. O uso desses caracteres
pode tornar o cdigo de difcil leitura caso a Viso contenha uma
quantia considervel de contedo dinmico.
Para resolver o problema mostrado acima foi criada uma nova View
Engine chamada Razor. O Razor contm uma sintaxe mais simples e
inteligente e est sendo amplamente utilizada no ASP.NET MVC.
Para efeito de comparao entre as duas View Engines, veremos
como ficaria o exemplo mostrado anteriormente utilizando o Razor:
Pgina 93 de 118
Estruturas condicionais:
As estruturas condicionais so escritas utilizando o mesmo padro
mostrado anteriormente nas estruturas de repetio, veremos abaixo
um exemplo utilizando uma estrutura if:
Pgina 94 de 118
Conhea
outras
View
Engines
no
link
abaixo:
http://www.infoq.com/br/news/2010/07/Razor
Layouts
O ASP .NET 2.0 introduziu o conceito de Master Pages que permite
uma aplicao WEB definir uma estrutura visual padro onde todas as
pginas iro herdar, tornando o processo de alterao simples e
rpido.
O Razor utiliza esse mesmo conceito, simplificando ainda mais o
processo nomeado de Layout. Um Layout pode conter cdigo esttico
e dinmico que ser aproveitado por todas as outras pginas.
Veremos no exemplo abaixo como um Layout pode ser construdo:
Pgina 95 de 118
Pgina 96 de 118
Conhea
recurso
de
Sees
no
Razor
http://weblogs.asp.net/scottguportuguese/archive/2010/12/30/aspnet-mvc-3-layouts-e-secoes-com-o-razor.aspx?
utm_source=feedburner&utm_medium=feed&utm_campaign=Feed
%3A+scottguportuguese+%28ScottGu%27s+Blog+em+Portugu
%C3%AAs%29
Controles
Controles
so
classes
derivadas
da
classe
System.Web..Mvc.Controller e so basicamente compostas de Aes.
Aes so mtodos invocados quando uma requisio disparada.
Considerando essa URL uma ao chamada Detalhes do controle
Cliente ser invocada.
Uma ao definida como um mtodo pblico em um controle,
importante saber que todo mtodo pblico dentro de um controle
automaticamente considerado uma ao e exposto para qualquer
usurio que tenha conhecimento da correta URL para invoca-lo.
Pgina 97 de 118
RedirectResult
Representa
um
redirecionamento.
Pgina 98 de 118
FRUM:
Considerando os conceitos apresentados, cite as vantagens que voc
identificou quanto a utilizao o padro MVC para o desenvolvimento
na WEB. Quais os cenrios ideais para utilizao do ASP.NET MVC?
RESUMO
Vimos nesta unidade como o padro MVC estruturado e suas
grandes
vantagens
quando
aplicado
adequadamente
no
desenvolvimento de aplicaes para WEB.
Foi apresentada a tecnologia ASP.NET MVC, o framework que utiliza
todos os recursos j existentes no ASP.NET aplicado ao padro MVC,
Pgina 99 de 118
ASP.NET
MVC
overview.
2013.
Disponvel
em:
<
http://www.asp.net/mvc/tutorials/older-versions/overview/asp-netmvc-overview >. Acesso em: 28 fev. 2013.
SUGESTES DE LEITURA
LOUREIRO, Henrique. C# 4.0 com Visual Studio 2010. Lisboa:
FCA, 2011
MSDN. ASP.NET
MVC
Overview. Disponvel
em:
http://msdn.microsoft.com/enus/library/dd381412%28v=vs.108%29.aspx >. Acesso em:
2012.
<
nov.
MSDN. ASP.NET
MVC
3
Razor.
Disponvel
em:
<
http://msdn.microsoft.com/enus/vs2010trainingcourse_aspnetmvc3razor.aspx >. Acesso em: nov.
2012
PALERMO, Jeffrey; Scheirman, Ben; Bogard, Jimmy. ASP.NET MVC
em Ao. So Paulo: Novatec, 2010
mais: Testes
Unitrios
http://msdn.microsoft.com/ptbr/library/ms182515%28v=vs.90%29.aspx
Esses so os passos necessrios para criar um projeto com a
estrutura bsica para comear a desenvolver, Veremos a seguir
alguns conceitos importantes para entender como o ASP.NET MVC
trabalha com requisies.
Roteamento
O ASP.NET MVC contm um importante sistema de roteamento para
conseguir mapear uma requisio provinda de um cliente para algum
local que ir tratar e responder essa requisio.
Toda requisio no ASP.NET MVC mapeada para uma Ao de um
Controle e a URL informada ir determinar quem ir tratar essa
requisio.
Quando criamos uma aplicao em ASP.NET MVC esta j contm uma
configurao padro de roteamento para conseguir mapear
requisies. O arquivo padro para configurao das rotas chamado
de Global.asax.
Pgina 103 de 118
Saiba
mais: Arquivo
Globalx.asax
http://msdn.microsoft.com/pt-br/library/2027ewzw
%28v=vs.85%29.aspx
Para entender melhor vamos analisar a figura abaixo:
Figura Fluxo de Roteamento no ASP.NET MVC
Saiba
mais: Tipos
Annimos
http://msdn.microsoft.com/pt-br/library/vstudio/bb397696.aspx
Para entender melhor vejamos os exemplos abaixo:
Sesso
A seo no ASP.NET um recurso utilizado para guardar informaes
do usurio que devem ser mantidas entre as requisies ao servidor.
Como exemplo podemos citar uma aplicao web que contm um
sistema de autenticao. Nesse sistema o usurio deve se logar
atravs de um formulrio e em cada requisio posterior o servidor
deve reconhecer o usurio sem a necessidade de um novo login.
Para entender como funciona o recurso de sesso no ASP.NET vamos
primeiramente entender o problema que ele veio resolver atravs do
exemplo abaixo:
View:
Cookies
Cookies so pequenos arquivos de texto armazenados no computador
cliente. O cookie sempre enviado para o servidor quando uma
requisio feita, e pode conter informaes importantes para o
funcionamento de uma pgina, por exemplo o nome de usurio do
visitante e suas preferncias.
Para criar um cookie basta serem informados o nome, valor e data de
expirao. Todo cookie deve conter uma data de expirao para que
possa ser eliminado. Devemos lembrar que um cookie pode ser
eliminado antes da data de expirao, pois o usurio pode limpar os
cookies do navegador a qualquer momento.
Veremos a seguir o cdigo para criar um cookie:
HttpCookie cookie
= new HttpCookie("ultimo_acesso");
cookie.Value
= DateTime.Now.ToString();
cookie.Expires
= DateTime.Now.AddDays(1);
Response.Cookies.Add(cookie);
Primeiro instanciado um objeto do tipo HttpCookie e passado
seu nome para o construtor. Depois so atribudos valores para as
propriedades Value e Expires. A propriedade Value guarda o valor do
cookie, no caso acima a data do ultimo acesso do usurio ao site. J
a propriedade Expires guarda a data de expirao do cookie, o valor
DateTime.Now.AddDays(1) representa a data atual acrescida de 1
dia. Por fim utilizado o comando Response.Cookies.Add(cookie)
para gravar o cookie na maquina cliente na resposta da requisio.
Veremos no exemplo ao seguir como podemos mostrar ao usurio a
data do ultimo acesso utilizando cookies:
View Index:
resgatado
com
a
instruo
Request.Cookies["ultimo_acesso"].Value.
Em cada visita da pgina acima ser mostrado a data da ltima
visita, desde que o usurio clique no boto para gravar o cookie.
Para deletar um cookie da mquina do cliente basta enviar para o
cliente o cookei que deseja remover com alguma data passada:
Pgina 112 de 118
HttpCookie cookie
=
new HttpCookie("ultimo_acesso");
cookie.Expires
= DateTime.Now.AddDays(-1);
Response.Cookies.Add(cookie);
No cdigo acima o cookie ultimo_acesso ser deletado, pois ele tem
a data de expirao menor que a atual.
Expondo Servios na Internet com ASP.NET WEB API
Grande parte do sucesso de alguns dos maiores sites vem pelo
extremo cuidado com relao usabilidade. Os visitantes esto cada
vez mais exigentes e esperam uma experincia semelhante a que
tinham nos aplicativos desktop, ou seja, querem respostas rpidas e
rica interao. O recurso utilizado para alcanar esse nvel de
usabilidade na WEB chamado de AJAX (Asynchronous Javascript
and XML) que faz uso de requisies assncronas para evitar a
atualizao total da pgina.
Saiba
mais: Introduo
ao
AJAX
http://www.linhadecodigo.com.br/artigo/3585/ajax-basicointroducao.aspx
Para utilizar AJAX em uma pgina precisamos de um servio que
disponibilize os dados serializados em XML ou JSON, para isso
existem vrias tecnologias disponveis na plataforma .NET, entre ela
podemos citar os servios em ASMX, ASHX e WCF.
Com a chegada do ASP.NET 4 foi introduzida uma nova tecnologia
chamada de ASP.NET WEB API, que permite a criao de servios
HTTP que podem ser consumidos pelos mais diversos tipos de
clientes, como navegadores e aplicativos mveis.
O ASP.NET WEB API mais uma das tecnologias que utilizam todos
os recursos do ASP.NET, mas importante entender que esse recurso
tem como objetivo criar servios e no pginas WEB, como mostrado
abaixo:
mais: REST
verbos
HTTP
http://msdn.microsoft.com/pt-br/magazine/dd315413.aspx
A seguinte conveno deve ser utilizada para que um mtodo consiga
ser invocado:
Nome do Mtodo: verbo HTTP + Descrio
Exemplo: GETCliente(), POSTCliente()
HTML:
JAVASCRIPT:
Saiba
mais: jQuery
http://www.maujor.com/blog/2008/10/22/introducao-a-bibliotecajquery/
FRUM:
Cite cenrios adequados para a utilizao de Cookies e Sesso no
ASP.NET, e quais as desvantagens de cada um dos recursos.
RESUMO:
Vimos nesta unidade como trabalhar com um recurso importante do
ASP.NET MVC, o roteamento de requisies. Tambm foram
apresentados elementos para trabalhar com persistncia de dados
entre requisies e a tecnologia ASP.NET WEB API, tecnologia que
permite criar e disponibilizar requisies na WEB.
SUGESTES DE LEITURA
PALERMO, Jeffrey; Scheirman, Ben; Bogard, Jimmy. ASP.NET MVC
em Ao. So Paulo: Novatec, 2010
LOUREIRO, Henrique. C# 4.0 com Visual Studio 2010. Lisboa:
FCA, 2011
Pgina 117 de 118
MSDN. ASP.NET
MVC
Overview. Disponvel
em:
http://msdn.microsoft.com/enus/library/dd381412%28v=vs.108%29.aspx >. Acesso em:
2012.
<
nov.
MSDN. ASP.NET
MVC
3
Razor.
Disponvel
em:
<
http://msdn.microsoft.com/enus/vs2010trainingcourse_aspnetmvc3razor.aspx >. Acesso em: nov.
2012