Desenvolvimento - ASP. NET

ASP.NET – Uma mudança radical no desenvolvimento web... Sua vida vai mudar!

No artigo de hoje vou falar um pouco sobre o ASP.NET e colocar alguns pontos fracos do ASP clássico.

por Renato Guimarães



No artigo de hoje vou falar um pouco sobre o ASP.NET e colocar alguns pontos fracos do ASP clássico. É só para colocar o que é o asp.net e aproveitar para me apresentar a vocês. Isso para dar oportunidade de quem ainda não conhece ter o primeiro contato e conseguir acompanhar os próximos artigos. Além disso, dar uma visão aos programadores ASP experientes que ainda não tiveram tempo ou oportunidade de conhecer o ASP.NET. Será dividido nas seguintes partes:
  • O ASP clássico – pontos fracos
  • O que é ASP.NET?
  • Benefícios do ASP.NET
  • O que é preciso para começar a programar em ASP.NET?
  • Exemplo de uma página ASP.NET
  • Onde pegar mais informações?

O ASP clássico – pontos fracos

ASP é uma tecnologia que a Microsoft criou para permitir o desenvolvedor web criar suas páginas de forma rápida, fácil e sem mistérios ou complicações. Desde o seu surgimento, houve um aumento significativo na quantidade de desenvolvedores web. Mas, como nem tudo é perfeito, o ASP, com o tempo mostrou alguns pontos fracos que foram surgindo com o aumento da necessidade dos usuários e complexidade das aplicações.

Entre os pontos fracos, temos:

  • Interpretado e código fracamente tipado – O engenho de execução de scripts do ASP interpreta linha a linha toda vez que a página é chamada. Além disso, mesmo dando suporte a variáveis, elas são fracamente tipadas como variantes e associada a tipos particulares somente quando o código é executado. Esses problemas afetam a performance, e o late binding de tipos deixa o código mais difícil de fazer o tratamento de erros. Os programadores não têm suporte ao Microsoft IntelliSense.

  • Colaboração é difícil – Algumas empresas têm uma galera responsável pela parte de design da página e outra parte responsável pela implementação do negócio da aplicação. No modelo de programação no ASP mistura código script com HTML e, dessa forma, é muito difícil manter a colaboração entre essas duas equipes. Sei que podemos escrever parte do negócio da aplicação em componentes COM mas, em alguns momentos, é inevitável misturar HTML e código.

  • Ferramentas de depuração e desenvolvimento limitadas – Microsoft Visual Interdev, Macromedia Visual UltraDev, e outras ferramentas tentaram aumentar a produtividade dos programadores ASP através de um ambiente de desenvolvimento gráfico. Porém, essas ferramentas nunca conseguiram dar a mesma facilidade de uso que as ferramentas para desenvolvimento de aplicações windows, tal como Microsoft Visual Basic ou Delphi. Muitos programadores ainda dependiam pesadamente ou exclusivamente do NotePad ou um editor qualquer . Isto pq um página ASP, normalmente, combinava elementos de várias tecnologias – VBScript, JavaScript, CSS, DHTML, ADO, XML e XSL O suporte a depuração é mínimo. A melhor saída é o Response.Write para rastrear a execução da página.

  • Configuração da aplicação - Para armazenar configurações, ASP usa um metabase, que é um repositório hierárquico parecido com o registry do windows. Essa metabase é parte do IIS e, ao mesmo tempo, uma estrutura difícil de compreender e navegar. Além disso, é difícil transferir configurações de um servidor web para outro.

  • Código extra para manipular os postbacks e dar suporte a diferente navegadores – Sempre que o usuário clica no botão submit de um formulário, é feita uma requisição ao servidor web. Sendo assim, a cada requisição você tem que se preocupar com o que foi digitado pelo usuário para carregar novamente na tela. Além disso, sua aplicação roda em qualquer versão de browser? Você também tem que colocar código para verificar a versão do browser do usuário.

  • Reaproveitamento de código – Não fica tão fácil reaproveitar código quando você está misturando html e script. Além disso, a melhor forma de reutilização de código é através da orientação a objetos. O VBScript nem sonha em ser orientado a objetos.

