Programação: ASP.NET
Olá a todos, para quem não me conhece chamo-me Henrique Graça e há uns meses atrás fui responsável por trazer até ao nosso PPLWARE tutorias de C# em Windows Forms, neste meu regresso vou falar novamente de c# mas para Web Forms, é claro que estou a falar de ASP.NET.
O que é? Feliz ou infelizmente cada vez mais nos estamos a virar para o “mundo” da WEB e para a CLOUD. A prever isso a Microsoft lançou já há alguns anos o ASP.NET (Active Server Pages), que ao contrário do que se diz não é uma linguagem de programação mas sim uma Framework para desenvolvimento WEB. Como é uma Framework assente na Framework .NET podemos usar para programar as linguagens C# e VB.NET. Em ASP.NET criamos páginas (WEB Forms) dinâmicas em que o código é corrido no servidor como é o caso de outras tecnologias (PHP, JSP).
Pressupostos: Não que seja imperativo mas para sermos bons programadores de WEB, antes de sequer abrir o Visual Studio, temos de entender o mundo que vai por trás do browser. Temos de entender o protocolo HTTP, Request / Response, ciclos de vida de uma página, diferença entre cliente e servidor, State Management, PostBack, JavaScript, CSS e claro HTML. Não irei falar sobre tudo isto, apenas do que está relacionado com o ASP.NET, mas é bom sabermos o que está por detrás de cada acção que fazemos no browser
Cliente VS Servidor: Como já referi uma Web Form ASP.NET é executada do lado do servidor, o que significa que cada vez que pedimos (Request) essa página ela é executada no servidor e posteriormente devolvida (Response) para o browser em HTML, esta operação ocupa largura de banda e tempo, logo se o podermos evitar ou então não enviar a página toda melhor (Partial PostBack (AJAX)), podermos concretizar isso usando JavaScript, que é uma linguagem que corre directamente no Browser (Cliente) ou AJAX (Javascript assíncrono e XML). Não significa que no cliente é melhor ou que no servidor é mais seguro, o grande desafio das WebForms é a fusão entre código do lado do cliente e servidor, tornando assim a página rápida e menos pesada.
PostBack: O PostBack é o nome que se dá à operação de Request e Response, ou seja, quando uma página inteira e o seu conteúdo são enviados para o servidor, processados e devolvidos para o browser. Sabem quando fazem refresh a uma página ou carregam num botão e o browser fica branco e depois aparecem os conteúdos? É isso um PostBack. Mais tarde falaremos da propriedade Page.IsPostBack do ASP.NET. Felizmente existem formas de contornar isso graças ao AJAX que permite que sejam só enviados pedaços da página e de modo assíncrono o que permite continuar a trabalhar sem o browser bloquear.
Ciclos de vida de uma página: Falaremos aqui do mais importante e utilizado o Load. É a melhor altura para fazer acções devido ao facto de que os controlos já estão todos carregados, o viewstate disponível e ainda não é tarde para fazer alterações pois não chegou ao Render que é quando o HTML da página já está todo desenhado. Para mais informações podem seguir este link: http://msdn.microsoft.com/en-us/library/ms178472.aspx
State Management: Entende-se por State Management a capacidade do ASP.NET poder guardar informação entre PostBacks da mesma ou de outras (várias) páginas. Existem várias opções relacionadas com desempenho e capacidade, cliente ou servidor:
Do lado do cliente:
View State: o view state “vive” nas páginas, se por curiosidade virem um source code de um aspx (extensão das páginas ASP.NET) vão reparar numa data de “gatafunhos” contidos num Hidden Field chamado viewstate. O viewstate é criado a partir de cada controlo que adicionamos á nossa página para, entre postbacks, poder manter o seu valor.
Ex: Temos uma caixa de texto na página e ao carregar num botão a página faz postback mas o valor permanece na caixa de texto. Vantagens: Simples, não requer implementação Desvantagens: Não é recomendado para guardar muita informação pois a página ficará lenta.
Hidden Fields: Uma espécie de variável global na própria página Vantagens: Fácil implementação Desvantagens: Pouco seguro (ao ver o source da página está lá o valor) e claro pesa na página
Cookies: Todos já ouvimos este termo, são pequenos ficheiros guardados no lado do cliente para poupar viagens desnecessárias ao servidor. Vantagens: Pode ser configurado o tempo de expiração e simples implementação Desvantagens: Pouca capacidade de armazenamento, cliente tem de aceitar cookies, pouco seguro pois o cliente pode alterar as informações.
Do lado do Servidor:
Application State: Informação guardada no servidor disponível em todas as páginas e utilizadores até que o processo da aplicação termine. Vantagens: Variáveis globais, fácil implementação. Desvantagens: Ocupa memória no servidor.
Session State: Informação guardada no servidor disponível em todas as páginas enquanto a sessão do utilizador estiver disponível (mesmo Browser), tem limite de tempo de inactividade. Vantagens: Variáveis globais, fácil implementação. Desvantagens: Ocupa memória no servidor.
Ferramentas úteis para ajudar no desenvolvimento e debug: Firebug: http://getfirebug.com/ Fiddler: http://www.fiddler2.com/fiddler2/ Debugger do Internet Explorer 8
Por hoje dou por terminado o tutorial, até ao final desta época de tutoriais teremos concluído um site para um clube de vídeo. Vamos usar Master Pages, Ajax e várias técnicas para construir o site.
Como sabem estou aberto a sugestões e espero que gostem deste nosso novo desafio. Cumprimentos a todos.
Este artigo tem mais de um ano
Olá, Henrique Graça.
Boa iniciativa para o ASP.NET
Qual a diferença da ASP.NET da ASP.NET MVC?
Continua com esta iniciativa.
Boas,
Bom ai está uma boa questão e com alguma sorte e tempo quero ver se chego a falar de MVC nos tutoriais.
Bom diferenças.
O termo MVC não é exclusivo do ASP.NET, o MVC é um modelo de arquitectura de aplicações WEB, a Microsoft apenas a adoptou para os developers de .NET e criou assim uma fantástica framework chamada ASP.NET MVC.
Ao usar MVC ao contrário do ASP.NET, em que temos páginas e code behind, dividimos a nossa aplicação em Model (Dados), View (Layout) e o controller ( Ligação entre dados e Layout).
Com esta grande diferença será muito mais fácil gerir e acompanhar o aumento de complexidade do nosso site.
Outras diferenças são o facto de não existir o clássico PostBack, Viewstate e podermos configurar o routing do nosso site.
Existem mais diferenças mas neste momento só me lembro destas.
Cumprimentos,
Henrique Graça
Parabéns pelo Tutorial!
Vou acompanhar 🙂
Este artigo, apesar de muito superficial, permite a qualquer leigo ficar com uma ideia do que é esta tecnologia.
Para se chato vou levantar 2 questões faladas no artigo. A primeira está relacionada com o conceito de PostBack. Está escrito que é o nome que se dá à operação de request/response, o que não é de todo correcto. Apenas estamos na presença de um PostBack quando o formulário da página é enviado para o servido, usando o metodo POST do protocolo HTTP. Na maioria da vezes são feito pedidos ao servidor para devolverem o conteúdo de uma página, usando o método GET do protocolo HTTP, e isto não é um PostBack. A segunda questão está relacionada com os cookies. Não entendi qual a ideia de dizer que os cookies poupam viagens ao servidor. Nunca tinha lido tal coisa (talvez ande a ler pouco :$). Os cookies são um repositórios de dados com características diferentes dos outros, como foi bem referido no artigo. Apenas isso.
Abraços e beijinhos
Boas,
Sim realmente tens razão mas como escrevi não iria falar do protocolo HTTP, por isso falei só do inicio e fim da linha o Request e Response, mas está muito bem observado da tua parte.
Quanto aos cookies quis dizer que, como os dados são armazenados no cliente, ao fazer o request de uma página podemos não só enviar a página como os cookies com dados.
“For example, if a user requests a page from your site and your application sends not just a page, but also a cookie containing the date and time, when the user’s browser gets the page, the browser also gets the cookie, which it stores in a folder on the user’s hard disk.”
Obrigado pelos reparos.
Cumprimentos,
Henrique Graça
Boas,
Bom post.
A ver se com isto vou praticar e aprender algumas coisas para desenferrujar na programação web.
Deepimpact
Fantástico! Vai ser desta 😀
Força nisso, vou manter-me atento.
Parabéns. Excelente iniciativa! Keep up the good work!
Boas,
Seja bem aparecido sr. Henrique Graça.
Ainda por cima com um tutorial bem estruturado.
Vemo-nos em Outubro.
Fica bem,
David
Boas,
Já era tempo de eu perceber as aulas do semestre passado.
Estás lá…
Abraço,
Luís
Off Topic
E não é que o Mono (ou melhor, uma versão comercial chamada Novell’s MonoTouch 1.0) permite criar aplicações para iPhone de forma mais produtiva, integrando-se com o Apple iPhone SDK ? Para quem ainda não conhece fixe o nome: Miguel de Icaza, líder do projecto Mono e vice-presidente da Novell para o desenvolvimento desta plataforma.
http://www.infoworld.com/d/developer-world/iphone-gets-net-app-development-194
Eu sempre tive vontade de ser bom nisso, só falta coragem pra estudar.
Olá, bom dia,
Eu sou programador ColdFusion e agora PHP também e estou muito interessado em trabalhar com ASP.NET.
Espero que a iniciativa continue.
Um abraço
César Oliveira
Simplesmente achei fantástico. Simples e prático.
Boas, acho este tópico e este iniciativa bastante útil, contudo penso que no que referes ao ciclo de vida da página devias também fazer algumas referencias aos outros estados da página, como render, pré-render, por vezes dão jeito, e o saber….só ocupa o espaço da ignorância!
Antes de mais quero felicitar o autor (Henrique Graça) pela iniciativa! Trabalho diariamente em ASP.NET (C#, VB) mas é sempre bom “ouvir” novas ideias e novas opiniões.
Vai ser bom acompanhar estas “lições”.
cumprimentos,
Fernando Silva
Boas, muito boa iniciativa vou continuar a acompanhar!
Cumprimentos
Bom tutorial para começar, parabéns!
Neste momento estou a trabalhar em JSF, no entanto o ASP.NET continua a ser a minha linguagem web preferida 🙂 por isso vou acompanhar regularmente os tutorias, FORÇA!
Bom trabalho rapaz…
Ainda bem que para a programação não tens tu preguiça.
Abraço.
Fui a esta página http://www.microsoft.com/exPress/download/ mas não sei qual o visual studio adequado… Alguém me ajuda?
Cumprimentos.
Isso quer dizer que eu posso muito bem programar em delphi 2009, e sem problema nenhum fazelo rodar na web?
obrigado
que giro
http://www.scribd.com/doc/64242645/34/ASP-NET-e-compilado-nao-e-interpretado