Desenvolvimento Aplicativos
Web I
Versão 1.0
Fabiano Franca Moreira – MCAD .net
O professor
Minicurriculo
o Formação em Tecnologia em Processamento de dados –
Una -2000.
2
Una -2000.
o Pós graduação em Gerência da Tecnologia da Informação
– Fumec -2003.
o MBA em Gestão de Projetos – Ibmec – 2011. o Certificação MCP e MCAD.net.
o Trabalhou nas empresas Totvs, Cpm Braxis, Zurich Minas
Brasil e atualmente na Unimed BH.
A Matéria
ASP.Net
• Arquitetura • Conceitos3
• Conceitos • Configurações • Gerenciamento de estados • Controles • TraceA Matéria
ADO.Net
• Arquitetura • Objetos Conectados4
• Objetos Conectados • Objetos desconectados • Métodos assíncronosDesenvolvimento Aplicativos Web I
O que é ASP.NET
Uma evolução do ASP.
Utilização de uma única tecnologia em todo projeto.
5
Utilização de uma única tecnologia em todo projeto. Interpretado X Compilado.
Programação independente. (Code-behind) Windows = Web.
“A Microsoft sabendo da dificuldade que os desenvolvedores têm para construir sites complexos para Web, resolveu criar uma nova plataforma de desenvolvimento.
É aí que aparece o ASP.Net, uma solução poderosa, produtiva, e fácil de usar que vai muito além de páginas HTML convencionais.”
Desenvolvimento de Aplicativos Web I
O que é ASP.NET
O grande intuito desta nova tecnologia é resolver os problemas
encontrados no ciclo de desenvolvimento das ferramentas
6
encontrados no ciclo de desenvolvimento das ferramentas atuais.
Não é necessário entender outras tecnologias como JavaScript,
HTML, VbScript e entre outras. O ASP.net tem como base na inspiração em ferramentas RAD ( Delphi/VB).
Desenvolvimento de Aplicativos Web I
Características do ASP.NET
Utilização de linguagens orientadas a objetos.
7
Utilização de linguagens orientadas a objetos. Reutilização de código.
Códigos mais limpos. Cache de dados.
Desenvolvimento de Aplicativos Web I
Características do ASP.NET
Debug e Tracing.
Monitoramento e diagnóstico da aplicação.
8
Monitoramento e diagnóstico da aplicação. Configurações.
Armazenamento de configurações do site em arquivos XML
(Web.Config / Machine.Config)
Distribuição e instalação
O assembly é autodescritivo, evitando armazenamento de
Desenvolvimento de Aplicativos Web I
ASP.NET X Windows
O que diferencia uma aplicação Web de uma aplicação
9
O que diferencia uma aplicação Web de uma aplicação
Windows é que a Web é Stateless devido a natureza do protocolo HTTP. Para simplificar o modelo de programação, o ASP.NET gerencia o estado da página e dos controles durante o processamento do ciclo de vida da página.
Integração de Aplicativos Web com Banco de
Dados
Arquitetura do Framework .net
Desenvolvimento de Aplicativos Web I
Funcionamento de uma aplicação Web
Desenvolvimento de Aplicativos Web I
Arquitetura do ASP
Desenvolvimento de Aplicativos Web I
Arquitetura do ASP.net
Integração de Aplicativos Web com Banco de
Dados
Funcionamento do ASP.net
Integração de Aplicativos Web com Banco de
Dados
Modelo de execução do ASP.net
Desenvolvimento de Aplicativos Web I
Novos Conceitos
Session
Armazena os valores ligados a cada usuário.
16
Armazena os valores ligados a cada usuário.
É criada quando o usuário entre no site e destruída ao fechar o
browser.
É armazenada no servidor. Application
Armazena valores que poderão ser compartilhados entre todos os
Desenvolvimento de Aplicativos Web I
Novos Conceitos
HTTP (HyperText Transfer Protocol)
Responsável pela transferência dos dados e pela comunicação
entre o cliente e o servidor.
17
entre o cliente e o servidor.
É um protocolo stateless, ou seja as conexões entre um cliente e
um servidor são encerradas após o envio de cada requisição ou resposta.
PostBack
É o reenvio de informações de uma página que já está rodando no
Desenvolvimento de Aplicativos Web I
Novos Conceitos
PostBack X Roundrip
O usuário solicita uma página do servidor Web.
18
O usuário solicita uma página do servidor Web. O servidor responde com a página solicitada.
O usuário entra com os dados no formulário existente e os
envia.
O servidor processa o formulário e envia o resultado para o
usuário.
O terceiro passo é chamado de PostBack, enquanto que o ciclo completo é chamado de RoundTrip.
Desenvolvimento de Aplicativos Web I
Arquivos do ASP.NET
Solution Files (.sln)
Arquivo que armazena o(s) projeto(s) utilizados dentro de uma
Solution.
19
Solution.
Solution User Option (.suo)
Arquivo responsável pelo armazenamento das configurações da
Solution.
Asp.Net Web Forms (.aspx)
Arquivo que representa a Interface de um Web Site. Solution Files (.cs / .vb )
Arquivo que representa o código de uma página ASPX.
(Server-Side Code)
Global Application classes (Global.asax)
Desenvolvimento de Aplicativos Web I
Arquivos do ASP.NET
Web.Config
Arquivo no formato XML onde é armazenado as configurações para
20
Arquivo no formato XML onde é armazenado as configurações para
o site.
Assembly Files (.dll)
Desenvolvimento de Aplicativos Web I
Responda Rápido:
Qual é o protocolo utilizado na comunicação entre o cliente e o
servidor?
21
HTTP
O que representa o objeto Request?
O objeto Request representa a comunicação do cliente para o
servidor.
O que representa o objeto Response?
O objeto Response representa a comunicação do Servidor para o
Desenvolvimento de Aplicativos Web I
Página Web do ASP.NET
Consiste em duas partes
– Elementos Visuais - Controles e textos.
22
– Elementos Visuais - Controles e textos. Arquivos .ASPX, ASCX
– Programação da página - Códigos e eventos. Arquivos .CS / .VB
Desenvolvimento de Aplicativos Web I
Diretórios do ASP.NET
App_Code
Contém os códigos fontes das classes que serão compilados
23
Contém os códigos fontes das classes que serão compilados
juntamente com o projeto.
App_Data
Contém arquivos de bancos de dados (.mdf) App_Themes
Contém os arquivos (.skin / .css) e imagens que são usados na
aparência do Web Site.
Bin
Desenvolvimento de Aplicativos Web I
Eventos no ciclo de vida da página
OnInit
Neste evento é instanciado um objeto da classe Page do ASP.NET
e todos os controles que compõe a página.
24
e todos os controles que compõe a página.
OnLoad
É chamado o evento OnLoad da página e recursivadamente para
cada controle que está na página. Neste momento o objeto da classe Page já está carregado na memória.Utilize este evento para atualizar propriedades e estabelecer conexões com o banco de dados.
OnPreRender
Último evento que o desenvolvedor poderá utilizar para fazer
Desenvolvimento de Aplicativos Web I
Eventos no ciclo de vida da página
OnUnLoad
Este evento ocorre para cada controle e para a página. Qualquer
25
Este evento ocorre para cada controle e para a página. Qualquer
alteração nas propriedades da página / controles não terão efeito na tela a ser apresentada no browser. Neste momento da página é descartada.
A regra geral de como os eventos são disparados é que os eventos de inicialização são disparados a partir do controle
Desenvolvimento de Aplicativos Web I
Classe Page do ASP.NET
Representa uma página Web e armazena todos os controles
26
Representa uma página Web e armazena todos os controles
associados a página.
Fornece comportamentos básicos para todas as páginas.
O comportamento de cada página pode ser alterado através de
seus atributos.
Toda página ASP.NET deverá herdar da classe Page de forma
Desenvolvimento de Aplicativos Web I
Propriedades da Classe Page.
Controls
27
Representa a coleção de controles da página. IsPostBack
Indica se a página está sendo carregada pela primeira vez ou
devido a um PostBack.
IsValid
Indica se os controles de validação da página estão validados. MasterPage
Desenvolvimento de Aplicativos Web I
Propriedades da Classe Page.
MasterPageFile
28
MasterPageFile
Recupera o nome da página Master. Title
Representa o nome do Título da página. Validators
Desenvolvimento de Aplicativos Web I
Diretivas da página Web
Language
Define a linguagem a ser utilizada na página.
29
Define a linguagem a ser utilizada na página. CodeFile
Especifica o nome do arquivo que contém a classe associada para
a página ( WebForm1.aspx.cs).
EnableViewState
Especifica se a página irá gerenciar o conteúdo e propriedades dos
controles através dos Requests.
Inherits
Desenvolvimento de Aplicativos Web I
Tipos de eventos
Cliente
São eventos utilizados para a validação de controles, exibição de
30
São eventos utilizados para a validação de controles, exibição de
mensagens, definição de foco em controles e entre outras funcionalidades.
Utilizamos o JavaScript para fazer a programação no lado cliente. São eventos que não geram PostBack.
No ASP.NET as funções JavaScript são inseridas na forma de
Desenvolvimento de Aplicativos Web I
Tipos de eventos
Servidor
São eventos utilizados na execução de regras de negócios que
31
São eventos utilizados na execução de regras de negócios que
estão localizados no servidor.
Desenvolvimento de Aplicativos Web I
Arquivo de configuração ( Web.Config)
É um arquivo no formato XML.
32
É um arquivo no formato XML.
Podemos configurar algumas características da aplicação como
o tipo de autenticação, string de conexão, mensagens de erros e outras características personalizadas definida pelo usuário.
Permite alterações nas configurações sem parar a aplicação. Mantém as configurações separadas do código da aplicação.
Desenvolvimento de Aplicativos Web I
Criação de parâmetros Personalizados no Web.Config
<configuration>
33
<configuration>
<appSettings>
<add key=“Sistema" value=“GSV" /> <add key="Versao" value="1.1.2" /> </appSettings>
Desenvolvimento de Aplicativos Web I
Recuperação de parâmetros no Web.Config
string NomeSistema;
34
string NomeSistema; string Versao;
NomeSistema =ConfigurationManager.AppSettings[“Sistema"] ; Versao = ConfigurationManager.AppSettings[“Versao"] ;
Desenvolvimento de Aplicativos Web I
Modelos de compilação ( ASP.NET 1.0)
Os arquivos code-behind eram compilados em um módulo
35
Os arquivos code-behind eram compilados em um módulo
assembly e armazenados no diretório Bin.
As páginas eram compiladas sob solicitação, contudo este
processo de compilação torna a primeira requisição de qualquer página mais lenta do que as requisições subseqüentes.
Desenvolvimento de Aplicativos Web I
Modelos de compilação ( ASP.NET 2.0)
In-Place Pre-Compilation
36
In-Place Pre-Compilation
É a forma padrão de compilação do ASP.NET 2.0. Todas as páginas são compiladas.
Vantagens:
Fácil de usar.
Podemos alterar o código que está no servidor e rodar a
Desenvolvimento de Aplicativos Web I
Modelos de compilação ( ASP.NET 2.0)
Desvantagens:
37
Desvantagens:
Exige o código fonte no servidor.
A primeira requisição de página será lenta após a
alteração.
A segurança irá ficar comprometida.
Desenvolvimento de Aplicativos Web I
Modelos de compilação ( ASP.NET 2.0)
Pre-Compilation for Deployment
38
Todo o código da aplicação é compilado, oferecendo uma
melhor performance.
O código não é embutido em um apenas assembly (
Arquivo Dll) mas sim em vários.
Para cada arquivo ASPX é criado um arquivo com
extensão *.compiled dentro do diretório Bin.
Dentro deste arquivo contém a referência do arquivo
Desenvolvimento de Aplicativos Web I
Modelos de compilação ( ASP.NET 2.0)
Desenvolvimento de Aplicativos Web I
Modelos de compilação ( ASP.NET 2.0)
Conteúdo do arquivo .compiled
Desenvolvimento de Aplicativos Web I
Modelos de compilação
ASP.NET 2.0 X ASP.NET 1.1
41
ASP.NET 2.0 X ASP.NET 1.1
No ASP.NET 1.1 quando alterávamos o code-behind seria necessário compilar todo o projeto e refazer o deployment do assembly completo. Agora, no ASP.NET 2.0, podemos fazer o deployment apenas do arquivo que sofreu a alteração.
Desenvolvimento de Aplicativos Web I
Gerenciamento de estado da aplicação.
Devido a natureza stateless das aplicações Web, as
42
Devido a natureza stateless das aplicações Web, as
páginas são destruídas e recriadas a cada novo Request.
As informações da página são perdidas no ciclo de vida
da página.
O ASP.NET fornece várias formas de gerenciar o estado
Desenvolvimento de Aplicativos Web I
Gerenciamento de estado da aplicação.
Desenvolvimento de Aplicativos Web I
Tipos de gerenciamento de estado da aplicação
Server-Side
Utiliza recursos do servidor para armazenar informações de
estado.
44
Utiliza recursos do servidor para armazenar informações de
estado.
Cada usuário consome uma parte da memória do servidor. É mais seguro que o Client-Side
Client-Side
Utiliza recursos do cliente para armazenar informações de
estado.
As informações são enviadas ao servidor a cada Request,
diminuindo assim o tempo de carregamento da página e uma utilização maior da banda da rede.
Desenvolvimento de Aplicativos Web I
Tipos de gerenciamento de estado da aplicação
Server-Side
Application State
45
Application State
A informação armazenada é disponível para todos os
usuários. Exemplo: Números de visitantes
Sesion State
A informação armazenada é disponível para o usuário
específico da sessão. Exemplo: Armazenamento da cor preferida do usuário.
Desenvolvimento de Aplicativos Web I
Tipos de gerenciamento de estado da aplicação
Server-Side
46
State Server
A informação armazenada num banco de dados Sql
Server.
Cache
Possui recursos mais avançados como tempo de
permanência da informação em cache, dependência e entre outros.
Desenvolvimento de Aplicativos Web I
Tipos de gerenciamento de estado da aplicação
Client-Side
47
Cookies
É um arquivo texto que pode ser usado para
armazenar pequenas informações do usuário. O uso comum de cookies é para identificar um usuário quando o mesmo visita vários sites.
ViewState
Web Forms utilizam um campo oculto chamado
_ViewState que armazena todas as configurações e dados de entrada dos controles durante o PostBack.
Desenvolvimento de Aplicativos Web I
Tipos de gerenciamento de estado da aplicação
Client-Side
48
Client-Side
QueryStrings
QueryStrings é uma informação que é adicionada no final de
uma URL. O início dos parâmetros é representado por uma exclamação (?) e os parâmetros separados por um &.
Desenvolvimento de Aplicativos Web I
Client-Site X Server-Site
Desenvolvimento de Aplicativos Web I
Client-Side X Server-Side
50
Utilize o gerenciamento de estado da informação Client-Side quando a escabilidade é prioritária e Server-Side quando as informações devem ser protegidas.
Desenvolvimento de Aplicativos Web I
Controles do ASP.Net
HTML Controls
51
HTML Controls
Desenvolvimento de Aplicativos Web I
Controles do ASP.Net
HTML Controls
52
HTML Controls
São controles com elementos HTML e são tradicionalmente
usados em páginas ASP e suportados no ASP.NET.
Não são programaticamente acessíveis no servidor. Estão disponíveis na Toolbox do VS na Aba HTML.
Desenvolvimento de Aplicativos Web I
Controles do ASP.Net
Web Server Controls
São controles projetados para trabalhar com o modelo de
53
São controles projetados para trabalhar com o modelo de
programação do ASP.NET.
Possuem propriedades e métodos mais avançados e
programaticamente acessíveis no servidor.
São herdados da classe base WebControl.
Possuem a habilidade de detectar a capacidade de um
Desenvolvimento de Aplicativos Web I
Controles do ASP.Net
Web Server Controls
Possuem o atributo runat = “Server” no HTML.
54
Possuem o atributo runat = “Server” no HTML.
<asp:Button ID = “Button1” runat = “Server”/>
Button, GridView , CheckBox, TextBox e entre outros são
Desenvolvimento de Aplicativos Web I
Criando controles dinamicamente
TextBox txtNome
= new TextBox();
55
TextBox txtNome
= new TextBox();
txtNome.ID
= “
txtNomeFantasia
";
txtNome.Text
= “
Casa e Cia
";
txtNome.Visible
= true;
form1.Controls.Add(txtNome);
Desenvolvimento de Aplicativos Web I
Propriedades de um Web Server Control
Id
Representa o nome utilizado na programação.
56
Representa o nome utilizado na programação. AccessKey
Tecla de atalho para acessar o controle. É representado por
um caracter. BackColor
Representa a cor de fundo do controle. BorderColor
Desenvolvimento de Aplicativos Web I
Propriedades de um Web Server Control
CssClass
A folha de estilo utilizado no controle.
57
A folha de estilo utilizado no controle. Enabled
Atributo que desabilita o controle, mas deixando visível. TabIndex
Posição do controle na ordem de tabulação. ToolTip
Texto que aparece quando o usuário passa o mouse em
Desenvolvimento de Aplicativos Web I
Controlando um PostBack de um controle
Alguns controles causam um PostBack quando um
determinado evento ocorre, como por exemplo um clique no botão.
58
determinado evento ocorre, como por exemplo um clique no botão.
Outros controles, como o TextBox, possuem eventos que
não causam um PostBack automático, mas podemos configurá-los para isto.
O TextBox possui o evento TextChanged, e por default
não gera um PostBack automático quando alteramos um texto.
Para isto acontecer, podemos utilizar a propriedade
Desenvolvimento de Aplicativos Web I
Controlando um PostBack de um controle
Outros controles como DropdownList, CheckBox e
59
Outros controles como DropdownList, CheckBox e
Desenvolvimento de Aplicativos Web I
Responda Rápido:
Qual é a propriedade de um Server Control que podemos
desabilitar para minimizar o ViewState da página?
60
desabilitar para minimizar o ViewState da página?
EnableViewState
Um CheckBox de uma aplicação não está gerando um
PostBack quando ele é habilitado / desabilitado. Como podemos gerar um PostBack neste caso?
Desenvolvimento de Aplicativos Web I
Explorando os Web Server Control
TextBox
61
CheckBox
Desenvolvimento de Aplicativos Web I
Propriedades de um TextBox
AutoCompleteType
Representa o tipo da lista de valores que o TextBox irá
62
Representa o tipo da lista de valores que o TextBox irá
apresentar quando o usuário digitar novamente os dados. MaxLength
Máximo de caracteres que um TextBox pode aceitar. ReadOnly
Representa se o texto poderá ser alterado ou não. TextMode ( SingleLine / MultLine / Password)
Desenvolvimento de Aplicativos Web I
Propriedades de um CheckBox
Checked
Indica o estado do controle ( Habilitado ou Desabilitado)
63
Indica o estado do controle ( Habilitado ou Desabilitado) Text
Desenvolvimento de Aplicativos Web I
Propriedades de um RadioButton
Checked
Indica o estado do controle ( Habilitado ou Desabilitado)
64
Indica o estado do controle ( Habilitado ou Desabilitado) GroupName
Desenvolvimento de Aplicativos Web I
Responda Rápido:
Como podemos criar um TextBox que irá representar um
campo de Senha?
65
campo de Senha?
Alterar a propriedade TextMode para Password.
Como podemos criar múltiplos RadioButton funcionando
de forma exclusiva?
Desenvolvimento de Aplicativos Web I
Controles de validação de dados
RequiredFieldValidator
66
CompareValidator RangeValidator RegularExpressionValidator ValidationSummaryDesenvolvimento de Aplicativos Web I
Controles de validação de dados
RequiredFieldValidator
Verifica se um valor foi digitado no controle. Utilizado
67
Verifica se um valor foi digitado no controle. Utilizado
quando alguns campos são de digitação obrigatória.
Possui a propriedade ControlToValidade que irá representar
o controle a ser validado.
A propriedade ErrorMessage irá mostrar a mensagem de
erro no controle ValidationSummary.
A propriedade Text irá mostrar a mensagem de erro logo
Desenvolvimento de Aplicativos Web I
Controles de validação de dados
Exemplo de uma validação de entrada
68
Desenvolvimento de Aplicativos Web I
Controles de validação de dados
CompareValidator
Utilizado para comparar a entrada de dois controles.
69
Utilizado para comparar a entrada de dois controles.
Exemplo: Idade Inicial e Final. A Idade Inicial sempre deverá ser menor que a Idade Final.
Possui a propriedade ControlToValidade que representa o
controle a ser validado.
Possui propriedade ControlToCompare que representa qual
controle que será comparado.
A propriedade Type representa o tipo da comparação (
Desenvolvimento de Aplicativos Web I
Controles de validação de dados
CompareValidator
A propriedade Operator representa o operador
70
A propriedade Operator representa o operador
utilizado na comparação ( Equal, GreaterThan, LessThan)
Desenvolvimento de Aplicativos Web I
Controles de validação de dados
Exemplo de uma validação por comparação
71
Desenvolvimento de Aplicativos Web I
Controles de validação de dados
RangeValidator
Utilizado para verificar se um valor informado está dentro de
72
Utilizado para verificar se um valor informado está dentro de
uma faixa.
Possui a propriedade MinimumValue que representa o valor
mínimo que o campo irá aceitar.
Possui propriedade MaximumValue que representa o valor
máximo que o campo irá aceitar.
A propriedade ControlToValidade representa o controle que
Desenvolvimento de Aplicativos Web I
Controles de validação de dados
Exemplo de uma validação por faixa
73
Desenvolvimento de Aplicativos Web I
Controles de validação de dados
RegularExpressionValidator
Utilizado para validar formatos de campos como e-mail,
74
Utilizado para validar formatos de campos como e-mail,
telefone, Cep e entre outros.
Possui a propriedade ValidationExpression que representa a
expressão de validação do campo.
ValidationExpression="\w+@\w+\.\w+"
A propriedade ControlToValidade representa o controle que
Desenvolvimento de Aplicativos Web I
Controles de validação de dados
Exemplo de uma validação de formato
75
Desenvolvimento de Aplicativos Web I
Controles de validação de dados
ValidationSummary
Utilizado para mostrar as mensagens de erro de todos
76
Utilizado para mostrar as mensagens de erro de todos
os controles de validação da página.
Possui a propriedade HeaderText que representa o
texto do cabeçalho do display.
A propriedade ShowMessageBox mostra os erros na
Desenvolvimento de Aplicativos Web I
Controles de validação de dados
Exemplo de utilização do Summary
Desenvolvimento de Aplicativos Web I
Utilizando o Trace no ASP.NET
Utilizado para detectarmos problemas na aplicação em
tempo de execução.
78
tempo de execução.
Explorar recursos utilizados na página, como por exemplo
variáveis de sessão, tamanho do ViewState, QueryStrings e entre outras informações.
Podemos saber com detalhes o que está acontecendo
Desenvolvimento de Aplicativos Web I
Habilitando o Trace no ASP.NET
Web.Config.
79
Web.Config.
Desenvolvimento de Aplicativos Web I
Habilitando o Trace no ASP.NET
Através do Web.Config
Enabled: Habilita / Desabilita o recurso do Trace.
80
Enabled: Habilita / Desabilita o recurso do Trace.
PageOutput: Se configurado para True, envia as
informações do Trace na própria página, caso contrário gera as informações num arquivo virtual com extensão .axd
LocalOnly: Indica se a informação de Trace pode ser
visualizada apenas no Servidor (True) ou em qualquer micro (False).
TraceMode: Indica como deverá ser ordenada as
Desenvolvimento de Aplicativos Web I
Habilitando o Trace no ASP.NET
Visualização da configuração no Web.Config
81
<configuration>
<system.web>
<trace enabled ="true" pageOutput ="true" localOnly = "true"
TraceMode = "SortByTime" <system.web>
Desenvolvimento de Aplicativos Web I
Habilitando o Trace no ASP.NET
Através do Web Site Administration Tool
Acessível através do Menu WebSite / ASP.NET
82
Acessível através do Menu WebSite / ASP.NET
Configuration.
É exibida uma página Web de configuração da
aplicação.
As alterações realizadas são armazenadas no
Desenvolvimento de Aplicativos Web I
Visualizando o Trace no ASP.NET
Se o parâmetro PageOutput estiver configurado como
True, bastar rodar a aplicação e ver os resultados na própria página.
83
própria página.
Se o parâmetro PageOutput estiver configurado como
False, rode a aplicação e digite a página Trace.axd no final da URL.
Desenvolvimento de Aplicativos Web I
Responda Rápido:
Como podemos gerar informações de Trace na própria
página Web?
84
página Web?
Alterar o PageOutput para True.
Qual o nome da página virtual onde podemos visualizar o
Trace da aplicação?
Desenvolvimento de Aplicativos Web I
Recuperando informações do Cliente / Request
Request.Browser
85
Request.Browser
Page.Request
Page.Response
Desenvolvimento de Aplicativos Web I
Recuperando informações do Cliente
Request.Browser
Devido a diversidade de navegadores, podemos
86
Devido a diversidade de navegadores, podemos
utilizar recursos que o ASP.NET oferece para detectar qual o navegador o usuário está usando.
Alguns Browsers podem ter restrições por razões de
segurança.
Os controles do ASP.NET se adaptam
Desenvolvimento de Aplicativos Web I
Recuperando informações do Cliente
Propriedades do Request.Browser
87
ActiveXControls
Indica se o Browser suporta ActiveX Controls.
Cookies
Indica se o Browser suporta Cookies.
IsMobileDevice
Indica se o Browser é reconhecido como um
Desenvolvimento de Aplicativos Web I
Recuperando informações do Cliente
Propriedades do Request.Browser JavaScript
88
JavaScript
Indica se o Browser suporta Java script.
Version
Recupera a versão do Browser.
Browser
Recupera o nome do Browser.
Exemplo:
Desenvolvimento de Aplicativos Web I
Objeto Response
Page.Response
89
Propriedade da Page que permite o acesso a um
HTTP Response enviado do servidor ao cliente.
Podemos examinar e incluir informações no
Desenvolvimento de Aplicativos Web I
Objeto Response
Propriedades do Objeto Response Cookies
90
Cookies
Utilizada para adicionarmos Cookies no cliente.
Status e StatusCode
Recupera o código que indica se o Response foi
executado com sucesso. Exemplo:
200: Response executado com sucesso. 404: Arquivo não encontrado.
Desenvolvimento de Aplicativos Web I
Objeto Request
Page.Request
91
Objeto que fornece acesso as informações do
Request enviadas ao Servidor.
Podemos examinar os detalhes de um Request.
Desenvolvimento de Aplicativos Web I
Objeto Request
Propriedades do Objeto Request IsSecureConnection
92
IsSecureConnection
Indica se a conexão está utilizando um protocolo
seguro (Https).
LogonUserIdentity
Recupera o objeto WindowsIdentiy que possui
informações do usuário logado.
QueryString
Desenvolvimento de Aplicativos Web I
Objeto Request
Propriedades do Objeto Request TotalBytes
93
TotalBytes
Recupera o tamanho em Bytes do Request.
UserHostAddress
Recupera o IP do cliente.
UserHostName
Desenvolvimento de Aplicativos Web I
Objeto Request
Propriedades do Objeto Request UserLanguages
94
UserLanguages
Recupera uma lista de línguas suportadas pelo
Browser do cliente.
PhysicalApplicationPath
Recupera o diretório físico da aplicação.
Path
Desenvolvimento de Aplicativos Web I
Introdução ao ADO.NET
É com conjunto de classes, interfaces e estruturas que
gerenciam o acesso a dados.
95
gerenciam o acesso a dados.
É uma evolução do ADO.
Projetado para trabalhar desconectado.
Modelo de programação que suporta XML, facilitando a
interoperabilidade entre plataformas heterogêneas.
Diferente do ADO, tem habilidade de extrair dados de
diferentes fontes de dados, como por exemplo, arquivos XML, planilhas Excel e entre outras.
Desenvolvimento de Aplicativos Web I
Uma evolução do ADO
Desenvolvimento de Aplicativos Web I
Arquitetura do ADO.NET
Desenvolvimento de Aplicativos Web I
Arquitetura do ADO.NET
Data Providers
98
Objetos que não armazenam dados.
Utilizados para ler e escrever em banco de dados. Possuem conhecimento da fonte de dados.
Data Classes
Objetos que armazenam e manipulam os dados. Não possuem conhecimento da fonte de dados.
Desenvolvimento de Aplicativos Web I
Tipos de Data Providers
Sql Server .Net Data Provider ( SQL 7.0 e 2000)
99
Sql Server .Net Data Provider ( SQL 7.0 e 2000) SqlCommand.
SqlConnection. SqlDataReader.
OleDb .Net Data Provider ( SQL 6.5, DB2, Access) OleDBCommand.
OleDBConnection. OleDBDataReader.
Desenvolvimento de Aplicativos Web I
Trabalhando com as classes conectadas
SqlConnection:
10
0
SqlConnection:
O objeto SqlConnection é responsável pelo
gerenciamento de toda a lógica de acesso a dados.
O primeiro passo para interagir com um banco de dados
Desenvolvimento de Aplicativos Web I
Criando um objeto SqlConnection
SqlConnection objCon = new SqlConnection(“ ");
10
1
SqlConnection objCon = new SqlConnection(“ ");
O Constructor da classe recebe como parâmetro uma
Desenvolvimento de Aplicativos Web I
Passos para criar e utilizar um SqlConnection
Instanciar um objeto do tipo SqlConnection.
10
2
Instanciar um objeto do tipo SqlConnection. Abrir uma conexão.
Atribuir a conexão em outros objetos. Executar operações no banco de dados. Fechar a conexão.
Desenvolvimento de Aplicativos Web I
Parâmetros de uma string de conexão
Data Source
10
3
Data Source
Identifica o servidor de banco de dados. Initial Catalog
Identifica o nome do DataBase. User Id
Identifica o nome do usuário. Password
Senha do usuário.
"DataSource=ServProducao;Initial Catalog=Produtos; User ID=UsuProducao;Password=hgt56uy"
Desenvolvimento de Aplicativos Web I
Armazenando a string de conexão
A string de conexão poderá ser armazenada no arquivo
xml Web.Config.
10
4
xml Web.Config.
A string de conexão sempre deverá ficar armazenada
fora do código com a finalidade de minimizar as recompilações do projeto
.
Desenvolvimento de Aplicativos Web I
Armazenando a string de conexão no web.config
<connectionStrings>
10
5
<connectionStrings>
<add name="ExemploAula"
providerName="System.Data.SqlClient"
connectionString="Initial Catalog=Movimentos;data source=ServProducao;User Id=sa;Password=sa“/>
</connectionStrings>
É aconselhável criptografar a string de conexão no web.config.
Desenvolvimento de Aplicativos Web I
Recuperando a string de conexão do web.config
String conString;
10
6
conString = ConfigurationManager.ConnectionStrings["ExemploAula"]. ConnectionString
Desenvolvimento de Aplicativos Web I
Trabalhando com Pool de Conexões
Criando e abrindo uma conexão exige um consumo de
recursos a cada operação.
10
7
recursos a cada operação.
Em algumas situações o servidor poderá ter várias
conexões abertas e algumas sem utilização, alocando recursos desnecessários.
O Pool de Conexões é o processo de reutilizar conexões
ativas ao invés de criar novas conexões quando um nova conexão é requisitada.
Desenvolvimento de Aplicativos Web I
Configuração do Pool de Conexões
É configurado pelos parâmetros inseridos na string de
conexão.
10
8
conexão.
Connection Timeout
Número de segundos de espera para uma conexão
disponível. Min Pool Size
Número mínimo de conexões mantidas no pool. O padrão é 0. Max Pool Size
Número máximo de conexões permitidas no pool. O padrão é
Desenvolvimento de Aplicativos Web I
Configuração do Pool de Conexões
10
9
Para termos uma aplicação de alta performance, deveremos utilizar o pool de conexão. Quando utilizamos os Providers do Sql Server, não precisamos habilitar o pool, porque o Provider do Sql Server já faz o gerenciamento automaticamente.
Desenvolvimento de Aplicativos Web I
Funcionamento do Pool de Conexões
No momento da criação do pool, múltiplos objetos são
criados e adicionados no pool até o valor do parâmetro Min
11
0
criados e adicionados no pool até o valor do parâmetro Min Pool Size.
Quando um conexão é requisitada, o gerenciador verifica
se existe uma conexão disponível e retorna a mesma para ser reutilizada, caso contrário, uma nova conexão é criada e adicionada no pool.
Desenvolvimento de Aplicativos Web I
Funcionamento do Pool de Conexões
Quando uma conexão é requisita e o número de conexões
11
1
Quando uma conexão é requisita e o número de conexões
no pool já está igual ao parâmetro Max Pool Size, a requisição é adicionada numa fila até que uma conexão esteja disponível. Se o tempo de espera na fila ultrapassar o parâmetro Timeout, um erro é retornado ao cliente.
A Conexão é devolvida ao pool quando o método Close()
Desenvolvimento de Aplicativos Web I
Propriedades do SqlConnection
ConnectionString
String de conexão a ser utilizada para abrir o banco de
11
2
String de conexão a ser utilizada para abrir o banco de
dados.
ServerVersion
Retorna a versão do banco de dados conectado. State
Desenvolvimento de Aplicativos Web I
Métodos do SqlConnection
BeginTransaction11
3
BeginTransactionInicia uma transação no banco de dados
.
ClearAllPoolsLimpa o pool de conexão
.
CloseFecha a conexão
.
CreateCommandDesenvolvimento de Aplicativos Web I
Trabalhando com as classes conectadas
SqlCommand:
11
4
SqlCommand:
É representada pela classe SqlCommand.
Pode referenciar uma Stored Procedure ou um Sql a ser
executado no banco de dados.
Desenvolvimento de Aplicativos Web I
Criando um SqlCommand
string sql = “ select * from vendas”;
11
5
string sql = “ select * from vendas”;
SqlCommand cmd = new SqlCommand(sql,objConexao);
O Constructor da classe poderá receber como parâmetro: Um texto Sql.
Uma conexão. Uma transação.
Desenvolvimento de Aplicativos Web I
Propriedades do SqlCommand
CommandText
11
6
Representa o Sql ou Stored Procedure a ser executado
no banco de dados.
CommandType
Representa como a propriedade CommandText irá ser
interpretada.( Text ou StoredProcedure)
Connection
Representa a conexão que irá ser utilizada Parameters
Desenvolvimento de Aplicativos Web I
Propriedades do SqlCommand
Transaction11
7
TransactionRepresenta o objeto SqlTransaction utilizado na
Desenvolvimento de Aplicativos Web I
Métodos do SqlCommand
ExecuteNonQuery
11
8
Executa um SQL ( Delete, Insert e Update) e retorna o
número de linhas afetadas.
ExecuteScalar
Retorna a primeira coluna da primeira linha de um
retorno de um SQL.
ExecuteReader
Desenvolvimento de Aplicativos Web I
Passos para criar um SqlCommand
Criar uma string de conexão.
11
9
Criar um objeto do tipo SqlConnection. Criar um objeto do tipo SqlCommand.
Valorar a propriedade CommandText do SqlCommand
com uma sentença SQL.
Valorar a propriedade CommandType. Abrir a conexão.
Executar a sentença SQL no banco de dados. Fechar a conexão.
Desenvolvimento de Aplicativos Web I
Criação de um SqlCommand - ExecuteNonQuery
12
0
Desenvolvimento de Aplicativos Web I
Criação de um SqlCommand - ExecuteScalar
12
1
Desenvolvimento de Aplicativos Web I
Criação de um SqlCommand - ExecuteXmlReader
Para retornar XML diretamente de um banco Sql Server
podemos utilizar o método ExecuteXmlReader.
12
2
podemos utilizar o método ExecuteXmlReader.
Este método retorna um objeto do tipo XmlReader
contendo o XML retornado pelo banco de dados.
Para utilizar este método, o banco de dados deverá ter
Desenvolvimento de Aplicativos Web I
Criação de um SqlCommand - ExecuteXmlReader
12
3
Desenvolvimento de Aplicativos Web I
SqlCommand - Métodos Assíncronos
Síncrono
12
4
Síncrono
Significa quem chamou o método deve esperar o retorno para que seja possível executar outros comandos.
Assíncrono
Não é necessário esperar o retorno do método chamado para executar outras operações e outros métodos
Desenvolvimento de Aplicativos Web I
SqlCommand - Métodos Assíncronos
12
5
Desenvolvimento de Aplicativos Web I
SqlCommand - Métodos Assíncronos
Para configurar a execução dos métodos de forma
12
6
Para configurar a execução dos métodos de forma
assíncrona no banco de dados é necessário fazer uma configuração na string de conexão.
Desenvolvimento de Aplicativos Web I
SqlCommand – Parâmetros de Métodos Assíncronos
CallBack
12
7
CallBack
É método que será executado quando a operação for
finalizada.
Dentro deste método deverá ser executado o
respectivo método EndExecuteXXX.
É onde devemos tratar as exceções geradas na
Desenvolvimento de Aplicativos Web I
SqlCommand – Parâmetros de Métodos Assíncronos
stateObject
12
8
stateObject
É um objeto definido pelo usuário que é passado
como parâmetro para o método de CallBack.
Podemos recuperar este objeto dentro do método
Desenvolvimento de Aplicativos Web I
SqlCommand - Métodos Assíncronos
12
9
Desenvolvimento de Aplicativos Web I
SqlCommand - Métodos Assíncronos
13
0
Desenvolvimento de Aplicativos Web I
Trabalhando com as classes conectadas
SqlDataReader:
13
1
SqlDataReader:
É mais eficiente na leitura de dados.
É somente leitura e “caminha”(forward-only) somente
para frente.
Somente uma linha é mantida em memória.
Desenvolvimento de Aplicativos Web I
Propriedades do SqlDataReader
FieldCount13
2
FieldCountPega o número de colunas da linha corrente. HasRows
Indica se o SqlDataReader contém uma ou mais linhas. IsClosed
Desenvolvimento de Aplicativos Web I
Métodos do SqlDataReader
Read13
3
ReadAvança para o próximo registro. Close
Fecha o objeto SqlDataReader. NextResult
Desenvolvimento de Aplicativos Web I
Criando um SqlDataReader
SqlCommand cmd = new SqlCommand(sql,objConexao);
13
4
SqlCommand cmd = new SqlCommand(sql,objConexao);
Desenvolvimento de Aplicativos Web I
Lendo dados de um SqlDataReader
13
5
Desenvolvimento de Aplicativos Web I
Lendo dados de um SqlDataReader
Uma vez lida a linha, esta linha nunca irá estar disponível.
13
6
Uma vez lida a linha, esta linha nunca irá estar disponível.
Temos que interagir linha a linha do SqlDataReader
através de um loop utilizando o método Read.
Existem várias formas de recuperar o valor de uma coluna,
porém a forma mais rápida é através do índice da coluna.A sua única desvantagem é na manutenção, pois uma mudança no Sql poderá afetar a numeração dos índices.
Desenvolvimento de Aplicativos Web I
Lendo um conjunto de resultados
Em algumas situações precisamos retornar um conjunto de
13
7
Em algumas situações precisamos retornar um conjunto de
dados de uma única vez, fazendo somente um acesso ao banco de dados.
Desenvolvimento de Aplicativos Web I
Lendo um conjunto de resultados
13
8
Desenvolvimento de Aplicativos Web I
Finalizando um SqlDataReader
Enquanto o SqlDataReader estiver em uso é necessário ter
13
9
Enquanto o SqlDataReader estiver em uso é necessário ter
uma conexão aberta e dedicada.
Após a utilização do objeto, devemos fechar o
Desenvolvimento de Aplicativos Web I
Finalizando um SqlDataReader
14
0
Desenvolvimento de Aplicativos Web I
Finalizando um SqlDataReader
Uma outra forma de fechar a conexão de forma automática,
14
1
Uma outra forma de fechar a conexão de forma automática,
seria utilizar o outro overload do método ExecuteReader.
Desta forma não há necessidade de fechar explicitamente
a conexão. O próprio DataReader se encarrega de fazer isto automaticamente quando chamar o método Close.
Desenvolvimento de Aplicativos Web I
Um código completo
14
2
SqlDataReader – Considerações Finais
Com o SqlDataReader garantimos uma performance muito
Desenvolvimento de Aplicativos Web I
14
3
Com o SqlDataReader garantimos uma performance muito
maior no acesso e resgate aos dados de uma base de dados. Mas é preciso atentar a diversas regras e boas práticas para o uso do mesmo, para que algo tão poderoso e eficaz não torne um problema, dificultando a manutenção e principalmente a eficácia e performance que ele nos fornece.
Desenvolvimento de Aplicativos Web I
Trabalhando com as classes conectadas
SqlBulkCopy:
14
4
SqlBulkCopy:
Através desta classe podemos fazer uma cópia entre
duas fontes de dados.
Fornece a mesma funcionalidade de um DTS do Sql
Server.
Desenvolvimento de Aplicativos Web I
Propriedades do SqlBulkCopy
DestinationTableName14
5
DestinationTableNameNome da tabela de destino. ColumnMappings
Quando a tabela de origem e destino não tem os
mesmos nomes de colunas, é necessário fazer o mapeamento destas colunas.
Desenvolvimento de Aplicativos Web I
Métodos do SqlBulkCopy
Close14
6
CloseFecha o objeto SqlBulkCopy. WriteToServer
Faz a cópia de todas as linhas da fonte de origem para
a fonte de destino especificada na propriedade DestinationTableName.
Desenvolvimento de Aplicativos Web I
Passos para criar um SqlBulkCopy
Criar uma conexão e um objeto SqlCommand para a
fonte de dados de origem.
Aplicar o método ExecuteReader para criar um
14
7
Aplicar o método ExecuteReader para criar um
DataReader.
Criar um objeto do tipo SqlBulkCopy com a string de
conexão de destino.
Valorar a propriedade DestinationTableName do
SqlBulkCopy.
Chamar o método WriteToServer para realizar a
operação de cópia.
Chamar o método Close do objeto SqlBulkCopy e fechar
Desenvolvimento de Aplicativos Web I
Utilizando um objeto SqlBulkCopy
14
8
Desenvolvimento de Aplicativos Web I
Utilizando um objeto SqlBulkCopy
14
9
Desenvolvimento de Aplicativos Web I
Trabalhando com as classes conectadas
SqlDataAdapter:
15
0
SqlDataAdapter:
É a ponte entre o lado conectado e o desconectado do
ADO.NET.
Utilizado na recuperação e atualização dos dados.
Representa um conjunto de objetos SqlCommands e
Desenvolvimento de Aplicativos Web I
Objeto SqlDataAdapter
15
1
Desenvolvimento de Aplicativos Web I
Propriedades do SqlDataAdapter
InsertCommand, selectCommand,deleteCommand e15
2
InsertCommand, selectCommand,deleteCommand e updateCommandObjeto SqlCommand utilizado na inclusão ,seleção e
Desenvolvimento de Aplicativos Web I
Métodos do SqlDataAdapter
Fill15
3
FillMétodo que recupera os dados através do
selectCommand.
Update
Método que chama os respectivos updateCommand,
insertCommand e deleteCommand para cada linha do objeto DataRow.
Desenvolvimento de Aplicativos Web I
Passos para criar um SqlDataAdapter
1) Criar uma string de conexão.
15
4
1) Criar uma string de conexão.
2) Criar um objeto do tipo SqlConnection.
3) Criar um objeto do tipo SqlDataAdapter, passando o Sql e um SqlConnection no seu constructor.
4) Criar um DataTable. 5) Chamar o método Fill().
Desenvolvimento de Aplicativos Web I
Passos para criar um SqlDataAdapter
15
5
Desenvolvimento de Aplicativos Web I
Trabalhando com as classes desconectadas
DataTable:
15
6
Podemos comparar o objeto DataTable com uma tabela
física no banco de dados.
Possui uma coleção de linhas (DataRows) e colunas(
DataColumns).
Utilizamos o DataTable para representar os dados em
memória de forma desconectada.
Um objeto DataTable poderá ser instanciado através da
classe DataTable, adicionando objetos DataRows e DataColumns antes de incluir os dados.
Desenvolvimento de Aplicativos Web I
Propriedades do DataTable
Columns
Representa uma coleção de colunas.
15
7
Representa uma coleção de colunas.
foreach (DataColumn coluna in dtProduto.Columns) Console.WriteLine(coluna.ColumnName);
PrimaryKey
Define um array de campos que irão fazer parte da chave
Desenvolvimento de Aplicativos Web I
Propriedades do DataTable
Rows15
8
RowsRepresenta uma coleção de linhas.
foreach (DataRow linha in dtProduto.Rows) Console.WriteLine(linha[“Nome”]);
TableName
Desenvolvimento de Aplicativos Web I
Métodos de um DataTable
Clear15
9
ClearLimpa os dados do DataTable. Clone
Faz um clone da estrutura de um DataTable sem os
dados.
Copy
Faz uma cópia da estrutura e dos dados de um
Desenvolvimento de Aplicativos Web I
Métodos do DataTable
Compute
Representa uma expressão e um filtro para realizar cálculos
16
0
Representa uma expressão e um filtro para realizar cálculos
nas linhas de um DataTable.
object soma;
soma = dtProduto.Compute("Sum(Total)", "CodProduto = 5");
ImportRow
Importa uma linha de um DataTable para dentro de um outro
DataTable.
Desenvolvimento de Aplicativos Web I
Métodos do DataTable
Select
Filtra os dados de um DataTable de acordo com um critério.
16
1
Filtra os dados de um DataTable de acordo com um critério.
DataRow[] drLinha;
drLinha = dtProduto.Select(“Codigo>5", “Nome ASC"); If (drLinha.Length > 0)
Console.WriteLine ( “Linhas encontradas”)
WriteXml
Grava o conteúdo do DataTable no formato XML e
opcionalmente a sua estrutura.
Desenvolvimento de Aplicativos Web I
Método do DataTable
WriteXmlSchema16
2
WriteXmlSchemaGrava a estrutura do DataTable no formato XML.
Desenvolvimento de Aplicativos Web I
Trabalhando com as classes desconectadas
DataColumn:
16
3
DataColumn:
Representa uma coluna de um DataTable.
É representada pela propriedade Columns do
DataTable.
Desenvolvimento de Aplicativos Web I
Propriedades de um DataColumn
DataType16
4
DataTypeRepresenta o tipo da coluna(string,int). MaxLength
Representa o máximo de caracteres permitidos. Unique
Indica se a coluna poderá ter valores duplicados. AllowDbNull
Desenvolvimento de Aplicativos Web I
Propriedades de um DataColumn
Caption16
5
Caption Nome da coluna. ExpressionRepresenta uma expressão para uma coluna do tipo
calculada.
Desenvolvimento de Aplicativos Web I
Propriedades de um DataColumn
AutoIncrement16
6
AutoIncrementIndica se a coluna irá ter um autoincremento para as
novas linhas adicionadas no DataTable .
AutoIncrementSeed
Representa o valor inicial para a coluna com
autoincremento.
AutoIncrementStep
Representa o número pelo qual o valor da coluna é
Desenvolvimento de Aplicativos Web I
Propriedades de um DataColumn
ColumnName16
7
ColumnNameRepresenta o nome da coluna . DefaultValue
Representa o valor padrão para a coluna ao ser
adicionada numa linha.
ReadOnly
Indica se a coluna permite alterações ao ser adicionada
Desenvolvimento de Aplicativos Web I
Propriedades de um DataColumnCollection
Count16
8
CountDesenvolvimento de Aplicativos Web I
Métodos de um DataColumnCollection
Add16
9
AddInclui uma coluna na coleção de colunas de um
DataTable.
Clear
Exclui as colunas de um DataTable. Contains
Verifica se já existe uma coluna com um específico
nome.
Remove
Desenvolvimento de Aplicativos Web I
Criando um DataColumn.
17
0
Desenvolvimento de Aplicativos Web I
Criando um DataColumn.
17
1
Desenvolvimento de Aplicativos Web I
Definindo colunas como chaves primárias
Uma chave primária poderá ser composta por uma ou mais
17
2
Uma chave primária poderá ser composta por uma ou mais
colunas de um DataTable.
A chave primária irá representar uma identidade única para