Bem, chegar que arrumar ponto fraco e ficar colocando defeito. Vamos falar sobre a solução de todos os problemas..... ASP.NET

O que é ASP.NET?

Não é apenas uma nova versão do ASP... É uma mudança radical no modelo de programação do ASP. É uma nova forma de construir aplicações WEB – mudança da água para o vinho... Agora ficou tudo mais fácil na vida do programador, não somente na criação de páginas web, mas, também, na criação de aplicações web mais elaboradas – Web Services. É uma parte essencial na plataforma de desenvolvimento .NET da Microsoft. A principal missão do ASP.NET é diminuir a barreira no desenvolvimento de aplicações web. Essa missão é realizada da mesma forma que o VB faz para programação windows. Ou seja, um modelo de programação “orientado a eventos” no qual os desenvolvedores adicionam controles aos formulários e escrevem códigos para manipular os eventos(como a mudança de um item numa lista ou o clique de um botão) associados a esses controles. Além disso, torna fácil a criação de serviços que trocam dados em XML – Web Services. Os aplicativos construídos com ASP.NET são hospedados no Microsoft IIS e usa protocolos da internet como HTTP e SOAP. Benefícios do ASP.NET?

Muitos foram os benefícios trazidos pelo ASP.NET. Isto é, não só o ASP.NET mas o Framework.net.

Como também sou programador Java/jsp (tinha um monte de dificuldades pra construir a camada de apresentação), gostaria de deixar destacados os benefícios que me deixaram empolgados: a orientação a objetos, compilação, gerenciamento de estado, componentes e o suporte a várias linguagens.

  • Orientação a objetos – Sua aplicação será escrita numa das linguagens suportadas pelo framework.net e essas linguagens são OO.

  • Páginas compiladas – Após a página ter sido requisitada, o framework verifica se essa página já foi compilada e, caso não tenha sido, compila só a primeira vez. Sendo assim, nas próximas requisições a página não será compilada e a execução será bem rápida.

  • Componentes – Tudo agora é componente. Web controls (controles de servidor), Html controls, User controls(controles do desenvolvedor. Muito bom pra reaproveitar partes da tela) e Custom controls (controles de servidor escritos pelo desenvolvedor) e outros controles complexos que só o ASP.NET tem(Calendar, DataGrid, DataList, Repeater etc). Nos próximos artigos estarei explicando melhor essa parte de componentes.

  • Suporte do framework.NET – Como o ASP.NET é do framework. Sendo assim, além do suporte das classes do ASP.NET, você tem suporte de todas as classes do framework. Tem classe pra tudo que você imaginar.... Então, nada de dar uma de ninja e querer escrever coisas que já estão prontas no framework.

  • Configuração da aplicação – Toda configuração da aplicação ASP.NET é feita através de arquivo xml. Sendo assim, não é preciso recompilar a aplicação após alguma mudança. O próprio framework detecta a mudança e reinicia a aplicação.

  • Ambiente RAD para desenvolvimento web – Com o Visual Studio.NET e WebMatrix você tem um verdadeiro ambiente de programação semelhante ao ambiente do Visual Basic ou Delphi. Pra quem não conhece, o WebMatrix é uma ferramenta excelente para o desenvolvimento de aplicações asp.net (usa o modelo de programação Code In Page). Não é tão maravilhoso quanto o Visual Studio.NET, mas dá pra quebrar um galho e ajuda bastante quem não tem o VS.NET.O Visual Studio.NET é tudo de bom que você pode imaginar... Só utilizando pra você ver o quanto está bom. É só arrastar, soltar e ganhar dinheiro heheheh.

O que é preciso para começar a programar em ASP.NET?

