ASP.NET – Introdução e conceitos

46 Comentários

Estamos de volta com mais uma temporada de guia práticos sobre ASP.NET, conforme a escolha dos nossos visitantes. Hoje começo com uma overview à tecnologia ASP.NET. Fiquem atentos e participem neste brainstorming de programação.

1. O que é ASP.NET?
ASP.NET é uma tecnologia de scripting do lado do servidor, esta tecnologia permite colocar numa página web, scripts que irão ser executados por um servidor.

ASP.NET é uma tecnologia de scripting do lado do servidor, esta tecnologia permite colocar numa página web, scripts que irão ser executados por um servidor.

  • ASP, significa Active Server Pages
  • ASP.NET, corre no servidor de IIS
  • IIS (Internet Information Services), é um servidor de internet da Microsoft
  • IIS vem instalado e é gratuito nos servidores Windows ( inclui Windows 2000 e Windows XP Professional)

ASP.NET é compilado não é interpretado:

ASP.NET bem como todas as aplicações .NET, são compiladas. É impossivel correr código C# ou VB sem que esteja compilado.
Felizmente as aplicações ASP.NET não precisam de ser compiladas todas as vezes que são executadas, em vez disso o código “IL” é criado uma vez e actualizado apenas quando o source code é alterado.
Os ficheiros ficam em cache no servidor na directoria “c:\windows\microsoft.net\framework\[versão]\temporary asp.net files”.

Esta afirmação depende do tipo de projecto que escolhemos. Se optarmos por um Web Project o código é todo compilado quando compilamos o projecto. Caso a opção seja um simples Web Site, cada página é compilada assim que for feito o “Request”.

2. Web Forms

As páginas ASP.NET ( conhecidas como Web Forms) são uma parte vital de uma aplicação ASP.NET, pois providenciam o output para o browser depois de o cliente ter feito o “Request”.

Este conceito foi criado para facilitar a migração de programadores das tecnologias de cliente (Windows Forms) para a Web, usando as mesmas facilidades do interface windows, como arrastar botões.

Uma página ASP.NET é:

  • Ígual a uma página HTML
  • Pode conter HTML, XML e scripts
  • Os scripts são executados no Servidor
  • Tem a extensão “aspx”
  • Todos os controlos têm de estar contidos dentro de um “<form>”
  • A “<form>” tem de conter uma tag “runat=server”
  • O atributo “runat=server”, este atributo significa que a form deve ser processada no lado do servidor. Também indica que os controlos incluidos nesta form estão assecíveis do lado do script.
3.  Como funciona?

Recordar que:

  • As aplicações são executadas no servidor: Imagine que tem uma página em que possibilita que os clientes gravem comentários. O utilizador faz estas operações no browser, mas para gravar o comentário precisamos de fazer um update na base de dados, para isso o nosso código tem de correr no servidor. O ASP.NET trata destes eventos com uma técnica chamada PostBack, que envia a página (Form) quando certas acções são executadas. Quando o ASP.NET recebe a página, pode executar os eventos correspondentes do lado do servidor.
  • As aplicações Web são “stateless” (não guardam estado): Por outras palavras, assim que uma página é renderizada em HTML, os objectos são destruidos e todas as informações do cliente são descartadas. Este modelo é muito bom para aumentar a escalabilidade e o tráfego das aplicações, mas causa alguns problemas para oferecer uma experiência semelhante a uma aplicação Windows. Para colmatar esta lacuna o ASP.NET oferece várias ferramentas, a mais notável é o mecanismo chamado View State, que automáticamente coloca informação na página num “hidden field”, falaremos melhor desta e outras ferramentas.

ASP.NET utiliza um modelo de eventos, neste modelo, adicionamos controlos à página e escolhemos que eventos queremos responder. Cada “event handler” é um método discreto que mantêm o código limpo e arrumado.

Como funcionam os eventos?

  1. A nossa página corre pela primeira vez. ASP.NET cria a página e controlos associados, o código de inicialização é executado, a página é renderizada em HTML e retornada para o cliente. Os objectos são também libertados da memória do servidor.
  2. Numa determinada altura o utilizador executa uma acção que origina um PostBack, como clicar num botão. Toda a informação da página é enviada para o servidor.
  3. O ASP.NET intercepta a página e cria de novo os objectos no servidor, colocando-os no estado em que estavam a ultima vez que foram enviados para o cliente.
  4. Depois o ASP.NET verifica qual foi o evento causador do PostBack e dispara o evento correspondente. Nesta altura executamos o código associado ao evento e actualizamos a informação referente aos objectos.
  5. A página modificada é renderizada em HTML e devolvida ao cliente com os novos dados. Os objectos são retirados da memória do servidor.
