• Nenhum resultado encontrado

Linguagem de Programação II

N/A
N/A
Protected

Academic year: 2021

Share "Linguagem de Programação II"

Copied!
77
0
0

Texto

(1)

Linguagem de

Programação II

(2)

2

Conteúdo

Unidade 1: Introdução A PLATAFORMA .NET ... 5

Introdução ... 5

Dificuldades encontradas no desenvolvimento de sistemas para Windows antes do .NET ... 7

A abordagem .NET... 10

Unidade 2 A Arquitetura .NET ... 11

CLR (Commom Language Runtime) ... 11

CTS (Common Type System) ... 11

CLS (Common Language Specification) ... 12

BCL (Base Classe Library) ... 12

Unidade 3 Visão Geral do ASP .NET ... 15

Interação Cliente Servidor ... 15

O que é o ASP.NET ... 16

Componentes de uma aplicação ASP.NET ... 18

Modelo de Compilação e Execução Dinâmica ... 19

Primeira Execução ... 19

Segunda Execução ... 20

Precompilação ... 20

ASP.NET AJAX ... 20

Unidade 4 Criando uma Aplicação Web com o .NET ... 21

O Visual Studio ... 21

Principais Características do Visual Studio ... 21

Templates de Projetos ... 21

Soluções e Projetos ... 21

Tela inicial do Visual Studio 2008 ... 22

Criando uma Aplicação Web o Visual Studio... 22

Unidade 5 Criando um Formulário ASP.NET ... 25

Adicionando um novo Web Form ASP.NET ... 25

Unidade 6 Adicionando Código a um Formulário ASP.NET ... 32

Trabalhando com arquivos Code-Behind ... 32

Manipuladores de Eventos ... 32

Adicionando Código a um Formulário... 32

(3)

3

Erros de Sintaxe (Syntax Errors) ... 37

Erros em tempo de execução (runtime) ... 37

Erros de Semântica ... 37

A Classe Debug ... 38

Habilitando a Depuração ... 38

Adicionando BreakPoints ... 38

Executando a Aplicação em Modo de Depuração ... 39

Execução Passo a Passo ... 39

Usando a Janela de Depuração ... 40

Exibindo a Janela Window ... 40

Depuração Remota ... 40

Tracing ... 40

Classe TraceContext ... 41

Habilitando o Tracing em uma Aplicação Web ... 42

Dados do Trace ... 42

Categorias do Trace ... 42

Unidade 8 Validando Entrada de Usuários ... 44

Controles de Validação ... 44

Caracteres para Expressões Regulares ... 45

Adicionando Controles de Validação a um Formulário ... 46

Unidade 9 Master Page e User Controls ... 49

Características da Master Page ... 49

Criando uma Master Page ... 50

Content Page ... 50

Características da Content Page ... 50

Criando uma Content Page ... 52

User Controls ... 53

Características de um User Control ... 53

User Controls e seus Arquivos Associados Code-Behind... 54

Vantagens dos User Controls ... 54

Desvantagens dos User Controls ... 54

Adicionando um User Control a um Web Form ... 55

Unidade 10 Acessando Dados com ADO ... 56

Camada Desconectada ... 56

(4)

4

ADO Object Model ... 56

Camada Desconectada ... 56

Camada Conectada ... 57

Contectando a um Banco de Dados ... 58

Criando um Banco de Dados ... 58

Criando um Formulário de Inserção de Dados ... 60

Criando uma Listagem de Dados ... 62

Unidade 11 Lendo e Escrevendo Dados XML ... 65

Criando um Arquivo XML ... 66

Lendo um Arquivo XML ... 66

Unidade 12 Criando um Aplicativo ASP.NET AJAX ... 68

Namespaces ... 68

Controles ASP.NET AJAX ... 69

Utilizando ASP.NET AJAX ... 69

Unidade 13 Segurança em Aplicações ASP.NET ... 72

Autenticação ... 72

Autorização ... 72

Métodos de Autenticação ASP.NET ... 72

Autenticação Windows ... 72

Autenticação Baseada em Formulário ... 72

(5)

Unidade 1:

Introdução A PLATAFORMA .NET

Introdução

O .NET Framework é um componente integral do Windows que oferece suporte à criação e execução da próxima geração de aplicativos e Serviços WEB XML. O .NET Framework foi criado para atender os seguintes objetivos:

 Fornecer um ambiente de programação orientada a objetos consistente, seja o código objeto armazenado e executado localmente, seja ele executado

localmente mas distribuído pela Internet ou seja ele executado remotamente;  Fornecer um ambiente da execução de código que minimiza conflitos de

implantação e versionamento de software, muito comum no modelo antigo de componentização COM/COM+ (conhecido como “DLL hell”);

 Fornecer um ambiente da execução que promova a execução segura do código, incluindo o código criado por terceiros: desconhecidos ou semi-confiáveis;

 Fornecer um ambiente de execução que elimina os problemas de desempenho dos ambientes interpretados ou com scripts;

 Tornar a experiência do desenvolvedor consistente, através dos diversos tipos de aplicativos, como aplicativos baseados no Windows e aplicativos baseados na Web. O desenvolvedor pode usar qualquer uma linguagem suportadas pelo .NET para escrever os programas e notará muitas semelhanças ao escrever código para dois ambientes bastante distintos como o desktop e o web, devido à camada de abstração provida pelo .NET;

 Criar todas as comunicações nas indústrias padrão, para garantir que códigos baseados no .NET Framework possam se integrar a qualquer outro código. O programador pode reutilizar facilmente código já existente ainda que esteja em outra linguagem, sem que ele precise abrir mão da sua linguagem de