Para começar construir suas aplicações ASP.NET você precisa:

  • Um computador com sistema operacional microsoft: Windows 2000, XP etc

  • Verifique se já está rodando o servido do IIS. Qualquer dúvida, tem um artigo muito legal de José Carlos Macoratti em Instalando e Configurando o Internet Information Services (IIS)

  • .NET Framework 1.1 - O framework só é preciso na máquina onde será hospedada a aplicação e na máquina de desenvolvimento. Outra forma de baixar o framework e fazer um windows update na sua máquina. Você pode baixar o SDK (Software Development Kit) que, além do framework, também vem várias ferramentas para facilitar algumas tarefas. Qualquer máquina que esteja rodando uma aplicação .NET tem que tê-lo instalado. Possui todas as classes necessárias para que você possa desenvolver qualquer tipo de aplicação (Windows Forms, Web Forms, Web Services, Console, Remoting, XML, ADO.NET, entre outras) e, além disso, tem o CLR (Common Language Runtime) que é responsável por compilar e gerenciar a execução da sua aplicação. Agora tudo está muito mais seguro porque sua aplicação estará rodando dentro de uma caixa(CLR), ou seja, você terá seu código gerenciado – managed code.

  • Ferramenta de desenvolvimento – Você pode utilizar o Visual Studio.NET 2003 (todo poder em suas mãos), WebMatrix (quebra o galho e já ajuda muito), NotePad (quando o camarada é muito macho...) ou outra qualquer do mercado. Além disso, ainda existe uma excelente ferramenta que é free SharpDeveloper. Ele é muito bom pra criar suas aplicações windows, classes etc

Exemplo de uma página ASP.NET

Você pode escrever uma página ASP.NET usando qualquer uma das linguagens compatíveis .NET – C#, VB.NET etc Dentro do código da sua página será informado qual linguagem está usando. Quando for feita uma requisição para sua página aspx, o framework vai verificar se já tinha compilado antes e, caso contrário, compila. Essa compilação só acontecerá uma vez.

No ASP.NET temos dois modelos de programação: Code Behind e Code in Page.

  • Code Behind – Nesse modelo teremos uma verdadeira separação do HTML e código C#. É o que eu utilizo e aconselho você utilizar. Aqui, para cada arquivo aspx, teremos um arquivo aspx.cs (caso tenha escrito em c#) onde será digitada toda parte do código c#. No arquivo aspx, só teremos a parte HTML e a parte da declaração dos componentes do ASP.NET. O reuso de código nesse modelo é muito grande e facilita muito a vida do programador. Além disso, existe uma total separação de HTML e código.

  • Code in Page – Esse modelo é bem semelhante ao modelo do ASP clássico. A diferença é que existem outras tags que não temos no ASP. Tags que permitem você fazer herança, implementar interface, importar outras classes etc. No próximo artigo vou escrever um exemplo code in page onde mostro como fazer herança, implementar interface etc. Aqui seu código já fica pouco legível devido a mistura de html com código c#, JavaScript, CSS etc
O código abaixo mostra uma página asp.net que possui dois Labels, um TextBox e um Button. Todos são Server Controls – controles que executam no servidor, controles que você visualizará como objetos dentro do seu código c#. Utilizei o VisualStudio.net pra fazer esse simples exemplo.
<%@ Page language="c#" Codebehind="WebForm1.aspx.cs"  
	AutoEventWireup="false"  Inherits="DemoRenato.WebForm1" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >

<HTML>
    <HEAD><title>Exemplo simples de asp.net</title></HEAD>
    <body MS_POSITIONING="GridLayout">
        <form id="Form1" method="post" runat="server">
            <asp:Label id="Label1"
		>Exemplo1 : Código HTML do arquivo aspx

//Fazendo um “using” dos namespaces que estão sendo referenciados.
using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
 