4. Page Lifecycle

Existem dois tipos de eventos que originam um PostBack:

  1. Immediate Response Events : Executados sempre que carregamos num botão ou utilizamos a função Javascript “__DoPostBack()”
  2. Change Events: Sempre que seja alterado o estado de um controlo, como alterar o valor de uma checkbox ou textbox. Se a propriedade AutoPostBack estiver activa o evento é executado imediatamente, caso contrário é executado no próximo PostBack da página.

Imaginemos que temos um página com um botão de submit e uma textbox sem a propriedade AutoPostBack activa. Alteramos o texto e carregamos no botão. O que acontece?

O ASP.NET executa estes eventos, por ordem:

  1. Page.Init
  2. Page.Load
  3. TextBox.TexChanged
  4. Button.Click
  5. Page.PreRender
  6. Page.Unload

Existem mais eventos, mas para já apenas precisamos de saber estes.

Exercicio: Testar os eventos.

Vamos criar um novo projecto, uma aplicação ASP.NET vazia.

Adicionamos uma nova WebForm:

Adicionamos um botão e uma label. A label tem a propriedade “EnableViewState = False”, para não incrementar o valor sempre que é feito um novo PostBack. Por defeito esta propriedade está activa, é uma das formas mencionadas para guardar o estado dos controlos entre cada PostBack.


Carregamos na nova página com o botão direito do rato e escolhemos “View Code”

Adicionamos os eventos que queremos “tratar”. Os eventos da página têm o prefixo “page”, desta forma o ASP.NET sabe que são metodos especificos que tem de executar. Esta associação é feita pelo atributo “AutoEventWireup=true” na página. Para adicionar um evento ao botão podemos ir ao design da página e clicar duas vezes no botão.

De seguida executamos o projecto ( F5 ou ctrl + F5). Este será o resultado.

Primeira execução:

Como podemos observar os eventos são executados pela ordem que já referimos.

Segunda execução:

Depois de clicar no botão, é executado o PostBack. Como podemos ver a propriedade Page.IsPostBack é verdadeira, logo sabemos que não é a primeira execução da página. Depois do evento Page_Load são executados os eventos do controlo que originou o PostBack.

Por hoje terminámos. Neste tutorial incidimos sobre alguns dos conceitos de ASP.NET. No próximo tutorial vamos falar sobre os objectos Request, Response e sobre state management (View State, Cookies, Session, Application).

Caso tenham alguma questão, coloquem nos comentários, terei todo o gosto em responder.

Comentários

