Desenvolvimento - ASP. NET

Dando um passeio no ASP.NET

O principal objetivo da arquitetura .NET é permitir ao usuário o fácil acesso a seus aplicativos e dados em qualquer lugar, a qualquer hora e usando qualquer dispositivo...

por Mauro Sant'Anna



O principal objetivo da arquitetura .NET é permitir ao usuário o fácil acesso a seus aplicativos e dados em qualquer lugar, a qualquer hora e usando qualquer dispositivo. Para concretizar esta visão existem vários componentes, de servidores a ferramentas de desenvolvimento.

Uma importante capacidade desta arquitetura é a de interagir com navegadores HTML comuns, até mesmo produzidos por outras empresas que não a Microsoft. É aqui que o ASP.NET entra em cena. O ASP.NET é uma ferramenta “RAD” para o desenvolvimento de aplicativos baseados em páginas HTML. Dentre suas várias vantagens, é um grande salto em produtividade quando comparado a qualquer outra ferramenta do mercado. Ele torna o desenvolvimento de aplicativos baseados em Web tão simples como o desenvolvimento de aplicativos em Visual Basic. O programador não tem sequer que conhecer HTML ou “scripts de cliente” (usualmente JScritp) para criar aplicativos sofisticados.

A chave para este recurso é um ambiente de desenvolvimento que usa componentes para processar eventos do navegador e gerar HTML. Além dos componentes que já vem com o VS.NET, certamente aparecerão diversos componentes de terceiros.

Mesmo que você não decida abraçar toda a arquitetura .NET (WinForms, por exemplo), os ganhos de produtividade do ASP.NET são razão bastante para usa-lo.

De forma a mostrar como é fácil escrever um aplicativo HTML que inclui até mesmo scripts de cliente, vou guia-lo no desenvolvimento de um aplicativo ASP.NET bastante simples: uma calculadora de quatro operações. Vou partir do princípio que você já tem o “Visual Studio Beta 1” instalado e funcionando. Usaremos a linguagem C#, mas esta demonstração é essencialmente a mesma para todas as linguagens da arquitetura.NET.

Criando um projeto

Abra o VS.NET e selecione “New | Project | Visual C# Projects | WebApplication”. Dê nome “Calculator” e aperte “Ok”:

Criando uma aplicação Web

Figura 1: Criando uma aplicação Web

Você agora tem uma “solução” (um conjunto de projetos relacionados) com um único projeto dentro. O projeto contém um único “WebForm” chamado “WebForm1.aspx”, uma página HTML especial que tem um fonte em linguagem de alto nível associado – C# no caso. Não se preocupe com os demais arquivos:

Conjunto de projetos relacionados

Figura 2 Conjunto de projetos relacionados

Abra agora o “Toolbox” (Ctrl-Alt-X), vá até a página “WebForm1.aspx” e arraste dois componentes “TextBox”, quatro “Button” e um “ListBox”. Use a tecla “Enter” para separar os componentes em diferentes linhas. Selecione a página “Properties” (F4) e mude a propriedade “Text” dos botões para as quatro operações (“+”, “-”, “*” e “/”), como mostrado a seguir:

Alterando os nomes do botões

Figura 3: Alterando os nomes do botões

Note que você pode escolher entre dois modos de “Page Layout”: “linear” e “grid”. O modo “GridLayout” permite o posicionamento dos componentes em coordenadas absolutas “X e Y”, mas não é compatível com todos os navegadores. Deixaremos esta propriedade com o valor padrão, “LinearLayout”.

Os componentes que colocamos no formulário se parecem muito com “tags” HTML, mas isto não é verdade. Por exemplo, o componente “TextBox” pode gerar as tags “INPUT”, “INPUT PASSWORD” ou “TEXTAREA”, dependendo do valor da propriedade “TextMode”. Eles podem até mesmo não gerar nenhuma saída visível no navegador caso a propriedade “Visible” seja “false”. Os componentes são abstrações de alto nível de elementos usados nos aplicativos. Os próprios componentes geram a saída em HTML conforme necessário e de forma compatível com o navegador (HTML 4.0, HTML 3.2, WAAP, JScript etc). O seu aplicativo não precisa saber nada a respeito de HTML; os componentes interagem com o navegador específico que o usuário estiver rodando.

Selecione agora o botão “+” e clique no “raio” na página “Properties”. Note que cada componente tem vários eventos. Esta é uma maneira de trabalho muito parecida com a do Visual Basic, mas é um grande contraste em relação a outras ferramentas HTML, onde todo o formulário gera um único evento e você deve escrever código para descobrir que componente fez o que.

Escreva “DoOperation” na caixa de texto ao lado do “Click”:

Adicionando um evento a propriedade Click

Figura 4: Adicionando um evento a propriedade Click

Quando você pressionar “Enter”, será exibido o editor de código. Como desejamos que todos os botões apontem para o mesmo evento, vá até o WebForm (clique na aba “WebForm1.aspx” na parte superior) e selecione todos os botões pressionando a tecla “Shift”. Vá até a página de eventos, clique no “combobox” ao lado de “Click” e selecione “DoOperation”. Novamente o editor de código será aberto, conforme mostrado a seguir:


Figura 5: Implementação do método DoOperation

Existe um detalhe interessante a respeito do gerenciamento de eventos: o nome do método associado ao evento é completamente arbitrário; ele não é baseado em nenhuma “regra de nomes”. Dentre as várias vantagens, isto permite que mapeemos vários eventos ao mesmo método, como acabamos de fazer. Digite agora o seguinte código:

