O que é?
Feliz  cada vez mais nos estamos a virar mais 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 açã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)), podemos 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.

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

Cumpz

Popularity: 19% [?]