46

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *

  1. Avatar de EP

    O artigo está excelente, queria só fazer um aparte que muitos podem não saber, existe uma ferramenta gratuita da Microsoft para desenvolvimento de sites e webservices que é o Web Developer (http://www.microsoft.com/express/Web/), não tem que ter uma licença ($$$$) de Visual Studio completa!!
    Era só este o aparte para irem todos a correr para os sites que sabemos “adquirir” licenças do VS, de resto fico a aguardar a continuação!!!

    1. Avatar de EP

      Só uma correcção, é para “não irem a correr para os sites” omiti uma palavra na ultima linha.

  2. Avatar de Deywid Dutra
    Deywid Dutra

    \o/
    Desculpa cobrar no outro post 😀

    1. Avatar de Vítor M.

      Fazes muito bem. É sinal que o Henrique tem quem usufrua do seu conhecimento e da sua partilha.

      Só comentando é que ele tem a percepção do quanto é valioso o seu trabalho.

    2. Avatar de Henrique Graça
      Henrique Graça

      Boas,

      Estava prometido, tens de cobrar 🙂

      Cumprimentos.

  3. Avatar de TC
    TC

    Muito bom :), algumas coisas fazem muito mais sentido agora.
    Fico à espera do próximo guia.

  4. Avatar de Fernando Jorge
    Fernando Jorge

    Olá Henrique,

    Pelo que vejo, estás a usar o VStudio 2010… é a versão Express?
    Para os tutoriais, usar a versão Expresse ou a normal é indiferente?
    Já alguma vez experimentaste o sharpdevelop?

    Desculpa as perguntas todas… já não programo há uns tempos, mas tinha andado a pensar em fazer umas experiências e ainda não me decidi qual a ferramenta a usar. 🙂

    1. Avatar de Henrique Graça
      Henrique Graça

      Olá Fernando,

      Estou a utilizar a versão Ultimate. Para o tipo de utilização no âmbito destes tutoriais, a versão Express é mais que suficiente.

      Já utilizei o SharpDevelop, apesar de preferir o Visual Studio, parece ser uma boa alternativa. Só ainda não vi muitas vantagens entre o SharpDevelop e o Visual Studio Express.

      Se queres fazer experiências utiliza as ferramentas oficiais, assim poupas em surpresas. A versão express dá para experimentar muitas coisas.

      Cumprimentos.

      1. Avatar de Fernando Jorge
        Fernando Jorge

        OK!! Obrigado!
        O sharpdevelop, provavelmente conseguirá ultrapassar algumas limitações que a versão Express terá em relação (por exemplo) à Ultimate.

        Seja como for, já estava meio inclinado para o VSExpress… acho que vou mesmo instalar essa plataforma.

  5. Avatar de Fernando
  6. Avatar de Fernando
    Fernando

    Qual a ferramenta/linguagem que aconselham para a criação de uma página WEB? ASP,PHP ou até mesmo utilizar o JOOMLA ou outra ferramenta do género.
    Obrigado.

    1. Avatar de Henrique Graça
      Henrique Graça

      Boas,

      Essa pergunta apenas tu a poderás responder. Depende muito do teu background como programador e do objectivo do teu site.

      Depende dos teus conhecimentos. Para mim depois de ter trabalhado com ASP, PHP e ASP.NET, prefiro ASP.NET. Acho que é muito mais prático e o código é muito mais arrumadinho, evitas código em esparguete.
      Se optares por ASP.NET, tens uma das melhores ferramentas para programadores, Visual Studio, ao teu dispor.

      Depende dos teus objectivos, podes usar um CMS como o WordPress, Joomla, etc, assim não te preocupas com desenvolvimento só com o conteúdo.

      Cumprimentos.

      1. Avatar de Duarte Brito
        Duarte Brito

        Concordo totalmente!!!!

      2. Avatar de Henry Jr
        Henry Jr

        Código arrumadinho? Se me dizer que é mais rápido, que já existem vários plugins que só precisam arrastar pra tela, TUDO BEM! Mas o código gerado pelo VISUAL STUDIO só me faz lembrar o extinto FRONTPAGE. O CSS que ele gera é simplesmente TRISTE. Ao olhar o código vemos as tag`s style=”” A LOT! Da pra arrumar isso? Da sim. Mas ai gera mais trabalho… Sinceramente? Não que eu prefira php, mas pelo menos quando programo em PHP (OO, sem “GAMBIARAS”) eu sei exatamente o que está sendo executado e onde se está. Com um CMS a estrutura fica toda separadinha, o que é layout pra um lado, o que é programação pra outro, folhas de estilos (css), libs de javascript (jquery). Mas concordo com o “Essa pergunta apenas tu a poderás responder”, plenamente.

        O BOM É O QUE TE SUSTENTA!

        1. Avatar de Henrique Graça
          Henrique Graça

          Boas,

          O código que estou a falar é o de servidor, não ter tags de script no código HTML. Ter tudo separado em ficheiros, um para o código Servidor e outro para o HTML.

          Quanto ao HTML gerado pelos objectos, no “View Source” da página, só alguns é que não CUMPRIAM os standards, como por exemplo os menus e a gridview. Como disse não CUMPRIAM, agora na versão 4, foram todos alterados e agora são 100% compatíveis com as boas práticas de CSS.

          É claro que podemos ter ficheiros com CSS, Javascript, etc, separados e nas pastas que queremos é só referenciar, como em todas as tecnologias WEB. Até existe um conceito de Themes e Skins que não existe em mais nenhuma linguagem.

          Cumprimentos.

        2. Avatar de lmx
          lmx

          lol…
          o código gerado por essas tretas parece um puzle, por isso é que não o uso, se isso fizesse código decente ai sim, mas é muito complicado produzir código decente, até porque grande parte do trabalho de desenvolvimento depende muito da utilidade que vais dar ao projecto e do intelecto do programador e isso é impossível reproduzir.
          um exemplo será por exemplo fazer o repaint gráfico da aplicação(que estas a produzir)…como é que a maquina vai saber se a trhead que trata desses eventos deve ou não ter maior prioridade…é simples…não sabe faz as coisas de forma genérica…igual para tudo.
          Do meu ponto de vista é muito mau para a evolução de um programador escolher um IDE apenas porque é mais fácil programar nele…

          cmps

        3. Avatar de Joao Cardoso
          Joao Cardoso

          Cumpro as 1001 boas práticas de programação. Dá mais trabalho? Não!
          Até podes usar asp.net MVC para usar camadas no teu projecto separando a lógica de negócio da lógica de apresentação. Fazes o desenvolvimento, teste e manutenção isoladamente. Já programei em vários IDE’s: Eclipse, NetBeans, WebSphere.. Todos têm prós e contras! Mas não vamos ser obstinados! Um mau programador é mau com qq ferramenta, se calhar o que querias dizer é que um mau programador talvez consiga fazer qq coisa com o Visual Studio.. aí claro que saí borrada

    2. Avatar de Duarte Brito
      Duarte Brito

      Depende do objectivo final e de umas outras quantas variáveis pelo meio!!!!

      1. Avatar de Fernando
        Fernando

        O site a desenvolver diz respeito a uma Câmara Municipal. Já programei com php,asp,joomla, mas apenas superficialmente em trabalhos enquanto estudante. Queria aproveitar o desenvolvimento do respectivo portal para aprofundar os conhecimentos relativamente a alguma linguagem/CMS

        1. Avatar de Hugo Teixeira
          Hugo Teixeira

          sites em joomla para alem de saberes o que é q mts addons fazem efectivamente não é um risco de segurança ?
          ainda por cima para uma câmara … uhhh

    3. Avatar de Luís sá
      Luís sá

      JAVA EE 6, MVC usando JSF 2.0, Managed Beans, JPA 2.0
      Editor Netbeans 6.9

      http://wiki.netbeans.org/DevelopJavaEE6App

  7. Avatar de João Carvalho
    João Carvalho

    Está muito bom. Muito simples e organizado !
    Excelente, continua 😉

  8. Avatar de Ricardo Trindade
    Ricardo Trindade

    Boas!

    Eu recomendo um CMS para criar websites (utilizo o Typo3). Para aplicações web, recomendo ASP, PHP, etc. (utilizo o ASP, mas queria utilizar algo OpenSource).

    Uso o Visual Studio Express a nível profissional. Para criar aplicações web, o Express serve-me perfeitamente. Atenção, que digo: serve-me (a mim). Uso-o com bases de dados Oracle, Postgres e MSSQL.

    1. Avatar de Fernando
      Fernando

      Joomla VS Typo3, já agora seria interessante abrir este tópico para saber alguma opiniões

  9. Avatar de netbeans
    netbeans

    Funny funny era ter esse ambiente para Netbeans 😛

    ou o VS correr o Java nas perfeições 😛

    😛

    1. Avatar de lmx
      lmx

      boas..
      para que queres o Vs se tens o NetBeans…?

      cmps

      1. Avatar de netbeans
        netbeans

        sim, mas não gosto nada do ambiente gráfio do netbeans…

        Era nice, um tema com o mesmo tipo de letra já pré-defenidos, bem como o própio tema do VS no Netbeans…

        O que existe por ai é tudo uma porcaria. Nem dá gosto estar a programar num EDI, estéticamente feio, na minha opinião.

  10. Avatar de Fernando
    Fernando

    Joomla VS Typo3, já agora seria interessante abrir este tópico para saber alguma opiniões.

  11. Avatar de Luis
    Luis

    Excelente! podem continuar já amanha!!!!

  12. Avatar de David
    David

    Apesar de não vir a ser dado, apenas na introdução, penso que se poderia ter explicado o que é ASP.NET MVC e quais as principais diferenças para ASP.NET Webforms

    1. Avatar de TopPlus
      TopPlus

      Tb penso que era importante.

      Bom post.

      Este “pack” da Microsoft contem o basico de ferramentas para começar:


      Microsoft Web Platform Installer 2.0
      The Microsoft Web Platform Installer 2.0 (Web PI) is a free tool that makes getting the latest components of the Microsoft Web Platform, including Internet Information Services (IIS), SQL Server Express, .NET Framework and Visual Web Developer easy. The Web PI also makes it easy to install and run the most popular free web applications for blogging, content management and more with the built-in Windows Web Application Gallery.

      1. Avatar de MadMax
        MadMax

        Actualização 😉

        Microsoft Web Platform Installer 3.0 e Microsoft Web Matrix. Para os diversos e diversificados programadores vale a pena ver estas aplicações.

  13. Avatar de cris
    cris

    Viva Henrique, gosto imenso destes tutoriais corta-mato sem muita conversa fiada e concisos embora queria deixar uma sugestão, podias no fim do tutorial colocar um link para se ter acesso a um ficheiro exemplo e comparação para o caso de errarmos um passo ou outro.
    Parabéns e continua o bom trabalho.

    1. Avatar de Henrique Graça
      Henrique Graça

      Viva,

      Obrigado pela sugestão.
      Como era pouco código não disponibilizei mas, quando começarmos com mais código, disponibilizo.

      Cumprimentos.

  14. Avatar de Whoknows
    Whoknows

    Grande trabalho. Este comentário tem apenas como objectivo dizer que o conhecimento aqui partilhado é de muito alto nível, pelo que deve ser aproveitado. Por isso deve ser enaltecido. Não basta gostarmos, é preciso dizer que gostamos.

  15. Avatar de MsSoft
    MsSoft

    Muito obrigado pelo tutorial e pela disponibilidade em lhe dar continuidade.Será possível esclarecer as seguintes questões:

    1-O que quer dizer com a frase que aparece no fim do tópico Web Forms-Também indica que os controlos incluidos nesta form estão assecíveis do lado do script.

    2-Porquê que na listagem do código em c# utiliza sempre uma afectação do tipo: Label1.Text += “Evento Page_Init “; e não uma afectação simples do tipo:Label1.Text = “Evento Page_Init “;

    Obrigado pela atenção.

    1. Avatar de Henrique Graça
      Henrique Graça

      Viva,
      Obrigado pelo interesse e pelas excelentes questões.

      1- Significa que os controlos incluídos na form e que tenham o atributo runat=server, aparecem no script, ou seja, podemos referência-los no C# ou VB.NET, através do seu id.

      2- Boa questão. Utilizei o “+=” para comprovar que o viewstate estava desligado. Se o viewstate estivesse ligado para essa label, a cada novo postback a lista ia crescendo com os valores anteriores.

      Espero que tenha ficado esclarecido.
      Continue a acompanhar.

      Cumprimentos.

  16. Avatar de noob
    noob

    Oi pessoal,

    Como noob que sou nesta matéria de asp.net queria saber se uma aplicação web nesta tecnologia apenas corre numa máquina windows dedicada, ou seja, normalmente, a maioria dos dominios suporta o php, mas raramente vi para asp…

    1. Avatar de Henrique Graça
      Henrique Graça

      Viva,

      Sim a máquina tem de ter o Windows Server, o ASP.NET apenas corre no IIS ( apesar de existir a possibilidade de correr no apache).

      Nos Host existe sempre a possibilidade de alojar em Linux ou Windows. Utilizo este serviço e estou muito satisfeito, http://www.arvixe.com.

      Cumprimentos.

      1. Avatar de noob
        noob

        Conhecem algum host gratuito (e bom :P) para alojar aplicações asp.net?

  17. Avatar de Fernando
    Fernando

    Para quando um artigo sobre Typo3? 🙂

  18. Avatar de Ghost
    Ghost

    Porque é que uma página .aspx só pode conter um controlo Form?

  19. Avatar de sSimoeSs
    sSimoeSs

    Tenho poucos conhecimentos em ASP.NET. Estou a fazer um inquérito em asp.net e quero inserir na base de dados checkboxes e radiobuttons.
    Aguardo uma resposta.

  20. Avatar de sSimoeSs
    sSimoeSs

    O software onde estou a fazer o site é em Visual Web Developer 2010 Express.

  21. Avatar de Mateus Martinez rosa
    Mateus Martinez rosa

    Olá boa noite, eu precisa mto de tutoriais com esse, porem em video, onde posso conseguir?? Estou cursando TSI e estou tendo mtas dificuldades por causa da didatica e metodologia dos professores, aguardo.
    Desde já muito obrigado!!!