namespace DemoRenato
{
	/// <summary>
	/// Tag para fazer documentação do seu código
	/// </summary>
	public class WebForm1 : System.Web.UI.Page
	{
		protected System.Web.UI.WebControls.Label Label1;
		protected System.Web.UI.WebControls.TextBox TextBox1;
		protected System.Web.UI.WebControls.Label Label2;
		protected System.Web.UI.WebControls.ImageButton ImageButton1;
		protected System.Web.UI.WebControls.Button Button1;
		
		private void Page_Load(object sender, System.EventArgs e)
		{
			// Evento que é executado toda vez que a página é requisitada
		}

 		#region Web Form Designer generated code
		override protected void OnInit(EventArgs e)
		{
			//
			// CODEGEN: This call is required by the ASP.NET Web Form Designer.
			//
			InitializeComponent();
			base.OnInit(e);
		}

                /// <summary>
		/// Required method for Designer support - do not modify
		/// the contents of this method with the code editor.
		/// </summary>
		private void InitializeComponent()
		{    
			//Na inicialização da página os eventos são registrados para os comp.
			//Abaixo estão sendo registrados o clique e o page load do web form.
			this.Button1.Click += new System.EventHandler(this.Button1_Click);
			this.Load += new System.EventHandler(this.Page_Load);
		}
		#endregion

 		private void Button1_Click(object sender, System.EventArgs e)
		{
			//Evento que é disparado quando usuário dá um clique no botão.
			//O código baixo ler o valor do objeto textobox1 e atribui ao label2
			this.Label2.Text = this.TextBox1.Text.Trim();
		}
	}
}

Exemplo2 : Código C# do arquivo aspx.cs que está sendo referenciado no arquivo aspx

Alguns pontos devem ser observados nos exemplos acima:

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="DemoRenato.WebForm1" %>

  • Todo WebForm( = arquivo aspx) tem essa declaração. No exemplo acima está declarando a linguagem, o nome do arquivo codebehind e a classe que ele herda. Sendo assim, lá no aspx.cs temos a classe WebForm1 que herda da super classe System.Web.UI.Page.

  • No aspx os Server Controls são declarados com tags XML e , obrigatoriamente, têm que ter o atributo runat=server.

  • Quando o usuário der um clique no botão não é preciso se preocupar em manter o valor digitado. Existe o viewstate que se encarrega de fazer tudo isso pra você. Essa característica você pode configurar pra ficar ou não habilitada. Imagine um formulário com mais de vinte campos....Antes você tinha que se preocupar em recuperar os valores e dentro do html atribuir via VBScript esses valores aos controles. Acabou! Deixa que o asp.net faz isso.

  • A palavra using diz quais namespaces seu código faz referência. Nesse caso não precisa colocar o nome qualificado da classe(nome da classe mais namesmpace).

  • Override é uma palavra reservada para indicar que essa classe está sobrescrevendo o método da classe pai.

  • Private, protected e public são modificadores de acesso. Eles indicam qual a visibilidade de variáveis, propriedades e métodos.

  • Quando sua página for compilada é gerada uma classe a partir do arquivo .aspx. Esse nova classe herdará da classe que está dentro do arquivo aspx.cs

  • Dentro do aspx só pode ter uma tag form com o atributo runat=server.

  • Perceba que você pode criar uma super classe herdando de Page e, em seguida, todas as outras páginas da sua aplicação irão herdar dessa super classe. Assim você implementa todos os métodos comuns na super classe e reutiliza nas suas sub classes.
Onde pegar mais informações?

OBS: Faça seu cadastro no site do MSDN Brasil e não esqueça de participar dos fóruns.
http://www.msdnbrasil.com.br

Bem, no artigo de hoje foi só pra colocar algumas coisas sobre ASP.NET e nada mais. Muita coisa deixei de falar porque ia ficar um artigo grande e cansativo de ler. Próxima semana, acho que termino até lá, vou comentar pontos importantes sobre a migração de ASP para ASP.NET.
Mais uma vez, obrigado a todos pela atenção e até o próximo...

Renato Guimarães

Renato Guimarães - Bacharel em Sistemas de Informação e trabalha com tecnologia da informação há mais de 15 anos.