preferência (e.g. o programador pode escrever um programa em C# e utilizar componentes escritos em C#, VB para .NET sem problemas de integração destes códigos);

Um serviço Web XML, ou simplesmente Web Service como o chamaremos de aqui em diante por simplicidade e coerência com a linguagem da indústria de software,

transcende ao que nós conhecemos como páginas dinâmicas, as quais podem ser acessadas a partir de um browser. A idéia central de um Web Service consiste em permitir que as aplicações, sejam elas da Web ou Desktop, ou ainda middleware, se

(6)

6

comuniquem e troquem dados de forma simples e transparente, independente do sistema operacional ou da linguagem de programação.

Para tal fim, não é preciso apenas uma plataforma para desenvolvimento Web como o é ASP ou CGI, ou então, um modelo de objetos (COM/COM+) para criar componentes de software reusáveis. A idéia de um Web Service é oferecer uma solução uniforme, independente do cliente que estiver solicitando um serviço qualquer: uma página dinâmica (ASP, CGI, JSP), um “cliente gordo” no desktop, ou simplesmente um programa qualquer de terceiros que requeira o serviço, um celular, um handheld, não importa. O que interessa é que todos os clientes possam usufruir do mesmo serviço. Vamos tentar entender o que descrevemos aqui através da Figura 1.1.

Por tudo exposto acima, uma plataforma de desenvolvimento completa, que envolve linguagens de programação, compiladores, modelo de objetos etc., se torna

necessária para que se consiga englobar de uma forma completamente integrada todos esses requisitos. E é essa a proposta de .NET. A linguagem C# (pronuncia-se C Sharp) faz parte desse conjunto de ferramentas oferecidas na plataforma .NET e surge como uma linguagem simples, robusta, orientada a objetos, fortemente tipada e

altamente escalável a fim de permitir que uma mesma aplicação possa ser executada

em diversos dispositivos de hardware, independentemente destes serem PCs, handhelds ou qualquer outro dispositivo móvel. Além do mais, a linguagem C# também tem como objetivo permitir o desenvolvimento de qualquer tipo de aplicação: Web service, aplicação Windows convencional, aplicações para serem executadas num palmtop ou handheld, aplicações para Internet etc.

(7)

7

Junto à linguagem C# encontramos outras linguagens paralelas da própria Microsoft e que têm também a finalidade de dar suporte ao desenvolvimento de sistemas para a plataforma .NET; dentre elas podemos citar: VB e C++.

Neste módulo, apresentaremos a arquitetura da plataforma .NET a fim de que possa entender onde C# se encaixa nesta plataforma e por que, a despeito da existência de outras linguagens, inclusive aquelas que também dão suporte a .NET, C# é tão importante.

Dificuldades encontradas no desenvolvimento de sistemas

para Windows antes do .NET

Algumas das dificuldades encontradas no desenvolvimento de sistemas Windows antes do .NET são:

 Complexidade associada a linguagens de programação de difícil sintaxe, e ainda as dores de cabeça provocadas pelo gerenciamento da memória heap por parte do programador.

 Pouca integração e reaproveitamento de código entre linguagens de programação diferentes; ausência de implementação de mecanismo de herança entre linguagens diferentes.

 Diversidade com pouca integração na resolução de problemas complexos, dificultando a compreensão e o desenvolvimento dos sistemas.

 Falta de portabilidade de código executável entre plataformas diferentes. Vejamos a evolução histórica das ferramentas da Microsoft:

(8)

8

Apenas para ilustrar um pouco a situação atual, vamos apresentar um pequeno estudo de caso. Para simplificar o nosso problema, vamos considerar apenas as soluções Microsoft. Imaginemos uma situação hipotética na qual é solicitada uma solução de home banking que aceite requisições de um browser da Internet ou qualquer outro dispositivo como handheld, telefone celular etc.; vejamos qual seria a resposta imediata dos recursos de software que eu iria precisar:

1. Uma linguagem de programação para desenvolver as páginas dinâmicas: de cara, VBScript ou JScript.

2. Precisamos desenvolver alguns objetos COM ou COM+ no servidor, mas por questões de performance e poder de linguagem, escolhemos a linguagem C++, e claro, o compilador C++ do MS Visual Studio.

3. Vamos precisar de alguns componentes para executar no MS Queue server ou então no MS transaction server, e escolhemos a linguagem Visual Basic porque temos pessoal que já fez esse tipo de trabalho usando VB.

4. Bem, vamos falar o óbvio, mas precisamos também de Web designers com domínio de HTML, Flash, ferramentas de editoração gráfica etc.

5. Ainda temos um problema para resolver, que é o fato de termos clientes

heterogêneos que não conseguem ler um formato padrão como uma Web page em HTML.

(9)

9

Ok, agora é o momento de correr atrás do pessoal com todas essas competências, tentar gerenciar essa salada de tecnologias e linguagens de programação e, de quebra, fazer funcionar tudo direitinho.

E esta era uma situação bem comum no desenvolvimento de software até pouco tempo atrás: ter de costurar uma série de linguagens + ferramentas + tecnologias + modelos de objetos + linguagens de script vs. linguagens de programação completas + linguagens de marcação.

Usando o .NET podemos proporcionar uma solução alternativa, de menor complexidade de implementação, mais integrada:

1. Uma linguagem de programação para desenvolver as páginas dinâmicas no servidor Web: C# usando o Visual Studio.

2. Uma linguagem de programação para desenvolver objetos reusáveis, armazenados em uma DLL no servidor: C# usando o Visual Studio.

3. Uma linguagem de marcação maleável o suficiente de sorte que permita mostrar o conteúdo em diversos dispositivos: XML, gerado pelo C# ou pré-montado para alguns casos.

4. Todo o trabalho de formatação e transformação dos documentos XML gerados pela solução de homebank será feito usando XSL para gerar a linguagem de marcação suportada no lado cliente. Ah! Com que linguagem vamos fazer estas transformações? Com C# é claro!

Mas os nossos desenvolvedores têm um background muito forte em VB, de forma que nós descartamos o C# como alternativa”. Não tem problema, tudo o que foi dito acima continua válido, vamos mudar apenas a linguagem de C# para VB”. A plataforma .NET permite que usemos a linguagem de programação da qual mais temos domínio e mesmo assim continuamos a usufruir todo o seu potencial.

O exemplo anterior foi apenas para ilustrar o contexto atual de desenvolvimento de sistemas complexos, onde temos de realmente fazer uma ginástica muito grande integrar todas as partes constituintes da nossa solução. A boa notícia é que, como mostramos no exemplo, com .NET esta situação está, digamos assim, findando esse problema, porque, como você pode ter percebido, a sua solução caiu de três

linguagens de programação para apenas uma, e o resto das tecnologias que usamos (COM+, por exemplo) se integra perfeitamente com o restante da solução.

Apenas falando no quesito da clareza e reutilização de código, algumas bibliotecas de classes, como MFC (Microsoft Foundation Class), surgem nesse ínterim, mas têm como foco a linguagem C/C++ e não podem ser usadas a partir do Power Builder, por

(10)

10

exemplo, ou então Delphi, que tem a sua própria biblioteca de componentes

reutilizáveis. O que equivale a dizer que essas bibliotecas não podem ser usadas a partir de qualquer linguagem de programação, o que torna o reaproveitamento de código ainda mais difícil.

Mesmo tecnologias como COM e CORBA sempre apresentam os mesmos problemas de dificuldade de aprendizado por causa de sua complexidade; ou então, mesmo quando oferecem um modelo de objetos comum a ser usado por outras linguagens que não VB ou C++,acabam esbarrando no fato de que cada linguagem de

programação implementa os tipos de uma forma diferente. E finalmente, quando achamos que conseguimos resolver os problemas dos tipos, somos barrados porque não conseguimos programar relações de herança entre linguagens diferentes.

Paralelamente às iniciativas da Microsoft, em 1995 surge a linguagem JAVA (na verdade, mais que uma linguagem, é uma plataforma de desenvolvimento) e, apesar de oferecer há mais de dez anos a proposta de portabilidade de código executável, (leia-se, “compile uma vez e rode em qualquer plataforma”), é “JAVA-cêntrica”, o que obriga o programador a aprender uma nova linguagem se realmente quiser usufruir os recursos que ela oferece. Mas você pode perguntar: “e .NET não nos obriga a

aprender C#?” A resposta é não e saberemos mais adiante como isso é feito.

A abordagem .NET

Citaremos a seguir algumas das características de .NET que visam a resolver os problemas citados acima:

 Independência de linguagem de programação: o que permite a implementação do mecanismo de herança, controle de exceções e depuração entre linguagens de programação diferentes.

 Reutilização de código legado: o que implica em reaproveitamento de código escrito usando outras tecnologias como COM, COM+,ATL, DLLs e outras bibliotecas existentes.

 Tempo de execução compartilhado: o “runtime” de .NET é compartilhado entre as diversas linguagens que a suportam, o que quer dizer que não existe um runtime diferente para cada linguagem que implementa .NET.

 Sistemas auto-explicativos e controle de versões: cada peça de código .NET contém em si mesma a informação necessária e suficiente de forma que o runtime não precise procurar no registro do Windows mais informações sobre o programa que está sendo executado. O runtime encontra essas informações no próprio sistema em questão e sabe qual a versão a ser executada, sem acusar aqueles velhos conflitos de incompatibilidade ao registrar DLLs no Windows.

(11)

11

Unidade 2

A Arquitetura .NET

Para melhor entendermos tudo o que temos dito até aqui, vamos falar um pouco da arquitetura de .NET e os seus principais componentes.

CLR (Commom Language Runtime)

O CLR, ou tempo de execução compartilhado, é o ambiente de execução das aplicações .NET. Como o leitor já deve ter atentado, as aplicações .NET não são aplicações Win32 propriamente ditas (apesar de executarem no ambiente

Windows),razão pela qual o runtime Win32 não sabe como executá-las. O Win32, ao identificar uma aplicação .NET, dispara o runtime .NET que, a partir desse momento, assume o controle da aplicação no sentido mais amplo da palavra, porque, dentre outras coisas, é ele quem vai cuidar do gerenciamento da memória via um mecanismo de gerenciamento de memória chamado Garbage Collector (GC) ou coletor de lixo, acerca do qual falaremos mais tarde. Esse gerenciamento da memória torna os programas menos susceptíveis a erros. Mais ainda, o CLR como seu próprio nome o diz, é compartilhado e, portanto, não temos um runtime para VB.NET, outro para C# etc. É o mesmo para todo mundo.

CTS (Common Type System)

O CTS, ou Sistema Comum de Tipos, que também faz parte do CLR, define os tipos suportados por .NET e as suas características. Cada linguagem que suporta .NET tem de, necessariamente, suportar esses tipos. Apesar de que a especificação não

demanda que todos os tipos definidos no CTS sejam suportados pela linguagem, esses tipos podem ser um subconjunto do CTS, ou ainda um superconjunto. No módulo dois falaremos mais a respeito dos diferentes tipos especificados no CTS. Um conjunto de classes básicas que define todos os tipos é implementado na CTS. Por exemplo: um tipo Enum deve derivar da classe System. Enum e todas as linguagens devem implementar o tipo Enum dessa forma. Todo tipo deriva da classe Object, porque em .NET tudo é um objeto e, portanto, todos os tipos devem ter como raiz essa classe. E é dessa forma que os diversos tipos nas diversas linguagens são

implementados, obedecendo às regras definidas no CTS. Na .NET, e em C#

conseqüentemente, todos os tipos derivam de uma raiz comum: a classe Object, o que equivale a dizer que todos os tipos são objetos, por definição.

(12)

12

CLS (Common Language Specification)

O CLS, ou Especificação Comum da Linguagem, é um subconjunto do CTS, e define um conjunto de regras que qualquer linguagem que implemente a .NET deve seguir a fim de que o código gerado resultante da compilação de qualquer peça de software escrita na referida linguagem seja perfeitamente entendido pelo runtime .NET. Seguir essas regras é um imperativo porque, caso contrário, um dos grandes ganhos do .NET, que é a independência da linguagem de programação e a sua

interoperabilidade, fica comprometido. A grosso modo, dizer que uma linguagem é compatível com o CLS significa dizer que mesmo quando esta é sintaticamente

diferente de qualquer outra que implemente .NET, semanticamente ela é igual, porque na hora da compilação será gerado um código intermediário (e não código assembly dependente da arquitetura do processador) equivalente para duas peças de código iguais, porém escritas em linguagens diferentes. É importante entender esse conceito para não pensar que o código desenvolvido em C# não pode interagir com código desenvolvido em VB ou outras linguagens, porque mesmo estas sendo diferentes, todas são compatíveis com o CLS.

BCL (Base Classe Library)

Como era de se esperar, uma plataforma que promete facilitar o desenvolvimento de sistemas precisa ter uma biblioteca de classes básica que alavanque a simplicidade e a rapidez no desenvolvimento de sistemas. É este o objetivo da BCL (Biblioteca de

Classes Base), oferecer ao desenvolvedor uma biblioteca consistente de componentes

de software reutilizáveis que não apenas facilitem, mas também que acelerem o desenvolvimento de sistemas. Na BCL encontramos classes que contemplam desde um novo sistema de janelas a bibliotecas de entrada/saída, gráficos, sockets,

gerenciamento da memória etc. Esta biblioteca de classes é organizada

hierarquicamente em uma estrutura conhecida como namespace. Ao desenvolver um componente de software reusável, este precisa ser estruturado em um namespace para que possa ser usado a partir de um outro programa externo. A seguir mostramos uma tabela com alguns dos principais namespaces que fazem parte da BCL:

(13)
(14)
(15)

15

Unidade 3

Visão Geral do ASP .NET

O ASP.NET é um framework que possibilita aos programadores a construção de Web sites dinâmicos, aplicações Web, e serviços XML.

O componente principal do ASP.NET é o ASP.NET Web Form, que fornece uma maneira fácil e rápida de construir web sites e aplicações web. O ASP.NET também inclui tecnologia para construção de XML Web Services, que são a base da

construção de aplicações Web distribuídas.

Interação Cliente Servidor

Desenvolver aplicações para serem usadas sobre HTTP é muito diferente de criar aplicações Desktop do tipo Windows Forms pelo fato de o cliente estar dissociado do servidor.

Quando o usuário solicita uma página, digitando um endereço (URL), em um navegador, o servidor Web responde enviando um documento HTML e muito

provavelmente algum código JavaScript a ser executado pelo navegador. A conexão é aberta, a solicitação é feita pelo navegador, o servidor responde enviando o

documento HTML, e a conexão encerrada tão logo esse envio seja terminado. Isto dificulta o trabalho de fazer com que uma aplicação Web se comporte como uma aplicação conectada, desktop. O ASP.NET fornece um gerenciador de estados (VIEWSTATE) que a cada nova requisição reconhece o usuário e informação que ele está trabalhando.

(16)

16

No lado do cliente, após carregar a página, você pode submeter a página de volta ao servidor, disparando o que chamamos de postback. Isso acontece utilizando

funcionalidades do protocolo HTTP, tipicamente os métodos POST e GET. Em um HTML normal, a submissão de formulários pode ser acionada a partir de um botão do tipo “submit” na página, e utilizar código client-side para trabalhar a informação antes de ser enviada ao servidor ou mesmo para acionar um evento de postback.

No ASP.NET a interação cliente-servidor é transparente por usar programação orientada a eventos sobre o protocolo HTTP.

O que é o ASP.NET

O ASP.NET é um conjunto de tecnologias para desenvolvimento WEB que possibilita as programadores, construir Web Site, Aplicações Web e Web Services XML. Pelo fato de o ASP.NET ser parte do Framework .NET, você pode desenvolver aplicações web em qualquer uma das linguagens .NET.

O principal componente do ASP.NET é o Web Form. Uma aplicação ASP.NET típica, consiste de um ou mais Web Form. Um Web Form é uma página que o usuário visualiza em seu browser, e também uma página dinâmica que é processada no servidor e pode acessar recursos do mesmo. Mas também pode ser utilizada para interagir com o usuário no navegador utilizando código JavaScript, VBScript ou AJAX. Em outras palavras, uma página HTML tradicional pode executar scripts no cliente para executar tarefas básicas. Já uma página ASP.NET Web Form pode também executar código no lado do servidor para acessar banco de dados, gerar outros Web Forms, ou fazer uso de dispositivos de segurança do servidor.

(17)

17

O ASP.NET é independente do dispositivo que for usado para acessá-lo. Permitindo ao programado desenvolver Web Forms que poderão ser vistos em quaisquer dispositivos que tenham um navegador Web.

O ASP.NET também faz uso do Visual Studio para construir e executar as aplicações ASP.NET. Isso resulta em um processo de desenvolvimento simplificado que permite a você testar a aplicação sem precisar criar um ambiente de hospedagem externo. Também está embutido no ASP.NET, métodos de autenticação do tipo Windows ou Forms que auxiliam o programador a manter sua aplicação e dados seguros.

Cada aplicação ou site disponibilizado em um servidor Web, roda como um processo dentro do Internet Information Services (IIS).

O ASP.NET é também um ambiente de desenvolvimento Web que inclui

funcionalidades para você desenvolver aplicações Web com o mínimo de codificação, em qualquer linguagem compatível com a CLR, incluindo Microsoft Visual Basic, C#, Microsoft JScript .NET, e J#.

A seguinte tabela descreve as diversas características do ASP.NET:

Características Descrição

Page e Control Framework O ASP.NET permite você encapsular

funcionalidades comuns da interface em controles reusáveis de fácil utilização. Também fornece a possibilidade de controle de aparência do seu web site utilizando temas. Adicionalmente ao temas, você pode fazer uso de Master Pages, para a criação de layout consistente de páginas em sua aplicação.

Compilador ASP.NET Todo código ASP.NET é compilado, e fornece tipagem forte de dados, otimização de

performance, entre outros benefícios. Depois que o código é compilado, o componente CLR compila o código ASP.NET para código nativo, aumentando ainda mais sua performance.

Segurança O ASP.NET fornece uma infra estrutura avançada de segurança de autenticação de usuários, além de outras tarefas relacionadas a segurança. Você pode autorizar usuários utilizando autenticação Windows, que é fornecida pelo IIS, e

alternativamente você mesmo pode gerenciar a autenticação usando seu próprio banco de dados através de formulários de autenticação ASP.NET. Forms Authentication Provider O ASP.NET sempre é executado utilizando uma

identidade do Windows, portanto, você pode deixar sua aplicação segura utilizando as características do próprio Windows, como listas de controle de acesso NTFS (ACLs) e permissões de banco de

(18)

18 dados.

State-Management Facilities O ASP.NET fornece um gerenciador de estado que permite você armazenar informações entre as requisições de página, como dados do cliente ou conteúdo de um carrinho de compras.

ASP.NET Configuration Aplicações ASP.NET usam um sistema de

configuração que permite você definir parâmetros para seu servidor Web, site, ou aplicações

individuais. Você pode fazer ajustes de

configuração no momento em que suas aplicações são disponibilizadas no servidor ou a qualquer momento com um mínimo de impacto operacional em sua aplicação e servidores.

Health Monitoring and Performance

O ASP.NET incluí funcionalidades que permitem você monitorar o estado e performance da sua aplicação. Permite a você monitorar eventos chave que fornece a você dados sobre erros e condições da sua aplicação.

Debugging Suport O ASP.NET tema vantagem de uma estrutura de depuração em tempo de execução que dá suporte a depuração cross-language e cross-computer. Você pode depurar tanto objetos gerenciados como não gerenciados, e todas as linguagens suportadas pela CLR. E o ASP.NET também fornece um modo de rastreamento (trace mode) que permite a você adicionar informações operacionais a cada página da sua aplicação.

XML Web Services Framework O ASP.NET da suporte a XML Web Services. Um XML Web Service é um componente que contém dados e permite as aplicações trocar informação através de firewalls utilizando padrões web como HTTP e mensagens XML.

Extensible Hosting Environment and Application Live-Cycle Management

O ASP.NET inclui um ambiente extensível de gerenciamento do ciclo de vida de uma aplicação do momento em que o usuário acessa pela primeira vez um determinado recurso, como uma página, até o momento em que o aplicativo é fechado.

Extensible Designer Environment

ASP.NET incluí suporte para designers de criação de Web Server controls para uso com as

ferramentas visuais como o Visual Studio.

Componentes de uma aplicação ASP.NET

(19)

19

 Web Forms e páginas .aspx. Os Web Forms fornecem a Interface do Usuário para as aplicações Web.

 User Controls, ou controles .ascx. Os User Controls fornecem a UI para funcionalidades específicas a serem reutilizadas em Web Forms diferentes.  Arquivos Code-behind. O arquivo code-behind é um arquivo associado ao Web Form que contém o código Server-side para o mesmo. Você também pode optar por criar uma página ASP.NET em único arquivo que contenha o HTML e o código fonte .NET no mesmo arquivo.

 Arquivos de configuração. São arquivos XML que definem a configuração da aplicação Web no servidor. Cada aplicação Web pode ter um ou mais arquivos. Já cada servidor Web, pode ter somente um arquivo machine.config.

 Global.asax. O arquivo Global.asax contém código para responder eventos a nível de aplicação que são acionados pelo ASP.NET, como erros não tratados na aplicação.

 XML Web Service. Permitem a aplicação enviar e receber dados de um XML Web Service.

 Conexões a Banco de Dados. Permitem a aplicação Web transferir dados de fontes de dados.

 Itens Adicionais. Arquivos adicionais que você inclui na aplicação Web como arquivos HTML para conteúdo estático, arquivos texto, arquivos XML, arquivos XSLT.

 CSS. Arquivos que contém folhas de estilo utilizadas no design da aplicação.

Modelo de Compilação e Execução Dinâmica

Primeira Execução

(20)

20

2. O parser do ASP.NET interpreta o código fonte

3. Se o código não estiver compilado em uma DLL, o ASP.NET invoca o compilador.

4. O Runtime carrega e executa o código MSIL que é executado pelo run time. Nota: o código MSIL é o código em linguagem assembly executado em tempo de execução. Os vários compiladores das linguagens .NET como Visual Basic e C#, compilam seus códigos em MSIL, que é então executado pelo runtime.

Segunda Execução

Quando o usuário solicita a mesma página pela segunda vez, os seguintes eventos acontecem:

1. O cliente faz uma requisição GET HTTP para o servidor.

2. O runtime imediatamente carrega e executa o código MSIL que já está compilado pela primeira requisição da página.

Nota: a recompilação da página .aspx pode ocorrer, principalmente se o conteúdo da mesma foi alterado.

Precompilação

Você pode escolher pré compilar o seu site antes de disponibilizá-lo aos seus usuários. As vantagens da precompilação incluem:

 Resposta otimizada aos usuários, pois as páginas não precisam se compiladas na primeira execução das mesmas.

 Identifica erros de compilação antes de os usuários acessarem o site pela primeira vez.

 Possibilidade de disponibilizar o site na Web em um servidor de produção sem o código fonte.

ASP.NET AJAX

O ASP.NET também disponibiliza um framework livre Microsoft AJAX para ser utilizado em aplicações interativas. O ASP.NET AJAX permite enviar de forma assíncrona uma seção ou parte de uma página web ao servidor, e receber uma resposta de forma a não distrair o usuário ou mesmo interromper o que ele estava fazendo na página. O ASP.NET AJAX pode ser usado em conjunto com código server-side que automaticamente geram código client-server-side JavaScript. O ASP.NET AJAX também disponibiliza o AJAX Control Toolkit, que é uma coleção de controles client-side interativos, juntamente com a biblioteca jQuery.

(21)

21

Unidade 4

Criando uma Aplicação Web com o .NET

O Visual Studio

 O Visual Studio é o núcleo do desenvolvimento do Microsoft .NET. É um ambiente completo de desenvolvimento em que você pode desenhar, desenvolver, depurar aplicações .NET e Web Services XML.

Principais Características do Visual Studio

O Visual Studio provê:

 Suporte para desenvolvimento de diversas linguagens

 Ferramentas para a construção de aplicações Web, aplicações Windows, e Web Services XML.

 Ferramentas para criação de aplicações .NET Framework 3.0 como WCF, WPF e WF.

 Ferramentas para criação de Cascading Style Sheets (CSS.  Data Acess Controls, incluindo suporte para LINQ

 Suporte a desenvolvimento para versões diferentes do Framework .NET.  Suporte a ASP.NET AJAX e JavaScript.

 Suporte a Microsoft Silverlight  Suporte a Dynamic Data

 Gerenciamento de erros incluindo depuração local e remota, além de tracing.  Ajuda e documentação em formato fácil e acessível.

Templates de Projetos

O Visual Studio fornece templates para a criação de um grande número de tipos projetos. Esses templates contem todos os arquivos necessários e lhe garantem que a IDE está corretamente configurada para o projeto selecionado.

Quando você utiliza esses templates, você não tem que configurar a infraestrutura necessária de pastas e arquivos que um determinado tipo de projeto necessitem. Isso lhe permite o manter foco no seu projeto e na inclusão de funções ao mesmo.

Soluções e Projetos

(22)

22

Template Descrição

Class Library Cria classes e componentes reusáves

que você pode compartilhar com outros projetos.

ASP.NET Web Application Cria um aplicativo web com os arquivos básicos para sua aplicação.

ASP.NET Web Site Cria um ASP.NET Web site.

ASP.NET Web Service application Cria um XML Web service que poderá ser consumido por outros web services ou aplicações em uma rede.

XML Web Services são componentes disponíves na Internet projetados para interagir com outras aplicações. ASP.NET AJAX Server control. Cria componenetes ASP.NET AJAX

customizados.

Empty Project Para você criar o seu projeto

customizado. Esse template cria uma estrutura mínima para você armazenar sua aplicação. Você deve manualmente inserir todas referências, arquivos e componentes que necessitar.

Dynamic Data Web Site Cria um web site com a estrutura mínima necessário para um Web site com

suporte a Dynamic Data.

Tela inicial do Visual Studio 2008

Criando uma Aplicação Web o Visual Studio

(23)

23

Abrirá a seguinte janela onde selecionamos o Template de Web Site que será usado:

Selecione o template ASP.NET Web Site, informando a pasta e o nome do site a ser criado em “Location” (WebSite1), e selecionando a linguagem de programação que será utilizada no projeto “Visual C#”.

(24)

24

Um novo projeto é criado, e é exibido automaticamente o código da página aspx. No lado esquerdo temos as abas Toolbox, CSS Properties, e Manage Styles. Na lateral direita temos as abas Server Explorer e Properties.

Na barra inferior temos os botões Design, Split e Source que Server para alternar a visualização da área central entre Design, modo de desenho, Source, exibe o código fonte HTML da página, e Split que mostra ambos dividindo a tela horizontalmente ao meio.

Ao clicar no menu View > Server Explorer e será exibida no lado direito da janela do Visual Studio, a estrutura de arquivos do nosso site, automaticamente gerada pelo Visual Studio:

(25)

25

Unidade 5

Criando um Formulário ASP.NET

Nessa unidade criaremos um Web Form ASP.NET para gerar um formulário de envio de Curriculum Vitae. Esse formulário terá os campos

 Nome  Endereço  Telefone  Email

 E um campo texto para o currículum

Adicionando um novo Web Form ASP.NET

Para criar um novo formulário Web Form ASP.NET, clique em View > Solution Explorer. Dentro do Solution Explorer clique com o botão direito sobre a pasta da aplicação “c:\sites\WebSite1” e selecione a opção “Add New Item...”

(26)

26

Selecione o template Web Form, atualize seu nome para “Curriculum.aspx”, Language “Visual C#”, e certifique-se de que a opção “Place code in separate file” encontra-se marcada. Para concluir, clique no botão “Add”.

Observe que no Solution Explorer, aparecerá o Web Form incluído no site.

Ainda no Solution Explorer, dê um duplo clique sobre o “Curriculum.aspx”, abrirá a aba “Curriculum.aspx” com o código fonte do formulário:

Dentro dessa aba está o código ASP.NET para criação da página Web. Repare que muitas das TAGs que estão nesse código são TAGs HTML normais. É dentro desse código que criaremos o nosso formulário de entrada de currículos. Vamos começar adicionando os controles que irão compor o formulário na página. Para tanto abra a aba Toolbox à esquerda do código:

(27)

27

Nela aparecem listados todos controles ASP.NET disponíveis para o nosso formulário.

Arraste o controle “Label” para dentro da janela de código do Web Form Curriculum.aspx, entre as TAGS <div>, deverá ficar da seguinte forma:

<form id="form1" runat="server"> <div>

<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label> <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>

</div> </form>

Precisamos alterar o valor das propriedades ID e Text para melhor estruturar o código e identificar os componentes. Aproveitaremos também para inserir algumas TAGs br que servirão para melhorar o layout do formulário e adicionar a propriedade

Width=”500px” na tag asp:TextBox. No código abaixo, em negrito estão os conteúdos alterados:

<form id="form1" runat="server"> <div>

<asp:Label ID="lblNome" runat="server" Text="Nome:"></asp:Label> <br />

<asp:TextBox ID="txtNome" Width="500px" runat="server"></asp:TextBox> <br />

</div> </form>

Você pode também alternar para o modo Design para ver como sua página web está ficando, clicando no botão Design, logo abaixo da janela de código:

(28)

28

É possível também adicionarmos os controles diretamente no modo de design, clicando neles na Toolbox e arrastando eles para dentro do design. E posteriormente alterarmos suas propriedades clicando neles e acessando a aba Properties, ou pelo menu View > Properties Window, que exibirá as propriedades do elemento

selecionado.

Acionaremos, agora os campos que faltam. Para os campos endereço, telefone e email adicionando outros 3 Labels e TextBoxes, e para o campo curriculum vamos nos modificar também das propriedades Columns="50", Rows="25"e TextMode="MultiLine"

(29)

29

<form id="form1" runat="server"> <div>

<asp:Label ID="lblNome" runat="server" Text="Nome:"></asp:Label> <br />

<asp:TextBox ID="txtNome" Width="500px" runat="server"></asp:TextBox>

<br />

<asp:Label ID="lblEndereco" runat="server" Text="Endereco:"></asp:Label>

<br />

<asp:TextBox ID="txtEndereco" Width="500px" runat="server"></asp:TextBox>

<br />

<asp:Label ID="lblTelefone" runat="server" Text="Telefone:"></asp:Label>

<br />

<asp:TextBox ID="txtTelefone" Width="500px" runat="server"></asp:TextBox>

<br />

<asp:Label ID="lblEMail" runat="server" Text="EMail:"></asp:Label> <br />

<asp:TextBox ID="txtEMail" Width="500px" runat="server"></asp:TextBox>

<br />

<asp:Label ID="lblCurriculum" runat="server" Text="Curriculum:"></asp:Label>

<br />

<asp:TextBox ID="txtCurriculum" Width="500px" runat="server" Columns="50"

Rows="25" TextMode="MultiLine"></asp:TextBox> <br />

</div> </form>

E por último, adicionaremos o botão para enviar o formulário de envio arrastando um controle Button para o final do formulário, alterando a propriedade ID para “btnOk” e a propriedade Value para “Enviar Curriculum”:

<form id="form1" runat="server"> <div>

<asp:Label ID="lblNome" runat="server" Text="Nome:"></asp:Label> <br />

<asp:TextBox ID="txtNome" Width="500px" runat="server"></asp:TextBox>

<br />

<asp:Label ID="lblEndereco" runat="server" Text="Endereco:"></asp:Label>

<br />

<asp:TextBox ID="txtEndereco" Width="500px" runat="server"></asp:TextBox>

<br />

<asp:Label ID="lblTelefone" runat="server" Text="Telefone:"></asp:Label>

<br />

<asp:TextBox ID="txtTelefone" Width="500px" runat="server"></asp:TextBox>

(30)

30

<br />

<asp:Label ID="lblEMail" runat="server" Text="EMail:"></asp:Label> <br />

<asp:TextBox ID="txtEMail" Width="500px" runat="server"></asp:TextBox>

<br />

<asp:Label ID="lblCurriculum" runat="server" Text="Curriculum:"></asp:Label>

<br />

<asp:TextBox ID="txtCurriculum" Width="500px" runat="server" Columns="50"

Rows="25" TextMode="MultiLine"></asp:TextBox> <br />

<asp:Button ID="btnOk" runat="server" Text="Enviar Curriculum" /> </div>

</form>

Devemos salvar as alterações feitas no formulário utilizando a opção File > Save All. Para executar o formulário e visualizar a página compilada apartir do servidor de desenvolvimento do Visual Studio, basta pressionar Control + F5 para execução direta, ou pressionando F5, ou pressionar o botão de execução da barra de ferramentas , ou ainda apartir do menu Debug > Start Debugging, opções que iniciam a execução em modo de depuração que fará aparecer a seguinte janela:

(31)

31

Basta clicar Ok para seguir. Após compilar a aplicação e iniciar o servidor o Visual Studio abre o navegador com o formulário:

(32)

32

Unidade 6

Adicionando Código a um Formulário

ASP.NET

Trabalhando com arquivos Code-Behind

O método padrão de implementação de código Server-side no Visual Studo, é com a utilização de arquivos code-behind. Quando você utiliza os arquivos code-behind, a lógica de programação é guardada em um arquivo separado dos elementos visual da página. Separar a lógica do design possibilita a você trabalhar em um arquivo,

enquanto a interface do usuário é trabalhada pelo designers nas páginas ASP.NET. Cada arquivo code-behind contém somente a lógica de programação de um único Web Form. Cada Web Form de uma aplicação tem seu próprio arquivo code-behind e por default seu nome é igual ao do arquivo do Web Form ao qual está associado. Com a diferença de que o code-behind terá a extensão .aspx.vb ou aspx.cs, dependendo da linguagem em que foi escrito. Nesse módulo utilizaremos somente arquivos code-behind contendo código em C#, ou seja, arquivos com a extensão .aspx.cs.

Manipuladores de Eventos

Quando um usuário interage com um Web Form, um evento é disparado. Precisamos desenhar nossa aplicação Web para que execute a tarefa apropriada quando um evento é acionado. Um Manipulador de Evento é a ação que acontece em resposta ao evento que é disparado.

Os Web Forms do ASP.NET são orientados a evento. Quando você clica em um botão submit, um evento é gerado. Um evento escrito para esse evento de clicar, é então acionado e pode executar uma tarefa, como salvar os dados em um banco de dados, ou simplesmente redirecionar o usuário para uma página diferente.

Adicionando Código a um Formulário

Como aplicação exemplo criaremos um formulário onde serão informados o nome de um vendedor, o valor do seu salário fixo, o total de vendas no mês, e o percentual da comissão sobre o valor das suas vendas. O formulário criado apresentará o valor total que o vendedor deve receber ao clicarmos em um botão.

Criaremos um novo projeto apartir do menu File > New Web Site, selecione o template “ASP.NET Web Site”, dê o nom Comissao, e certifique-se que a linguagem é C#.

(33)

33

No Solution Explorer, clique duas vezes sobre o arquivo Default.aspx para abri-lo e entre na visualização do código fonte como abaixo:

Arraste um controle Label para dentro das tags <div> e logo abaixo uma tag <br /> e em seguida um controle do tipo TextBox seguido de outra tag <br />. Altere a

propriedade Text do Label para “Nome:” e a propriedade ID para “lblNome”, no TextBox altere a propriedade ID para txtNome. Temos nosso primeiro par na tela. Adicione mais 4 pares para “Salario Fixo” (IDs lblFixo, txtFixo), “Total Vendido:” (IDs lblVendido, txtVendido), “Comissao:” (IDs lblComissao, txtComissao), “A Receber:” (IDs “lblReceber”, “txtReceber).

(34)

34

Por último, adicione um controle Button e altere a propriedade ID para “btnCalcular” e a propriedade Text para “Calcular”.

Dentro da tag <body> seu code de ficar como o abaixo:

<form id="form1" runat="server"> <div>

<asp:Label ID="lblNome" runat="server" Text="Nome:"></asp:Label> <br />

<asp:TextBox ID="txtNome" runat="server"></asp:TextBox> <br />

<asp:Label ID="lblFixo" runat="server" Text="Salário Fixo:"></asp:Label>

<br />

<asp:TextBox ID="txtFixo" runat="server"></asp:TextBox> <br />

<asp:Label ID="lblVendido" runat="server" Text="Total Vendido:"></asp:Label>

<br />

<asp:TextBox ID="txtVendido" runat="server"></asp:TextBox> <br />

<asp:Label ID="lblComissao" runat="server" Text="Comissão:"></asp:Label>

<br />

<asp:TextBox ID="txtComissao" runat="server"></asp:TextBox> <br />

<asp:Label ID="lblReceber" runat="server" Text="A Receber:"></asp:Label>

<br />

<asp:TextBox ID="txtReceber" runat="server"></asp:TextBox> <br />

<asp:Button ID="btnCalcular" runat="server" Text="Calcular" /> </div>

</form>

(35)

35

Dê um duplo clique sobre o botão calcular, abrirá a tela de edição do código desse botão, para o evento click:

Vamos inserir o código C# necessário para o cálculo do valor a ser recebido pelo vendedor. Para isso, vamos pegar os valores que o usuário digitou nos campos, convertendo os mesmos para Double, executando o cálculo e colocando o valor no campo resultado:

protected void btnCalcular_Click(object sender, EventArgs e) { double fixo = 0; double vendido = 0; double comissao = 0; double receber = 0; if (txtFixo.Text != "") { fixo = Convert.ToDouble(txtFixo.Text); } if (txtVendido.Text != "") { vendido= Convert.ToDouble(txtVendido.Text); } if (txtComissao.Text != "") { comissao = Convert.ToDouble(txtComissao.Text); }

receber = fixo + (vendido * comissao / 100); txtReceber.Text = receber.ToString();

(36)

36

Salve a sua aplicação e execute ela em Debug > Start Debugging. Preencha os dados do formulário e teste a aplicação:

(37)

37

Unidade 7

Depurando Aplicações ASP.NET

Quando você desenvolve aplicações, você pode encontrar diversos tipos diferentes de erros. Antes de solucioná-los você tem que identificar o tipo de erro e tratá-lo

apropriadamente.

Existem 3 tipos de erros que você tem que lidar ao desenvolver um aplicativo: erro de sintaxe, erros de runtime, e erros de semântica.

Erros de Sintaxe (Syntax Errors)

Os erros de sintaxe precisam ser solucionados para que o compilador possa compilar a aplicação. Eles se referem a estrutura e as regras associadas aos comandos da linguagem e aplicação. Por exemplo, se você tentar utilizar o seguinte comando:

if( this.isPostBack) {

// bloco de instruções }

E esquecer de fechar o par de parênteses ( ) ou chaves { }, um erro de sintaxe ocorre. O Visual Studio alerta você sobre esses erros indicando no código enquanto você desenvolve.

Erros em tempo de execução (runtime)

São erros que ocorrem quando a aplicação está sendo executada. São também conhecidos como exceções. Por exemplo, se uma aplicação espera que um

determinado arquivo esteja disponível em algum servidor de uma rede, mas ele não é encontrado pela aplicação, será gerado um erro em tempo de execução (exception). Esse tipo de erro deve ser gerenciado pela própria aplicação.

Erros de Semântica

São erros mais difíceis de localizar pois sua aplicação irá executar e não será emitido nenhuma notificação. Mesmo assim, sua aplicação não executa a tarefa esperada. Por exemplo, seu programa exibe um formulário de entrada com os dados de um cliente e são salvos sem erro nenhum. Mas ao visualizar novamente a informação, alguns dados não aparecem corretamente ou não foi salvo. Isso significa que a semântica da aplicação não está correta.

(38)

38

A Classe Debug

A classe Debug oferece métodos e propriedades que podem ajudar você a depurar seu código exibindo informaçõese verificando seu código com declarações no código. Usando a classe Debug, você tem a garantia de um código robusto sem afetar a performance e tamanho do código do seu produto na release final. Isso por que os códigos de depuração da classe não são compilados com o programa na versão Release da aplicação. A classe Debug é disponível globalmente na aplicação importando o namespace System.Diagnostics. Não há necessidade de instanciar a classe, ela não tem construtores, e você não pode herdar a mesma pois é do tipo sealed.

Métodos da Classe Debug

Método Descrição

Debug.Write Escreve a string que você determinar, ou

escreve a saída de um método ToString de um objeto .

Debug.WriteLine Escreve uma linha de texto de sua escolha, ou escreve a saída do método toString de um Objeto.

Debug.WriteIf Para escrever uma string

condicionalmente.

Debug.Print Para gerar a saída de uma linha de texto

formatado.

Debug.Assert Para exibir uma mensagem se uma

determinada condição for falsa.

Habilitando a Depuração

Você deve habilitar a depuração caso você deseje depurar a sua aplicação. Isso é feito no arquivo web.config. Dentro do mesmo você precisa localizar o elemento compilation e alterar o atributo debug para true.

<configuration> <system.web> <compilation debug="true"> ... </system.web> <configuration>

Adicionando BreakPoints

O Visual Studio nos fornece o recurso de BreakPoints, que são nada mais do que pontos de parada da execução de uma aplicação.

Você pode colocar ou remover em qualquer ponto do seu código C# um Break Point pressionando a tecla F9, ou a partir do menu Debug > Toggle Breakpoint, ou ainda sobre a linha de código clicando o botão direito opção Breakpoint. Ou ainda, clicando sobre a bolinha vermelha que marca o Break Point.

(39)

39

Executando a Aplicação em Modo de Depuração

Para executar sua aplicação em modo de debug, você deve pressionar F5 ou clicar em Start Debugging no menu Debug. Se a depuração não estiver habilitada, você será perguntado se quer habilitar o modo de depuração pela caixa de diálogo abaixo. Basta clicar em Ok para habilitar a depuração. Isso irá modificar o arquivo web.config.

Execução Passo a Passo

Quando o depurador encontra uma linha com um breakpoint, a execução é suspensa. Você pode então executar sua aplicação passo a passo e examinar a lógica de sua aplicação.

Pressione F10 ou clique em Step Over no menu Debug, se você quer que a linha atual seja executada sem entrar no código da instrução que está sendo executada, como um método na mesma classe ou em uma classe externa. A execução irá parar na próxima linha de código.

Pressione F11 ou clique na opção Step Into do menu Debug se você quiser entrar no código da instrução da linha atual, se houver algum. Por default, propriedades são normalmente não usam esse tipo de execução por não conter código sobre elas.

(40)

40

Usando a Janela de Depuração

O Depurador do Visual Studio oferece diversas janelas, coletivamente conhecidas como variable windows que exibem informações sobre as variáveis enquanto você está depurando. Cada janela tem uma grid de três colunas: Name, Value e Type. A coluna nome mostra os nomes das variáveis adicionadas automaticamente nas janelas Auto e Locals.

Na janela Watch, a coluna Name é onde você adiciona suas próprias variáveis ou expressões. As colunas Value e Type exibem o valor e o tipo de variável ou resultado correspondente. Você pode editar o valor da variável na coluna Value.

Exibindo a Janela Window

No menu Debug, selecione Windows e então o nome da janela que você quer abrir. Você pode escolher Autos, Locals, Watch ou Watch1 até Watch4. Para exibir esses itens, o depurador deve estar sendo executado ou no modo break.

Depuração Remota

Para você executar depuração remota, você deve usar o programa Remote

Debugging Monitor ou msvsmon.exe, que é uma aplicação à qual o Visual Studio se conecta.

Por default, o Remote Debugging Monitor roda como uma aplicação Windows, você pode configurá-lo para rodar como serviço caso queira que ele seja executado em um servidor remoto. Você pode executar o assistente a partir do menu Start, pasta Tools. Depois de iniciar o depurador remoto, você deve configurar os ambientes em ambas as máquinas. Você também deve levar em consideração, as questões de seguranças relacionadas ao acesso remoto.

Tracing

Tracing é o processo de receber informação sobre a execução da aplicação em tempo de execução. É uma maneira de monitorar a sua aplicação. Essa informação pode lhe auxiliar a identificar problemas ou analisar performance, de uma maneira que não afeta a aplicação.Tracing normalmente é utilizado em ambiente de produção em que não é possível executar depuração.

Você pode utilizar o tracing para:

 Ter um diagnóstico das informações de uma requisição a uma página ASP.NET

(41)

41

 Descobrir o código no qual a sua aplicação percorreu.

Classe TraceContext

É a classe usada para escrever mensagens em uma página ou no trace log em memória.

Métodos da Classe TraceContext:

 Write : escreve uma mensagem de trace no log

 Warn : similar ao método Write, porém as mensagens aparecem em vermelho. Ambos os métodos possuem 3 overloads, todos os 3 possuem uma mensagem de tracing, e adicionalmente um nome de categoria, e um parâmetro to tipo Exception que indica que você pode informar um erro capturado ou uma exceção definida pelo usuário.

Exemplo:

Trace.Warn("Atenção");

Trace.Write("Mensagem de Trace");

Trace.Write("Categoria", "Mensagem de Trace");

Trace.Write("Categoria", "Mensagem de Trace", new Exception("mensagem da exceção"));

Saída:

O parâmetro trace permite você classificar a saída do Trace por categoria alterando o código:

<%@ Page ... Trace="True" TraceMode="SortByCategory" %>

Alternativamente você também pode utilizar SortByTime.

Você pode utilizar a propriedade IsEnable do TraceContext para alterar o estado do tracing dinamicamente ou verificar seu estado:

// habilitando o tracing no código Trace.isEnabled = true;

(42)

42

if (Trace.IsEnabled) {

Trace.Write("Tracing está habilitado!"); }

Habilitando o Tracing em uma Aplicação Web

Você pode utilizar o seguinte código para ativar o Tracing a nível de página:

<%@ Page Language="C#" Trace="true" ... %>

Ou a nível de aplicação, alterando o arquivo web.config:

<configuration> ... <system.web> <trace enabled=”true” /> ... </system.web> </configuration>

Dados do Trace

As informações do trace a nível de página são adicionadas ao final da página .aspx em que estiver habilitado.

Categorias do Trace

Os dados do Trace são divididos em diversas categorias conforme listado:

Categoria Descrição

Request Details Informação sobre a requisição: identificação da sessão (ID), tempo da requisição, tipo de requisição, e status. Trace Information Saídas padrão e customizadas de trace. A coluna From

First(s) contem o tempo total desde a execução até o trace acontecer, e a coluna From Last(s) mostra o tempo restante.

Os tempos aqui são importantes para se ter um perfil e para identificar os métodos que mais demoram para responder.

Control Tree Lista de todos os itens que estão na página, junto com o tamanho de cada uma.

É uma representação da ASP.NET Control Tree. Mostra cada controle, seu ID único, tipo, números de

(43)

43

bytes que utiliza para ser renderizado, e o número de bytes que ocupa na ViewState e ControlState. Session State Informação sobre os valores armazenados na sessão

(Session), se houver algum.

Application State Informação sobre os valores armazenados na Application, se houver algum.

Headers Collection Lista de requisição e header de resposta.

Form Collection Lista de controles e seus valores, do formulário que foi enviado.

Querystring Collection Lista de valores passados na URL.

(44)

44

Unidade 8

Validando Entrada de Usuários

A validação de entrada de dados é utilizada para garantir que o usuário preencha corretamente os campos de um formulário antes que o mesmo seja enviado para o servidor. A validação de dados em uma página internet serve como um filtro antes que a lógica no servidor seja executada.

No ASP.NET, a validação de entrada de dados ocorre no lado do servidor, mas também pode acontecer no lado do cliente quando o browser der suporte a validação. Se o browser suportar validação de dados e a mesma estiver habilitada, os

mecanismos de validação que você criou acontecerão no lado do cliente antes que os dados sejam enviados ao servidor. O usuário recebe imediatamente a mensagem de alerta caso a regra de validação não seja satisfeita. Por questões de segurança, todas as validações feitas no lado do cliente são também executadas no do servidor.

Controles de Validação

O ASP.NET fornece um conjunto de controles de validação que ajudam você a identificar erros na entrada de dados.

São eles:

Controle de Validação Função

RequiredFieldValidator Verifica se um determinado campo foi informado em um controle. Esse é o único controle de validação que requer um valor. Todos os demais aceitam um controle vazio como uma resposta válida. CompareValidator Compara o valor informado para um

campo de entrada com outro campo, um valor fixo, um tipo de dado ou arquivo. Por exemplo, você pode usar esse controle para fazer uma verificação de digitação de senha comparando o valor desse campo com o outro.

RegularExpressionValidator Verifique se o valor informado respeita um padrão definido por uma expressão regular. Esse controle de validação permite você verificar se o valor de um controle segue uma seqüência previsível de caracteres como em email, CEP, CPF,

(45)

45 CNPJ.

RangeValidator Verifica se um campo se encontra entre dois valores. Por exemplo, você pode utilizar esse controle para verificar se a idade que o usuário informou se encontra em uma determinada faixa de valores. CustomValidator Permite a você escrever um código e

criar uma expressão de validação personalizada. Por exemplo, você pode usar esse controle para verificar se um número é primo, se confere com algum valor em banco de dados, validar os dígitos verificadores de um CNPJ ou CPF.

ValidationSummary Exibe na página um sumário de todos os erros de validação encontrados. Esse controle normalmente é colocado próximo ao botão Submit para informar

prontamente o usuário o status dos dados informados.

Obs: se você não quer que um determinado controle, por exemplo, um botão, acione a validação do formulário, você pode ajustar a propriedade CausesValidation do mesmo para false. Isso é muito útil em um botão de Cancelar, por exemplo.

Caracteres para Expressões Regulares

A tabela a seguir descreve um conjunto comum de caracteres que você pode utilizar para customizar as suas expressões regulares:

Caractere Definição

a Procura o caractere „a‟ minúsculo. E da mesma forma para todo o alfabeto. Qualquer letra não precedida por uma contra barra (\), ou parte de uma faixa ( [a-z], por ex.), é comparado com seu valor literal.

1 Procura o dígito 1. E da mesma forma para todos os caracteres numéricos. Qualquer numero ou dígito não precedido por uma contra barra (\), ou parte de uma faixa ([0-9], por exemplo), é comparado com seu valor literal.

? Procura 0 ou 1 literais. * Procura 0 até n literais.

+ Procura 1 a n literais (pelo menos 1). [0-n] Valor inteiro de 0 a n.

{n} Tamanho mínimo de n caracteres. | Separa múltiplos padrões válidos.

\ Caractere de escape.

\w Procura qualquer caractere.

\W Procura por qualquer não caractere. \d Procura por um dígito decimal.

\D Procura qualquer caractere não digito. \. Procura por um ponto.

(46)

46

O exemplo a seguir mostra como utilizar um RegularExpressionValidator para validar um endereço de email:

<asp:TextBox id="txtEMail" runat="server" /> <asp:RegularExpressionValidator id="regExpEMail"

runat="server" ControlToValidate="txtEMail" ErrorMessage="Use o formato email@dominio.xxx" ValidationExpression="\w+@\w+\.\w+" Text="*" />

Adicionando Controles de Validação a um Formulário

Crie um novo web site a partir do menu File > “New Web Site...”, selecione o template “ASP.NET Web Site”, dê o nome de Cadastro, linguagem “Visual C#”:

No Solution Explorer, abra o Web Form Default.aspx no modo Source.

<fieldset>

<legend>Cadastro de Usuário</legend>

<asp:Label ID="lblNome" runat="server" Text="Nome:"></asp:Label> <asp:TextBox ID="txtNome" runat="server"></asp:TextBox>

<br />

<asp:Label ID="lblEMail" runat="server" Text="EMail:"></asp:Label> <asp:TextBox ID="txtEMail" runat="server"></asp:TextBox>

<br />

<asp:Label ID="lblIdade" runat="server" Text="Idade:"></asp:Label> <asp:TextBox ID="txtIdade" runat="server"></asp:TextBox>

<br />

<asp:Label ID="lblSenha" runat="server" Text="Senha:"></asp:Label> <asp:TextBox ID="txtSenha" TextMode="Password"

runat="server"></asp:TextBox> <br />

<asp:Label ID="lblConfirma" runat="server" Text="Confirme a Senha:"></asp:Label>

<asp:TextBox ID="txtSenhaConfirma" TextMode="Password" runat="server"></asp:TextBox>

(47)

47

Colocaremos agora os controles de validação das entradas de usuário.

Primeiro validaremos o campo txtNome, que será obrigatório, apartir da Toolbox (View > ToolBox), aba insira um controle RequiredFieldValidator após o campo Nome. Altere as propriedade ID=“Validador1” e ErrorMessage="Campo Obrigatório" e insira a propriedade ControlToValidate="txtNome".

Adicione um controle RangeValidator apóso campo Idade e altere as propriedades

ID="Validador2", ErrorMessage="Data inválida", e adicione MinimumValue="0", MaximumValue="130" e ControlToValidate="txtIdade".

Adicione um controle RegularExpressionValidator após o campo EMail altere as propriedades ID="Validador3", ErrorMessage="EMail inválido" e adicione

ValidationExpression="\w+@\w+\.\w+" e ControlToValidate="txtEMail".

Adicione um controle CompareValidator após o campo Senha e altere as propriedades

ID="Validador4", ErrorMessage="Senhas não são iguais" e insira

ControlToValidate="txtSenha", ControlToCompare="txtSenhaConfirma".

Adicione um controle ValidationSummary e altere seu ID para ID="relatorioValidacao". Apartir da aba Standard adicione um botão e altere as propriedades ID="btnOk" Text="Ok".

O código do seu formulário deve ficar como a seguir:

<fieldset>

<legend>Cadastro de Usuário</legend>

<asp:Label ID="lblNome" runat="server" Text="Nome:"></asp:Label> <asp:TextBox ID="txtNome" runat="server"></asp:TextBox>

<asp:RequiredFieldValidator ID="Validador1" ErrorMessage="Campo Obrigatório" ControlToValidate="txtNome"

runat="server"></asp:RequiredFieldValidator> <br />

<asp:Label ID="lblIdade" runat="server" Text="Idade:"></asp:Label> <asp:TextBox ID="txtIdade" runat="server"></asp:TextBox>

<asp:RangeValidator ID="Validador2" ErrorMessage="Data inválida" MinimumValue="0" MaximumValue="130" ControlToValidate="txtIdade" runat="server"></asp:RangeValidator>

<br />

<asp:Label ID="lblEMail" runat="server" Text="EMail:"></asp:Label> <asp:TextBox ID="txtEMail" runat="server"></asp:TextBox>

(48)

48

<asp:RegularExpressionValidator ID="Validador3" ErrorMessage="EMail inválido" ValidationExpression="\w+@\w+\.\w+"

ControlToValidate="txtEMail"

runat="server"></asp:RegularExpressionValidator> <br />

<asp:Label ID="lblSenha" runat="server" Text="Senha:"></asp:Label> <asp:TextBox ID="txtSenha" TextMode="Password"

runat="server"></asp:TextBox> <br />

<asp:Label ID="lblConfirma" runat="server" Text="Confirme a Senha:"></asp:Label>

<asp:TextBox ID="txtSenhaConfirma" TextMode="Password" runat="server"></asp:TextBox>

<asp:CompareValidator ID="Validador4" ControlToValidate="txtSenha" ControlToCompare="txtSenhaConfirma" ErrorMessage="Senhas não são iguais" runat="server"></asp:CompareValidator>

</fieldset>

(49)

49

Unidade 9

Master Page e User Controls

As Master Pages do ASP.NET permitem você criar um layout consistente de páginas em sua aplicação. Você cria uma única master page que define o layout e

comportamento básico de todas as páginas ou de um grupo de páginas de sua aplicação. Você pode então, criar páginas individuais para exibir o conteúdo que você quiser. A master page pode conter texto estático, elementos HTML, e controles ASP.NET. Possuem a extensão .master, e são identificadas pela diretiva Page=”Master” em seu cabeçalho.

Você pode colocar o conteúdo comum a todo o site em uma master page, um cabeçalho comum que apareça em múltiplas páginas, por exemplo.

Você pode ter mais de uma master page em seu site para definir layouts diferentes em seções diferentes.

Características da Master Page

Possue a extensão .master e tem o valor Master na diretiva Page.

<%@ Master Language="C#" AutoEventWireup="true"

CodeFile="MasterPage.master.cs" Inherits="MasterPage" %>

Por default, o servidor IIS impede que arquivos com a extensão .master sejam vistos em um navegador web. Isso impede o usuário de ver a master page com uma página ASP.NET stand alone.

Uma master page é quase igual a um Web Form, pois pode conter qualquer tipo de controle ASP.NET, incluindo elementos HTML de alto nível como HTML, head, body e form. Você pode usar tabelas, formatar a disposição dos elementos com divs, ter imagens, etc. O que diferencia uma master page de um Web Form normal, é que ela tem presente um ou mais controles ContentPlaceHolder.

ContentPlaceHolder, é o controle que define as área onde o conteúdo dinâmico será incluído. Você deve colocar os controles ContentPlaceHoder dentro dos elementos head, ou dentro de um form como segue:

Referências

Documentos relacionados

No primeiro, destacam-se as percepções que as cuidadoras possuem sobre o hospital psiquiátrico e os cuidados com seus familiares durante o internamento; no segundo, evidencia-se

Mestrado em Administração e Gestão Pública, começo por fazer uma breve apresentação histórica do surgimento de estruturas da Administração Central com competências em matéria

Dessa maneira, os resultados desta tese são uma síntese que propõe o uso de índices não convencionais de conforto térmico, utilizando o Índice de Temperatura de Globo Negro e

Apenas com o destrinchamento da cena já é possível citar alguns: o primeiro afirma que existe um saber sobre as crianças e jovens que é produzido fora do âmbito da escola e

seria usada para o parafuso M6, foram utilizadas as equações 14 e 15, referentes aos parafusos de 8 mm de diâmetro e folga entre parafuso e furo de 0,5 mm, que definem,

No entanto, os resultados apresentados pelo --linalol não foram semelhantes, em parte, aos do linalol racêmico, uma vez que este apresenta um efeito vasorelaxante em anéis de

Resumo: O presente trabalho corresponde a um estudo empírico descritivo e exploratório que aborda comportamentos e falas de atores políticos que participaram do processo legislativo

As micotoxinas são compostos químicos tóxicos provenientes do metabolismo secundário de fungos filamentosos e conhecidas pelos danos causados à saúde humana e