Listagem 1: Realizando operações matemáticas

protected void DoOperation (object sender, System.EventArgs e) {
// Verifica se a validação foi correta
if (!this.IsValid)
return;
// Pega o texto do botão
string Oper = ((Button)sender).Text;
// Variável para o resultado. O tipo decimal é menos propenso a erros de arredondamento
decimal Result = 0;
string Msg = "";
// Este é um bloco de tratamento de erro
try {
// Pega o conteúdo dos campos de texto e converte para decimal
decimal N1 = TextBox1.Text.ToDecimal();
decimal N2 = TextBox2.Text.ToDecimal();
// Você pode usar string em um a switch.As opções são mutuamente exclusivas
switch (Oper) {
case "+": Result = N1 + N2; break;
case "-": Result = N1 - N2; break;
case "*": Result = N1 * N2; break;
case "/": Result = N1 / N2; break;
}
Msg = TextBox1.Text + Oper + TextBox2.Text + "=" + Result.ToString();
}
// Trata divisão por zero
catch(System.DivideByZeroException) {
Msg = "Você não pode dividir por zero ";
}
// Trata erros de conversão
catch(System.FormatException) {
Msg = "Você deve fornecer dois números";
}
// Adiciona ao list box. Isto é MUITO mais simples que o ASP tradicional
ListBox1.Items.Add(Msg);
}

Agora selecione “Debug | Start Without Debugging”. O VS.NET irá compilar o seu código, atualizar os arquivos no servidor Web e abrir um navegador para chamar a sua página. Você pode ter alguns erros de compilação; corrija-os até conseguir a página de teste:


Figura 6: Resultado da Listagem 1

Existem várias coisas interessantes neste projeto:

  • O modelo de desenvolvimento é muito mais parecido com o Visual Basic do que com outras ferramentas HTML.
  • Não vimos nenhuma linha de código HTML. Você até pode editar o HTML diretamente (selecione “HTML” na página “WebFrom1.aspx”), mas isto não é necessário.
  • O código (arquivo “.cs”) é separado da apresentação (arquivo “.aspx”). O “Web designer” pode mudar a aparência da aplicação sem afetar o código.
  • O seu programa ter performance de código compilado e seu fonte está seguro; seu provedor só enxerga os fontes do seu código se você quiser.
  • Os componentes mantêm automaticamente o estado sem uma única linha de código. Imagine quanto código seria necessário apenas para manter o estado do “ListBox” acima.
  • Temos o poder de uma linguagem “de gente grande” como o C# de forma a permitir a escrita de código mais seguro e poderoso. Não existe mais a necessidade de escrever componentes COM apenas para complementar coisas difíceis de fazer em VBScript ou JScript.
  • Podemos usar o poder do C# e VS.NET para melhor organizar o código e dividi-lo entre os diversos membros de uma equipe.

Validação no cliente

Vamos avançar um pouco mais no nosso exemplo. Suponha que desejemos validar o conteúdo dos “TextBoxes” no cliente. Algo como se os números entrados são válidos, sem precisar ir e voltar ao servidor. Usando a tecnologia corrente de navegadores, isto só é possível com “scrips de cliente”, usualmente escrito em JScript. Scripts de cliente são particularmente difíceis de escrever e depurar, mas o ASP.NET pode gera-los automaticamente para nós!

Da página “Web Forms” no “Toolbox”, adicione um “CompareValidator” ao lado de cada “TextBox”. Mude as seguintes propriedades em cada um deles:

  • ErrorMessage: “Este não é um número válido”
  • ControlToValid: TextBox1 ou TextBox2
  • Operator: DataTypeCheck
  • Type: Double

Rode o programa. Observe que os conteúdos dos TextBox serão validados no cliente, usando um “script” que foi enviado ao navegador. Você pode agora perguntar o que aconteceria caso tivesse sido usado um navegador que não suporte scripts de cliente. A resposta é simples: nenhum script é enviado e a validação será efetuada apenas no servidor. Na verdade, a validação sempre é feita no servidor de forma a evitar “falsificações de página” (spoofing). Esta é a razão para as duas linhas no início do nosso código: temos que impedir o resto de rodar caso a validação no servidor falhe.

Conclusão

O ASP.NET é um ambiente poderoso e produtivo para o desenvolvimento de aplicativos baseados em HTML. Ele torna o desenvolvimento de aplicativos Web tão simples como o desenvolvimento de aplicativos Windows usando uma ferramenta RAD como o Visual Basic.

Mauro Sant'Anna

Mauro Sant'Anna - Mauro tem mais de 20 anos de experiência no desenvolvimento de software, com produtos publicados no Brasil, Portugal e Estados Unidos, além de extensa experiência em treinamento e consultoria no desenvolvimento de software, tanto criando material como ministrando cursos.
Mauro é um "Microsoft Most Valuable Professional" (MVP - www.microsoft.com/mvp), “Microsoft Regional Director” (RD - www.microsoft.com/rd), membro do INETA Speaker’s Bureau (www.ineta.org) e possui as certificações MCP, MCSA (Windows 2000/2003), MCAD (C# e VB), MCDBA, MCSE (Windows 2000/2003).
Sua empresa, a M. A. S Informática (www.mas.com.br), treinou centenas de turmas em desenvolvimento de software nos últimos anos.