Академический Документы
Профессиональный Документы
Культура Документы
Fase 2
PATROCINADORES
O que CLR?
O Common Language Runtime (CLR) o componente encarregado de gerenciar aplicaes desenvolvidas em .NET. O compilador de cada linguagem segue uma srie de especificaes, conhecidas como Common Language Infrastructure (CLI). Estas especificaes so abertas (ECMA-335, ISO/IEC 23271), assim permitem a interoperabilidade entre outras linguagens e plataformas.
Ex. A Novell desenvolveu o Mono, um CLR que opera em Linux, BSD, UNIX, Mac OS X e Solaris.
Processo de compilao
Compilao
CdigoFonte Compilador de Linguagem
Execuo
Cdigo Nativo Compilador JIT
Processo de compilao
Cdigo Fonte VB C# C++ Compilador Cdigo Gerenciado Compilador Compilador
Componente No-Gerenciado
Assembly - Cdigo IL
Unmanaged
Cdigo Fonte Compilador Cdigo de Mquina (Binrio) NO requer o ambiente CLR para executar
Linguagens .NET
Microsoft Visual Basic Microsoft C# Microsoft C++ (Gerenciado/No-Gerenciado) Outras: http://www.dotnetlanguages.net http://www.dotnetpowered.com
INTRODUO AO ASP.NET
O que ASP.NET?
ASP = Active Server Pages ASP.Net um framework para criao de aplicativos Web dinmicos e interativos sobre o CLR (Common Language Runtime) do .Net
O que ASP.NET?
Envolve vrias tecnologias para solues de sistemas na web:
ASP.NET Web Forms ASP.NET Web Forms com AJAX ASP.NET Web Forms com Silverlight ASP.NET MVC
Arquitetura de sites Model-View-Controller Separao entre processamento e renderizao Navegao controlada atravs de arquivo de configurao
ASP.NET
Tecnologia mais evoluda e mais flexvel, sucessora do Active Server Pages (ASP) O processamento dos formulrios web (Web Forms) so feitos do lado do servidor (Serverside) Independente de linguagem Possui grande facilidade para interagir com Web Services Independente de browser (o .NET Framework reconhece a verso do browser e envia o cdigo html e script correspondente)
ASP.NET
O ASP.NET pode ser utilizado com qualquer linguagem suportada pelo CLR. Permite separao entre cdigo e o design da pgina. Prov, alm de muitas outras funcionalidades, facilidade de gerenciamento de persistncia de estado no lado cliente (view state) e no lado servidor (session).
ASP.NET Vantagens
Permite criao de Web Forms, Mobile Web Forms e Web Services. ASP.NET parte do .NET Framework. Mltiplas linguagens e programao orientada a objetos:
C#,VB.Net, C++.Net, etc.
Separao de Cdigo e Interface. Proteo de Cdigo Fonte. Mantm automaticamente o estado da pgina. Suporte MultiBrowser. Simples Validao dos Forms. Para grande parte das aplicaes no necessrio conhecer HTML e JavaScript.
MeuWebForm
Bem-vindo! Nome: Senha:
OK
OK
Componente Visual
Envia Resposta
VISUAL STUDIO
O que posso fazer com o Visual Studio? Desenvolver Web Sites e Aplicaes Web com ASP.NET,
AJAX.NET e Silverlight. Impressionar com mdia e grficos desenvolvidos com o Windows Presentation Foundation. Desenvolver aplicativos que estendem funes do Office. Desenvolver aplicaes para Windows Phone. Desenvolver solues de integrao coorporativa com Windows Communication Foundation e o Windows Workflow Foundation. e muito mais...
Demonstrao
Templates
Design
Codificao
Web Application
Acesso via menu File->New->Project... Contedo do projeto deve ser explicitamente adicionado Site compilado em um nico assembly
LGICA DE PROGRAMAO
Tipos de Dados
byte sbyte int uint long ulong short ushort decimal double float bool char string Inteiro de 8 bits sem sinal Inteiro de 8 bits com sinal Inteiro de 32 bits com sinal Inteiro de 32 bits sem sinal Inteiro de 64 bits com sinal Inteiro de 64 bits sem sinal Inteiro de 16 bits com sinal Inteiro de 16 bits sem sinal Ponto flutuante decimal de 128 bits. Este tipo tem uma preciso de 28 casas decimais. Ponto flutuante preciso dupla de 64 bits. Este tipo tem uma preciso de 15 casas decimais. Ponto flutuante preciso simples de 32 bits. Este tipo tem uma preciso de 7 casas decimais. Tipo de dados booleano. Pode ser apenas true ou false. Um nico caractere unicode de 16 bits. Texto em Unicode com at 1 gigabyte.
19
500.00
brasileiro 0
Contm uma referncia a um ponteiro na memria Heap. STACK Pode ser nulo Nome #XXXX ... Exemplo:
Array String Instncias de classes
HEAP
... Nome
Texto
Boxing e unboxing
int i = 123; object O; O = i; string S; S = O.ToString() int x; x = (int) O; Stack i 123 O x 123 // Tipo por valor // Tipo por referncia // Causa boxing // Chamada mtodo // Faz unboxing Heap
123
Boxing e unboxing
int i = 123; object O; O = i; string S; S = O.ToString(); int x; x = (int) O;
STACK
// Tipo por valor // Causa boxing // Tipo por referncia // Chamada mtodo // Faz unboxing
HEAP ... S
123
x
S O i
123
...
123
O ...
123
...
Operadores
Aritmticos Atribuio Concatenao Criao de Objetos Igualdade e Diferena Incremento e Decremento Lgicos e Bit a bit Primrios Relacionais +, -, *, /, % =, +=, -=, *=, /=, <<=, >>=, &=, ^=, |= + new ==, != ++, - &&, ||, !, &, |, ^, ~ typeof, sizeof, checked, unchecked <, >, <=, >=, is
Estruturas de repetio
for
Estrutura de repetio composta por trs expresses:
Inicializao. Condio de parada. Atualizao.
for (int i = 0; i < 10; i++) { Response.Write(i); Response.Write("<br />"); }
Estruturas de repetio
while
Estrutura de repetio que realiza as operaes indicadas enquanto a condio especificada for verdadeira.
int i = 0; while(i < 10) { Response.Write(i); Response.Write("<br />"); i++; }
Estruturas de repetio
do ... while
Estrutura de repetio semelhante anterior, porm as condies so verificadas ao final da execuo. As operaes especificadas so executadas pelo menos uma vez. Necessita do caractere ; ao final da estrutura.
int i = 0; do { Response.Write(i); Response.Write("<br />"); i++; } while (i < 10);
Converso de tipos
// Exemplo I string s = "123"; int i = s; Response.Write(i); // Exemplo IV string s = "valor"; int i = Convert.ToInt32(s); Response.Write(i);
// Exemplo V string s = "valor"; int i = 0; if (int.TryParse(s, out i)) { Response.Write(i); } else { Response.Write("invlido"); }
LABORATRIO 01
Array
Array um tipo que permite o armazenamento de uma coleo de valores de um mesmo tipo. Arrays so indexados a partir de zero (0). No podem ter seu tamanho alterado depois de instanciados.
Array
Para declarar um Array, basta adicionar um par de colchetes logo aps a declarao do tipo dos elementos individuais
int[] meuVetorDeInteiros; string[] meuVetorDeStrings;
Array
Instanciando arrays
int[] codigos = new int[5]; string[] nomes = new string[100]; object[] produtos = new object[50]; int[] pedidos = {1, 4, 6, 8, 10, 68, 90, 98, 182, 500};
Array
Preenchendo um array
nomes[0] = "Jos"; nomes[1] = "Joo";
Array
Arrays podem ser:
Unidimensionais Bidimensionais Jagged
Array
Unidimensionais
int[] codigos = new int[5]; codigos[0] = 1; int[] codigos = {1,3,6,7,8};
Array
Bidimensionais
int[,] codigos = new int[2,2]; codigos[0,0] = 11;
Array
Jagged
int[][] codigos = new int[2][]; codigos[0] = new int[2]; codigos[0][0] = 11; int[][] codigos = { new int[]{11,42}, new int[]{35,44} };
Estruturas de repetio
foreach
Esta estrutura de repetio uma variao do for. Especifica uma varivel auxiliar e a coleo ou array cujos elementos sero percorridos.
int[] i = { 1, 3, 5, 7, 9 }; foreach (int j in i) { Response.Write(j); Response.Write("<br />"); }
Enumeraes
Definindo tipos enumerados
// Declarando enum DiasUteis { Segunda, Terca, Quarta, Quinta, Sexta } ... // Instanciando DiasUteis du = DiasUteis.Sexta; // Imprime "Sexta" Response.Write(du);
Namespaces
Declarando um namespace
namespace Cadastro { public class Cliente {} }
Namespaces em cadeia
namespace Cadastro.Telas { public class TelaCliente {} }
Instruo Using
using using using using System; System.Data; Cadastro.Telas; Pessoa = Cadastro.Cliente;
Comentrios e regies
Criando comentrios e regies:
// Comentrio de uma linha /* Comentrio com mais de uma linha */ /// <summary> /// Documentao XML /// </summary> private int Atributo; #region Regio private int Atributo1; private int Atributo2; #endregion
LABORATRIO 02
Classes
Uma classe uma fbrica para produzir objetos Determina um conjunto de objetos com:
propriedades semelhantes comportamentos semelhantes relacionamentos comuns com outros objetos
Classes
Membros das classes
Constantes, atributos, mtodos, propriedades, indexadores, eventos, operadores, construtores, destrutores Membros de instncia e de classe Tipos aninhados
Modificadores de acesso
Modificadores de acesso so utilizados para definir nveis de acesso a membros das classes
Declarao
public private internal protected protected internal Acesso ilimitado Acesso limitado classe e seus membros Acesso limitado ao programa (assembly) Acesso limitado classe, seus membros e a tipos derivados da mesma Acesso limitado classe, classes derivadas ou membros deste programa (assembly)
Definio
Instncias
Objetos so gerados a partir de classes Uma classe define as propriedades e o comportamento dos objetos gerados por ela Todo objeto uma instncia de uma classe
Classes - Atributos
Definindo uma classe e seus atributos
public class Cliente { private string nome; private decimal limiteCredito; private uint clienteID; }
Classes - Mtodos
Mtodos representam as operaes associadas classe
public void AumentarLimite(decimal val) { limiteCredito += val; }
Chamando um mtodo
proximoCliente.AumentarLimite(100M);
Os parmetros de um mtodo podem receber um modificador que indica a direo do fluxo de dados
Entrada Sada Entrada/sada
[nenhum] out ref params
Se no existe modificador, assume que parmetro de entrada passado por valor. Parmetro de sada. Seu valor ser atribudo pelo prprio mtodo, no necessitando de inicializao prvia. Parmetro de entrada/sada. Seu valor pode ser atribudo antes da chamada do mtodo ou sofrer alterao pelo mtodo. Permite receber um nmero varivel de parmetros atravs de um array.
Classes - Mtodos
Classes - Mtodos
Parmetro de sada
public void Adicionar(int x, int y, out int r) {} Adicionar(1, 2, out resultado);
Classes - Propriedades
Propriedades so mtodos que protegem o acesso aos membros da classe
public string Nome { get { return nome; } set { nome = value; } }
Acessando propriedades
proximoCliente.Nome = "Microsoft";
Classes - Propriedades
Get e Set auto-implementados:
public string Nome { get;set; }
Acessando propriedades
proximoCliente.Nome = "Microsoft";
Classes - Construtores
Construtores so mtodos especiais que implementam as aes necessrias para inicializar um objeto
Tem o mesmo nome da classe No possuem tipo de retorno (nem void) Parmetros so opcionais
Classes - Sobrecarga
Chama-se de sobrecarga de mtodos (overloading) o ato de criar diversos mtodos com o mesmo nome que se diferenciam pela lista de argumentos (parmetros) Mtodos com mesmo nome, mas com tipo, quantidade ou ordenao de parmetros diferentes, so considerados mtodos diferentes
Classes - Sobrecarga
Exemplo: sobrecarga de construtor
public class Data { private int dia, mes, ano; public Data(int d, int m, int a) { dia = d; mes = m; ano = a; } public Data(Data d) : this(d.dia, d.mes, d.ano){ } }
LABORATRIO 03
Herana
Herana uma relao de especializao entre classes A idia central de herana que novas classes so criadas a partir de classes j existentes
Subclasse herda de uma Superclasse Subclasse mais especfica que a Superclasse
Herana
Para definir a herana de classes em C# utilizase um : seguido do nome da superclasse C# suporta herana simples de classes
public class Classe : SuperClasse { }
Herana
Ao definir os construtores de uma subclasse:
O construtor deve obrigatoriamente chamar o construtor da classe base para inicializar os atributos herdados Caso um construtor no referencie o construtor da classe base, C# automaticamente referencia o construtor vazio da classe base O construtor pode referenciar explicitamente um construtor da classe base via a palavra-chave base aps a assinatura do construtor da subclasse e da marca :
Sobrescrita de mtodos
Uma subclasse pode sobrescrever (do ingls override) mtodos da superclasse
Sobrescrita permite completar ou modificar um comportamento herdado Quando um mtodo referenciado em uma subclasse, a verso escrita para a subclasse utilizada, ao invs do mtodo na superclasse Em C#, um mtodo que sobrescreve um mtodo herdado marcado pela palavra-chave override
Sobrescrita de mtodos
Um mtodo de uma classe, que pode ser sobrescrito em uma subclasse, deve ser marcado pela palavra-chave virtual O mtodo herdado pode ser referenciado atravs da construo base.nome_mtodo
public class SuperClasse { public virtual void Metodo(){} } public class Classe : SuperClasse { public override void Metodo() {} }
Polimorfismo
Polimorfismo a capacidade de assumir formas diferentes C# permite a utilizao de variveis polimrficas
Uma mesma varivel permite referncia a objetos de tipos diferentes Os tipos permitidos so de uma determinada classe e todas as suas subclasses
Polimorfismo
Uma varivel do tipo da superclasse pode armazenar uma referncia da prpria superclasse ou de qualquer uma de suas subclasses
public class Classe : SuperClasse { } SuperClasse obj; obj = new Classe();
Operadores de polimorfismo
IS e AS
if (computador is Produto) { // aes }
Polimorfismo
Em C# podemos utilizar mtodos polimrficos
Uma mesma operao pode ser definida em diversas classes de uma hierarquia.
cada classe oferece sua prpria implementao utilizando o mecanismo de sobrescrita de mtodos
Classes abstratas
Em uma hierarquia de classe, quanto mais alta a classe, mais abstrata sua definio
Uma classe no topo da hierarquia pode definir apenas o comportamento e atributos que so comuns a todas as classes Em alguns casos, a classe nem precisa ser instanciada diretamente e cumpre apenas o papel de ser um repositrio de comportamentos e atributos em comum
Classes abstratas
Marca-se a classe com a palavra-chave abstract
public abstract class Funcionario() { public abstract decimal CalcularSalario(); public abstract string Codigo {get; set;} }
Herana palavras-chave
ABSTRACT OVERRIDE
Indica uma classe, mtodo ou propriedade que no admite instncias diretamente. Indica uma redefinio em uma classe derivada. Indica um elemento da classe base que pode ser redefinido. Indica um elemento da prpria classe. Indica um elemento da classe base. Indica uma classe que no admite derivadas.
VIRTUAL
THIS BASE SEALED
Modificadores de classes
Public: permite que a classe seja acessada por qualquer assembly. Sealed: no permite que a classe seja herdada. Partial: permite que a classe tenha seu escopo dividido em dois arquivos. Static: especifica que a classe somente tem membros estticos. No pode ser instanciada. Abstract: define moldes para classes filhas. No pode ser instanciada.
Modificadores de membros
Public: permite que os membros das classes sejam acessados por qualquer outro escopo. Private: acesso restrito ao escopo da classe. Protected: acesso restrito a classe e as derivadas. Internal: permite acesso somente por classes do mesmo assembly. Static: permite acesso, sem necessidade do objeto ser instanciado. Abstract: so mtodos de classes Abstract que no possuem implementao. Virtual: permite que os mtodos sejam sobrescritos por classes filhas. Readonly: limita acesso a somente leitura aos atributos da classe.
LABORATRIO 04
Interfaces
Interfaces podem ser utilizadas para separar a especificao do comportamento de um objeto de sua implementao concreta Dessa forma a interface age como um contrato, o qual define explicitamente quais mtodos uma classe deve obrigatoriamente implementar
Por exemplo, suponha a necessidade de implementao da estrutura de dados Pilha
Toda pilha deve possuir as operaes empilha(), desempilha(), estaVazia() Mas a pilha pode ser implementada com array, lista encadeada, etc
Interfaces
Existem dois motivos bsicos para fazer uso de interfaces:
Uma interface como um contrato que determina o que deve fazer parte de suas classes derivadas; Bibliotecas padronizadas de interfaces uniformizam a construo de projetos.
Uma interface informa apenas quais so o nome, tipo de retorno e os parmetros dos mtodos.
A forma como os mtodos so implementados no preocupao da interface. A interface representa o modo como voc quer que um objeto seja usado.
Interfaces
Declarando interfaces:
Uma interface declarada de forma semelhante a uma classe Utiliza-se a palavra-chave interface ao invs de class Em C#, interfaces podem conter mtodos, propriedades, indexadores e eventos No possvel fornecer modificadores para os membros da interface
So implicitamente pblicos e abstratos
Interfaces
Restries importantes:
Uma interface no permite a presena de atributos Uma interface no permite construtores
No possvel instanciar uma interface
No possvel fornecer modificadores para os membros da interface No possvel aninhar declarao de tipos dentro de uma interface Interfaces somente podem herdar de outras interfaces
Interfaces
Declarando uma interface:
interface IPilha { void Empilhar(object obj); object Desempilhar(); object Topo{get;} }
Interfaces
Implementando interfaces:
Como interfaces so compostas de mtodos abstratos, esses mtodos devero ser implementados por alguma classe concreta Logo, dizemos que uma interface implementada por uma classe Utiliza-se a mesma notao de herana A classe dever implementar todos os mtodos listados na interface
A implementao deve ser pblica, no esttica e possuir a mesma assinatura
Interfaces
Implementando uma interface:
public class PilhaArray : IPilha { private object[] elementos; public void Empilhar(object obj){...} public object Desempilhar(){...} public object Topo{ get {...} } ... }
Interfaces
Implementao explcita de interfaces:
Se uma classe implementa duas interfaces que contm um membro com a mesma assinatura, a mesma implementao ser utilizada para as duas interfaces
Esta caracterstica pode tornar o cdigo inconsistente
C# permite implementar explicitamente um mtodo de uma interface agregando o nome da interface antes do nome do mtodo
Como consequncia, os mtodos somente podero ser chamados via uma varivel do tipo da interface adequada
Interfaces
Implementando explicitamente uma interface:
interface IUmaInterface { void metodo(); } interface IOutraInterface { void metodo(); } public class MinhaClasse : IUmaInterface, IOutraInterface { public void IUmaInterface.metodo(){...} public void IOutraInterface.metodo(){...} }
Polimorfismo
Quando declaramos uma varivel como sendo do tipo de uma interface, essa varivel ir aceitar qualquer objeto de uma classe que implemente essa interface Dessa maneira, temos acessos aos mtodos definidos na interface de forma independente do tipo de objeto que estamos utilizando
Polimorfismo
interface IMinhaInterface { } public class Classe : IMinhaInterface { } MinhaInterface obj; obj = new Classe();
LABORATRIO 05
Interfaces do Framework
No ambiente .NET temos uma grande quantidade de interfaces pr-definidas. Por exemplo:
IComparable e IComparer para a ordenao de objetos. IEnumerable e IEnumerator para implementar a operao foreach. ICloneable para permitir a criao de cpia de objetos IFormattable para definir cadeias de caracteres formatadas. IDataErrorInfo para associar mensagens de erros a uma classe.
Interfaces do Framework
IComparable:
Interface para comparao de valores segundo alguma ordem parcial Define o mtodo CompareTo() que deve retornar um valor inteiro com o resultado da comparao
Menor que zero se a instncia atual menor que o valor do parmetro Zero se a instncia atual igual ao valor do parmetro Maior que zero se a instncia atual maior que o valor do parmetro
Interfaces do Framework
IComparer:
Permite diferentes algoritmos de comparao de valores Define o mtodo Compare() que recebe dois objetos e deve retornar um valor inteiro com o resultado da comparao
Menor que zero se o primeiro objeto for menor que o segundo objeto, de acordo com o algoritmo implementado Zero se os objetos forem iguais Maior que zero se o primeiro objeto for maior que o segundo objeto
LABORATRIO 06
Estruturas
Estruturas so tipos por valor, que podem conter:
Um construtor Constantes Atributos Mtodos Propriedades
Uso recomendado para representar objetos leves e/ou que eventualmente podem constituir arrays de grande dimenso. No podem ser herdados, porem podem implementar Interfaces.
Estruturas
Exemplo de uma estrutura:
struct Circulo { private int _raio; // Atributo public double Circunferencia // Propriedade { get { return 2 * _raio * Math.PI; } } // Regra especfica para retornar um valor. public Circulo(int raio) // Construtor com um argumento { this._raio = raio; } // Atribuio do valor do argumento } // para o atributo do objeto. // Instancia de uma estrutura. Circulo meuCirculo = new Circulo(10); // Imprime o valor de uma propriedade Response.Write(meuCirculo.Circunferencia); }
Estruturas
Exemplo de sobrecarga de mtodos:
... Dentro da mesma estrutura do exemplo anterior:
public void DiminuirRaio(){ if (_raio > 1) _raio--; } // Mtodo simples sem argumentos
public void DiminuirRaio(int valor){// Overload do mtodo anterior if (_raio - valor > 1) // com um argumento _raio -= valor; }
COLEES
Colees
Uma ferramenta bsica que deve estar presente na caixa de ferramenta de qualquer desenvolvedor So classes usadas para agrupar e gerenciar objetos relacionados e que permitem armazenar, buscar e interagir com estes objetos As Collections possuem mais funcionalidades do que um array, facilitando sua utilizao
Colees
O namespace System.Collections contm diversos tipos de collections. Estas collections so responsveis por agrupar e organizar grandes quantidades de dados
Nome Descrio
ArrayList
SortedList Queue
Stack
...
Tipos genricos
Genricos so construes do sistema de tipos do .NET Framework que permitem a construo de novos tipos com flexibilidade de tipagem Introduzem o conceito de tipos parametrizados
Tipos genricos
Pode ser aplicado em:
Classes Interfaces Mtodos Structs Delegates
Tipos genricos
Vantagens:
Diminui a necessidade do uso de sobrecarga Permitem criar estruturas de dados sem se restringir a um tipo especfico
o exemplo de uso mais utilizado Evita erros de converso em tempo de run-time de e para Object
Maior desempenho
Evita boxing / unboxing
Colees genricas
Disponibilizadas no namespace System.Collections.Generic
o tipo de colees mais recomendado
Principais colees:
List, LinkedList, SortedList Dictionary, SortedDictionary KeyedCollection Queue Stack
Colees genricas
System.Collections System.Collections.Generics
ArrayList
Queue Stack Hashtable SortedList ListDictionary HybridDictionary OrderedDictionary SortedDictionary NameValueCollection
List<>
Queue<> Stack<> Dictionary<> SortedList<> Dictionary<> Dictionary<> Dictionary<> SortedDictionary<> Dictionary<>
Colees genricas
System.Collections StringCollection StringDictionary System.Collections.Generics List<String> Dictionary<String>
N/A
LinkedList<>
Todas as classes apresentadas acima possuem funcionalidades e mtodos semelhantes a sua correspondente no namespace System.Collections, exceto a classe LinkedList<>, que exclusiva do namespace System.Collections.Generic.
List
List uma coleo sem tamanho fixo, no ordenada e que aumenta conforme a necessidade do programador possvel criar Lists capazes de armazenar qualquer tipo de dados: int, string, ou at objetos de classes que voc mesmo tenha construdo
List
Criar um List muito simples. Ele instanciado como um objeto qualquer, mas deve-se declarar o tipo a ser utilizado:
List<int> lista = new List<int>();
List
Exemplos:
Add():
List<int> list = new List<int>(); list.Add(12); list.Add(32); list.Add(50); list.Add(teste); // Erro! Tipo invlido
AddRange():
int[] outralista = new int[] {1, 2, 3, 4}; list.AddRange(outralista);
Mtodo Add()
list
List<int> list = new List<int>(); list.Add(12); list.Add(32); list.Add(25); list.AddRange(new int[]{2, 4, 6});
Mtodo Add()
list
12
List<int> list = new List<int>(); list.Add(12); list.Add(32); list.Add(25); list.AddRange(new int[]{2, 4, 6});
Mtodo Add()
list
12
32
List<int> list = new List<int>(); list.Add(12); list.Add(32); list.Add(25); list.AddRange(new int[]{2, 4, 6});
Mtodo Add()
list
12
32
25
List<int> list = new List<int>(); list.Add(12); list.Add(32); list.Add(25); list.AddRange(new int[]{2, 4, 6});
Mtodo AddRange()
list
12
32
25
4 6
List<int> list = new List<int>(); list.Add(12); list.Add(32); list.Add(25); list.AddRange(new int[]{2, 4, 6});
List
Os mtodos Add() e AddRange() adicionam itens na ltima posio do List Para adicionar um ou vrios objetos em uma posio especfica do List utilize o mtodo Insert Para adicionar para vrios itens utilize InsertRange
List
Exemplos:
Insert():
List<int> list = new List<int>(); list.Insert(0,12); list.Insert(1,32); list.Insert(1,50); list.Insert(3,44);
InsertRange():
int[] outralist = new int[] {2, 4, 6}; list.InsertRange(2,outralist);
Mtodo Insert()
list
12
32
list.Insert(0, 12); list.Insert(1, 32); list.Insert(1, 50); list.Insert(3, 44); list.Insert(10,100); // Funciona ?
Mtodo Insert()
list
12
50 32
// Funciona ?
Mtodo Insert()
list
12
50 32
44
// Funciona ?
Mtodo Insert()
list
12
50 32
// Funciona ?
44
List
Ou utilize a maneira mais simples, via indexadores:
List<int> list = new List<int>(); list[3] = 17;
Para a remoo de itens existem trs mtodos, o Remove(int item), o RemoveAt(int index) e o RemoveRange(int ini, int fim).
List
Existem ainda outros mtodos que podem ser teis:
IndexOf(object item), que retorna o ndice do objeto passado como parmetro; Contains(object item), que verifica se o objeto existe na lista. Se existir, retorna True; Clear(), que apaga todos os itens da lista; Sort(), que ordena a lista; Count(), que retorna o nmero de itens na lista.
Dictionary<K, V>
Semelhante a List<T>, porem permite o uso de uma chave K de um tipo predefinido, para referenciar um valor do tipo V.
Dictionary<string, string> dic = new Dictionary<string, string>(); //Instancia um dicionrio string-string dic.Add(Name, Nome); dic.Add(Day, Dia); dic.Remove(Day); Response.Write(dic[Name]);
LABORATRIO 07
Servidor Web
Internet
Navegador Cliente
Introduo
HTML foi originalmente desenvolvido por Tim Berners-Lee no CERN e popularizado pelo navegador NCSA Mosaic na dcada de 1990 HTML 2.0 especificado em 1994 HTML 3.0 especificado em 1995 HTML 3.2 especificado em 1997 HTML 4.0 especificado em 1998 HTML 4.01 especificado em 1999 HTML 5 em processo de especificao
html
Nasceu com a finalidade de estabelecer uma forma simples para publicar sites na internet. Significa de forma literal, linguagem de marcao de hipertexto.
Hypertext Markup Language
html
Documentos so compostos de elementos Um elemento consiste:
Marcao (tag) de abertura Contedo Marcao de fechamento
html
Uma marcao de abertura consiste:
Sinal < Nome da marcao
Atributos opcionais
<html>
<td rowspan=3>
</html>
html
Alguns elementos so vazios
No possuem contedo
Sinal />
Um atributo consiste:
Nome do atributo Sinal = Valor do atributo entre aspas
html
Um documento HTML composto de 3 partes:
Uma linha contendo o tipo do documento Uma seo declarativa de cabealho
Elemento HEAD
html
A estrutura bsica de um documento HTML apresenta as seguintes marcaes:
<!DOCTYPE html> <html> <head> Marcaes que definem informaes sobre o documento <title>Ttulo</title> </head> <body> Marcaes que definem o contedo do documento </body> </html>
html
Um comentrio no processado pelo navegador <!-- Comentrio --> Um comentrios consiste
Smbolo <!- Contedo
Pode ser de mltiplas linhas No pode conter --
Smbolo -->
Pargrafo:
Elemento P Representa um pargrafo de texto com uma linha em branco aps seu fechamento No pode conter elementos de marcao de blocos (como P) aninhados
<li>Nvel 1</li> <li>Nvel 1 <ul> <li>Nvel 2</li> <li>Nvel 2</li> </ul> </li> <li>Nvel 1</li>
</ul>
Comportamento padro de um hiperlink a recuperao do recurso Web destino Hiperlinks no podem ser aninhados
Elemento A define uma ncora fonte Atributo href especifica o endereo da ncora destino via uma referncia para o identificador do fragmento <a name="destino1">Outro pargrafo de texto.</a> <p> Isso um <a href="links2.html#destino1">link</a> para um pedao de outro documento. </p>
Elemento TD
Define uma clula que possui informao de dados
O conjunto de clulas da linha define o nmero de colunas da tabela <table summary="um exemplo de tabela simples com linhas e colunas"> <caption>Tabela bsica</caption> <tr><th>Ano</th><th>Vendas</th></tr> <tr><td>2008</td><td>1,1m</td></tr> <tr><td>2009</td><td>1,9m</td></tr> </table>
Elemento IMG
Atributo src especifica o endereo URI da imagem Atributo alt especifica uma descrio textual alternativa para a imagem (acessibilidade!)
<img alt="Uma imagem" src="image1.png" height="500" width="870">
Formulrios
Formulrios representam fragmentos de documentos que contm elementos de interao com o usurio chamados de controles Representam pontos de entrada de dados a serem enviados para processamento em um servidor
Formulrios
Formulrio:
Elemento FORM Atua como um continer para os controles Especifica
A entidade que ir receber os dados do formulrio atravs do atributo action O mtodo (get ou post) pelo qual os dados sero enviados ao servidor atravs do atributo method O formato de codificao dos dados enviados ao servidor atravs do atributo enctype
application/x-www-form-urlencoded o valor padro
Formulrios
Controles:
HTML define vrios controles: botes de ao, botes de seleo, botes de rdio, caixas de seleo, caixas de texto, seleo de arquivos, controles escondidos, objetos Controles possuem um valor inicial (que nunca muda) e um valor atual (que muda de acordo com a interao do usurio e scripts)
Formulrios
Caixas de texto:
Dois tipos
Elemento para entradas de linha nica Elemento para entradas de mltiplas linhas
Formulrios
Caixas de texto simples:
Elemento INPUT com atributo type text Elemento INPUT com atributo type password
Texto renderizado com os caracteres obfuscados
Atributo size especifica o nmero de caracteres do tamanho do controle Atributo value especifica o valor inicial do controle Atributo maxlenght especifica o nmero mximo de caracteres que pode ser fornecido para o controle
<input name="texto" id="texto" type="text">
Formulrios
Caixas de texto mltiplo:
Elemento TEXTAREA Contedo do elemento define o valor inicial Atributo cols especifica a quantidade de caracteres na horizontal Atributo rows especifica o nmero de linhas
<textarea rows="5" cols="30"> Valor inicial </textarea>
Formulrios
Caixas de seleo:
Elemento SELECT Fornecem um meio se selecionar valores dentro de um conjunto de opes Atributo size especifica o nmero de linhas de opes que mostrado pelo navegador
Navegador usualmente escolhe o tipo de elemento visual que ser mostrado em funo deste nmero
Ex.: lista de seleo ou menu drop-down
Formulrios
Caixas de seleo:
Elemento OPTION especifica as opes que podem ser selecionadas Contedo do elemento especifica o texto que apresentado como opo de seleo Atributo label especifica um valor a ser utiliza como texto de apresentao ao invs do contedo do elemento Atributo value especifica o valor inicial do elemento, se no utiliza o valor do contedo Atributo selected especifica que a opo est pr-selecionada
Deve existir pelo menos uma opo pr-selecionada para evitar erros
Botes de seleo:
Formulrios
Elemento INPUT com atributo type checkbox Representa controles de seleo binria (ligado ou desligado) Atributo value especifica o valor inicial do controle (obrigatrio) Atributo checked especifica se o controle est ligado ou desligado Botes de seleo so agrupados pelo valor do atributo id
Permite que mltiplos botes estejam ligados <input name="cidade" type="checkbox" value="1">Porto Alegre <input name="cidade" type="checkbox" value="2">Florianpolis <input name="cidade" type="checkbox" value="3">Curitiba
Formulrios
Botes de rdio:
Elemento INPUT com atributo type radio Representa controles de seleo binria (ligado ou desligado) Atributo value especifica o valor inicial do controle (obrigatrio) Atributo checked especifica se o controle est ligado ou desligado
Deve existir um dos botes ligado para evitar erros
Formulrios
Dados escondidos:
Elemento INPUT com atributo type hidden No representa um controle que visual Utilizado para armazenar dados que so submetidos junto ao formulrio como uma forma de implementao de mecanismo de seo Atributo value especifica o valor inicial do controle
<input type="hidden" value="Este texto escondido!">
Formulrios
Botes de ao:
Trs tipos de botes
Boto de submisso (submit) enviar dados do formulrios para o servidor Boto de reset (reset) restaurar os valores inicias dos controles do formulrio Boto de presso (push) sem ao padro, com scripts associados a seus eventos
Formulrios
Botes de submisso:
Elemento INPUT com atributo type submit Atributo value especifica o rtulo do boto Elemento BUTTON com atributo type submit Permite que o rtulo do boto seja definido pelo contedo do elemento
Por exemplo, pode-se utilizar uma imagem como contedo
Formulrios
Botes de reset:
Elemento INPUT com atributo type reset Atributo value especifica o rtulo do boto Elemento BUTTON com atributo type reset Permite que o rtulo do boto seja definido pelo contedo do elemento
Por exemplo, pode-se utilizar uma imagem como contedo
Formulrios
Botes de presso:
Elemento INPUT com atributo type button Atributo value especifica o rtulo do boto Elemento BUTTON com atributo type button Permite que o rtulo do boto seja definido pelo contedo do elemento
Por exemplo, pode-se utilizar uma imagem como contedo
Links teis
Maiores informaes sobre HTML e suas tags:
http://www.w3.org/ http://www.w3schools.com/html/ http://www.w3schools.com/tags/
javascript
JavaScript
Uma linguagem de script interpretada Orientada a objetos (baseada em prottipos) Dinmica Fracamente tipada
Navegadores suportam scripts que rodam cdigo no lado-cliente JavaScript o nome comum de verses da linguagem, que foi padronizada como ECMAScript
Baseadas na verso padronizada, mas com funcionalidades adicionais
javascript
JavaScript possui mltiplas verses, suportadas ou no pelos diversos navegadores Verso padro:
ECMAScript 262 5th Edition
Outras verses:
Microsoft JScript 5.8 (Internet Explorer 8) Microsoft JScript 9 (Internet Explorer 9)
javascript
JavaScript no documento:
Cdigo inline
<script type="text-javascript"> Cdigo </script>
javascript
Elemento SCRIPT:
Pode aparecer mltiplas vezes dentro dos elementos HEAD e BODY
No HEAD usualmente colocam-se funes No BODY usualmente colocam-se cdigo e chamada a funes que geram contedo dinamicamente
O script pode ser definido dentro do contedo do elemento ou atravs de referncia via atributo src A linguagem de script definida via atributo type
Elemento NOSCRIPT:
Deve ser avaliado no caso de scripts no suportados ou desabilitado no navegador Contedo do elemento utilizado ao invs do elemento SCRIPT
javascript
Exemplo:
<!DOCTYPE html > <html> <head> <title>Ttulo</title> </head> <body> <script type="text/javascript"> document.write("<p>Al Mundo!</p>"); </script> <noscript> <p>Por favor, habilite o JavaScript em seu navegador.</p> </noscript> </body> </html>
javascript
Para escrever cdigo que se comunica com os elementos dos navegadores, JavaScript faz uso de diversas APIs
Algumas padronizadas pelo W3C
DOM Document Object Model
Permite manipular elementos, contedos e estilos de documentos
XMLHttpRequest
Permite adicionar contedo adicional sem a necessidade de carregar um novo documento Elemento bsico para o AJAX
javascript
Exemplo:
<html> <head> <script language="javascript"> function Carregar() { document.getElementById("texto").innerHTML = "Pronto..."; } </script> </head> <body> <a href="#" onclick="Carregar()">Prxima pgina</a> <div id="texto"></div> </body> </html>
Links teis
Maiores informaes sobre JavaScript:
http://www.ecmainternational.org/publications/standards/Ecma262.htm http://www.w3schools.com/js/
Web.config
Arquivo no formato XML Informaes de configurao da sua aplicao, tais como string de conexo a fontes de dados, pginas de erro, modo de compilao, etc. Armazenar valores e parmetros que sejam comuns a toda nossa aplicao.
Ciclo de Vida
Uma pgina Web Forms passa por um ciclo de vida completo no servidor Web depois do pedido inicial do cliente (roundtrips) Ciclo disparado no modelo request/response do protocolo HTTP
requisio resposta
Ciclo de Vida
O ciclo de vida inclui diversos passos de processamento
Relacionados pgina Relacionados aplicao Web
Ciclo de Vida
O ciclo de vida de uma pgina ASP.NET apresenta cinco estgios bsicos:
Page_Init
Page_Unload
Page_Load
Event Handling
Validation
Ciclo de Vida
Fases gerais no ciclo de vida de uma pgina:
Requisio da pgina (request) Incio (start) propriedades bsicas da pgina so criadas Inicializao (initialization) criao dos controles da pgina Carregamento (load) dados dos controles so atualizados no caso de um postback Validao (validation) mtodo de validao executado sobre os controles de validao Tratamento de eventos de postback (event handling) execuo de mtodos de eventos associados no caso de um postback Renderizao (rendering) HTML de resposta gerado Descarregamento (unload) realizada a limpeza dos objetos utilizados
Controles
ASP.Net fornece componentes para a construo de interfaces com o usurio em Web Forms
Caracterstica
Eventos no servidor
Server Controls
Possibilidade de eventos especficos no servidor Mantido atravs dos roundtrips Detecta o browser e adapta-se Caractersticas do .NET Framework
HTML Controls
Apenas postback
Gerncia de Estado
No mantm estado
Adaptao
Sem adaptao
Propriedades
Controles
Controles
Para adicionar um controle Server Control
Arraste o controle desejado da aba Standard da Toolbox
Controles
Alguns controles bsicos:
Button: Boto clicvel TextBox: Caixa para digitao de texto CheckBox: Caixa para selecionar ou no um item Label: Texto que no pode ser editado diretamente ListBox: Lista para escolha de uma ou mais opes RadioButton: Caixa para selecionar ou no um item.
Controles - Bsicos
Label
Representa um componente de texto que pode ser alterado programaticamente Para texto esttico, utilizar HTML diretamente Para alterar o texto apresentado:
Propriedade Text
Button
Representa um controle de boto que ao ser clicado executa uma submisso (um postback) de um formulrio para o servidor Outros estilos de botes incluem os componentes LinkButton e ImageButton
Controles - ListBox
Permite a seleo de um ou vrios elementos de uma lista Dados armazenados na coleo Items
Qualquer tipo de objetos Usualmente strings
Controles - ListBox
Para configurar o modo de seleo:
Propriedade SelectionMode
Single para um nico valor Multiple para mltiplos valores
Propriedades SelectedItem para obter o item selecionado Propriedade SelectedValue para obter o valor associado ao elemento selecionado Para mltiplos valores, percorrer a coleo Items e verificar a propriedade Selected de cada item em particular
Controles - ListBox
Para configurar os dados visveis/retornados em objetos com DataSource:
Propriedade DataValueField especifica o nome do valor do elemento da fonte de dados Propriedade DataTextField especifica o nome do dado visual do elemento da fonte de dados
Controles - DropDownList
Semelhante ao ListBox porm os elementos ficam escondidos at a seleo e somente um deles pode ser selecionado
Controles - CheckBox
Permite indicar um elemento com a informao de aceitao/rejeio Para obter a seleo do usurio:
Propriedade Checked retorna true ou false dependendo se o item est marcado ou no
Controle CheckBoxList gerencia uma coleo de itens mostrados em diversas caixas de seleo
Controles - RadioButton
Permite a seleo de um nico elemento dentre vrias opes
O grupo de botes deve estar configurado com o mesmo nome na propriedade GroupName para que a seleo seja exclusiva
Controle RadioButtonList gerencia uma coleo de itens mostrados em diversos botes de seleo
Controles - Outros
Gridview tabela para exibio de dados de fcil preenchimento e integrao com banco de dados, com controle de paginao e ordenao automticos e suporte a templates
Controles - Outros
DataList: Mecanismo parecido com o GridView, porm, com menos recursos Repeater: Mecanismo parecido com o GridView, porm mais flexvel e leve
Controles - Outros
Wizard permite criar um formulrio passo a passo.
Controles - Outros
SiteMap permite criar um menu de navegao baseado na pgina que o usurio est acessando.
Controles - Outros
Menu permite criar um menu com links de maneira esttica ou dinmica. Pode utilizar o mesmo arquivo XML do SiteMap.
Eventos
Muitos eventos so disparados atravs de aes de usurios captadas pelo navegador O cdigo para manipular o evento disparado executado no servidor Quando o cdigo completa sua execuo, a pgina web pronta enviada de volta ao navegador (contendo cdigo html e script)
Partial Types
Permite dividir a implementao de um determinado tipo em diversos arquivos. Disponvel para classes, estruturas e interfaces. Definidos pela palavra-chave partial.
Partial Types
Quando podem ser utilizados:
Quando trabalhamos com cdigo gerado automaticamente, cdigo pode ser adicionado classe sem ter que recriar o arquivo fonte. Partial Types permitem que dois ou mais desenvolvedores trabalhem no mesmo tipo, enquanto ambos tm seus arquivos checados para edio, sem interferir um no outro.
LABORATRIO 08
Customizao de Layout
ASP.NET fornece o conceito de master pages e content pages para a definio de layouts de pginas em uma aplicao web Permite
a criao de sites cujo layout consistente entre as diversas pginas a reutilizao de contedo e funcionalidades
Customizao de Layout
Uma master page define a aparncia e comportamento que so compartilhados por um grupo de pginas Um conjunto de content pages possuem o contedo das pginas que referenciam a master page para produzir o resultado final da combinao dos elementos
Master Page
Vantagens:
Criar uma Herana Visual para o Web Site Manuteno centralizada, no necessrio mudar o cdigo em vrias pginas, apenas em uma Facilidade na criao do layout Reaproveitamento de cdigo
Master Page
So arquivos ASP.NET com a extenso .master Contm HTML, controles, cdigo, etc No representam uma pgina completa, mas elementos que so incorporados em outros web forms em tempo de execuo Possuem a diretiva @Master ao invs da diretiva @Page
Diretiva @Master
Master Page
<%@ Master Language="C#"%> <%@ Master Language="C#" CodeFile="PaginaMestre.master.cs" AutoEventWireup="false" Inherits="PaginaMestre" %>
Controle ContentPlaceHolder
Prov a localizao onde os contedos das content pages sero includos A master page pode conter diversos desses controles
Master Page
Content Page
So pginas web que referenciam uma master page Possuem contedos prprios que sero mesclados com a master page
Content Page
Diretiva @Page
Inclui o atributo MasterPageFile para referenciar a master page
<%@ Page Language="C#" MasterPageFile="~/PaginaMestre.master"%>
Controle Content
Contm o contedo especfico da pgina a ser mesclado com a master page So mapeados para os componentes ContentPlaceHolder da master page
Atributo ContentPlaceHolderID deve indicar o ID do ContentPlaceHolder
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent"> ... </asp:Content>
Content Page
Demonstrao
Tailspin Spyworks http://www.asp.net/webforms/samples/tailspin-spyworks
LABORATRIO 09
Ok Bemvindo.aspx
Web Server
Ok Bemvindo.aspx
Web Server
Ol
Esqueci quem voc !!!
Ol John Doe
Database Usa o suporte de um banco de dados para manter estado do Web site
Session
Uma das formas mais simples de manuteno de estado atravs de variveis de sesso Por padro, estas informaes esto armazenadas no prprio processo do ASP.NET possvel armazenar informaes de sesso em um processo separado (um servidor de estado) ou at mesmo em um Sistema Gerenciador de Banco de Dados
Session
Uma varivel de sesso est associada exclusivamente a uma nica sesso. Isto significa que um dado armazenado em uma varivel de sesso com nome X para o usurio Joo no ser visvel na varivel de sesso de mesmo nome do usurio Pedro, e vice-versa.
Session[X"] = S2B;
string nome = (string)Session[X"];
Application
Varivel de estado da aplicao Visvel em toda aplicao para TODOS usurios Exemplos de uso:
Chat Contador de Acessos
Exemplo:
Application[ContadorAcessos] = 0;
ViewState
Mantm automaticamente os valores de controles de servidor entre um postback e outro
Internamente funciona como um campo oculto (hidden) um pouco mais sofisticado
ViewState
Uma pgina ASP.NET possui um campo oculto para o armazenamento do ViewState:
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/wEPDwUJNzgzNDMwNTMzZGS8mO25pQR00V4slvgSxG3dEvK+hA== />
ViewState
Pode-se ainda adicionar manualmente valores a um ViewState, lembrando que voc vai conseguir recuper-los apenas na mesma pgina
ViewState.Add("Nome, Bill); String nome = (string) ViewState[Nome];
Cookie
Trata-se de um pequeno arquivo de texto que armazenado na mquina do usurio Usado, por exemplo, em sites de comrcio eletrnico, para exibir as preferncias e caractersticas do usurio Pode identificar o usurio mesmo dias depois de seu acesso a pgina O grande problema dos cookies que o usurio simplesmente pode desabilitar este recurso em seu navegador
Cookie
Escrevendo um Cookie
//Cria um novo cookie, passando o nome no construtor HttpCookie cookie = new HttpCookie(Nome); //Determina o valor o cookie cookie.Value = Mrcio; //Configura o cookie para expirar em 1 minuto DateTime dtNow = DateTime.Now; TimeSpan tsMinute = new TimeSpan(0, 0, 1, 0); cookie.Expires = dtNow + tsMinute; //Adiciona o cookie Response.Cookies.Add(cookie);
Cookie
Lendo um Cookie
//Pega o nome do que cookie que o usurio informou String strCookieName = NameField.Text; //Captura o cookie HttpCookie cookie = Request.Cookies[strCookieName];
LABORATRIO 10
LABORATRIO 11
User Controls
Controle web criado por um usurio. Possui extenso .ascx Herda de System.Web.UI.UserControl Simplificam a reusabilidade de cdigo e componentes de interface com o usurio dentro de uma aplicao Web Contm HTML, mas no as tags <HTML>,<BODY> ou <FORM> Contm cdigo para gerenciar seus prprios eventos Podem agregar vrios controles em um componente reusvel
User Controls
Control1.ascx
Aplicao A
Aplicao B
Page3.aspx
Page1.aspx
Page2.aspx
User Controls
Exemplo de User Control
Eventos e Delegates
Conceitos:
Evento: ao que pode ser gerenciada/manipulada atravs de cdigo Delegate: membro da classe responsvel por delegar as aes correspondentes a ocorrncia de um evento ao(s) manipulador(es) de eventos correspondentes Manipulador de Evento: mtodo responsvel pela execuo de aes em reao a ocorrncia de um evento
Eventos e Delegates
Cinco passos para se trabalhar com eventos
Passo 1: declarar o delegate contendo a assinatura do manipulador de evento correspondente ao evento
public delegate void FazAlgoDelegate(int x);
Eventos e Delegates
Passo 3: disparar o evento na chamada de algum mtodo da classe
public class UmaClasse { ... public void MetodoEvento(int x) { UmEvento(x); } }
Passo 4: assinar o evento indicando o manipulador de eventos do mesmo atravs de uma instncia de delegate
UmaClasse obj = new UmaClasse(); obj.UmEvento += new FazAlgoDelegate(ManipuladorEvento);
Eventos e Delegates
Passo 5: implementar o manipulador de evento (deve respeitar a mesma assinatura definida pelo delegate do evento)
public void ManipuladorEvento(int x) { label1.Text = x.ToString(); }
LABORATRIO 12
AJAX
HTML + JavaScript
Melhora Navegao Facilita a Personalizao
HTML
Grande Alcance
renda/usurio
Aplicao Web
Esttica Lenta Fcil Implementao Sempre Atualizada Roda no Servidor
Experincia do Usurio
A web hoje dinmica? O mesmo contedo apresentado a todos os usurios Aplicaes Web ainda perdem de aplicaes Desktop Alternativas
Java Applets Silverlight Macromedia Flash
AJAX
AJAX Conceitos
AJAX = Asynchronous Javascript And XML. um conjunto de recursos e tecnologias, presentes h algum tempo, nas linguagens e navegadores atuais. AJAX no tecnologia. um conjunto de tcnicas que tem como objetivo promover uma melhor e mais rica experincia de uso. AJAX faz uso das caractersticas da linguagem JavaScript, da portabilidade e flexibilidade do padro XML e dos recursos de chamada assncronas que foram implementadas nos navegadores.
XmlHttpRequest
Objeto que a linguagem JavaScript implementa e est presente nos navegadores Tem a capacidade de executar a leitura remota de dados de forma assncrona, permitindo assim a execuo de outras tarefas imediatamente aps a chamada Retorna dados em formato XML e texto PADRO RECONHECIDO PELO W3C! http://www.w3.org/TR/XMLHttpRequest/
ScriptManager
Disponvel em System.Web.Ui Gerencia elementos AJAX em uma pgina ASP.NET
Componentes e scripts Renderizao parcial de pginas Requisies do cliente Respostas do servidor
ScriptManager
Proriedades:
EnablePartialRendering deve possuir valor true (valor-padro) para habilitar renderizao parcial de pginas; altervel somente antes ou durante o evento Init da pgina SupportsPartialRendering deve possuir valor true para habilitar renderizao parcial de pginas; se no atribudo, o valor obtido atravs de consulta ao navegador
UpdatePanel
Disponvel em System.Web.UI Controle ASP.NET AJAX que cria um painel atualizvel em uma pgina ASP.NET AJAX, permitindo postbacks baseados em XmlHttpRequest possvel colocar mltiplos componentes UpdatePanel em uma mesma pgina
UpdatePanel
<asp:UpdatePanel ID="UpdateMaster runat="server"> <ContentTemplate> <div> <asp:GridView ID="GridView1" runat="server" /> ... </asp:GridView> </div> </ContentTemplate> </asp:UpdatePanel>
UpdatePanel
Ciclo de vida de um postback utilizando o ASP.NET AJAX:
ASP.NET AJAX intercepta as aes de postback da pgina Usa XMLHttpRequest para disparar o postback ao servidor que ocorre normalmente Apenas os contedos dos UpdatePanel so retornados As regies alteradas no UpdatePanel so atualizadas no cliente Todos os postbacks gerados por controles dentro do UpdatePanel sero tratados como postback Ajax com atualizaes incrementais da pgina Postbacks para controles fora do UpdatePanel transcorrero da forma convencional por padro
UpdatePanel
UpdatePanel
Propriedades:
UpdateMode define quando realizado a atualizao do painel
Always sempre realiza atualizao a qualquer postback Conditional realiza atualizao quando um postback assncrono especfico ocorre
UpdatePanel
Por padro, todos os controles dentro de um UpdatePanel podem disparar eventos para o postback assncrono daquele UpdatePanel Controles fora de um UpdatePanel podem tambm disparar um postback assncrono em um UpdatePanel Adiciona-se Triggers em um UpdatePanel para permitir que outros controles disparem postback assncrono
<asp:UpdatePanel ID="UpdateMaster runat="server"> ... <Triggers> <asp:AsyncPostBackTrigger ControlID=Button1" EventName="Click" /> </Triggers> </asp:UpdatePanel>
UpdateProgress
Prov feedback no processo de atualizao durante um postback assncrono
<asp:UpdateProgress ID="UpdateProgress1" runat="server"> <ProgressTemplate> ... </ProgressTemplate> </asp:UpdateProgress>
UpdateProgress
Propriedades:
AssociatedUpdatePanelID referncia para o UpdatePanel cujo postback assncrono indica que o UpdateProgress deve ser mostrado; se o valor no for informado, ser associado, por padro, a qualquer postback assncrono da pgina DynamicLayout indica se o componente possui uma rea reservada (false)ou no (true) no design da pgina
LABORATRIO 13
Disponvel em:
http://ajax.codeplex.com/
Toolkit Controls
Accordion AlwaysVisibleControl Animation CascadingDropDown CollapsiblePanel ConfirmButton DragPanel DropDown DropShadow DynamicPopulate FilteredTextBox HoverMenu ModalPopup MutuallyExlcusiveCheckBox NoBot NumericUpDown PagingBulletedList PasswordStrength PopupControl Rating ReorderList ResizableControl RoundedCorners Slider TextBoxWatermark ToggleButton UpdatePanelAnimation ValidatorCallout
DEMONSTRAO
WEB SERVICES
Pr-Web Services
Disquete, Email, FTP ou Compartilhamento de Redes Comunicao Aplicativo X Aplicativo
Banco de Dados Arquivos (Ex: Texto, como CSV; ou em Protocolo Especfico) Invocao de Objetos Remotos (Ex: CORBA, DCOM, IIOP, ORB)
Linux
OS390
Infraestrutura
Web Services provm meios de objetos interagirem utilizando a Internet como meio de transmisso (middleware) Baseado em diversos protocolos padres:
Simple Object Access Protocol (SOAP) Universal Description, Discovery and Integration (UDDI) Web Services Description Language (WSDL)
O que o SOAP?
Simple Object Access Protocol Define como as mensagens podem ser trocadas entre dois sistemas Define uma estrutura XML de troca de mensagens que pode chamar e retornar resultados a partir de uma aplicao.
Vantagens do SOAP
Independente de plataforma Fcil de traduzir. (decodificar) Pode ser veiculado pela porta 80, sem a necessidade de abrir portas no firewall
Web Services
HTTP Message HTML HTTP Request GET- POST HTTP Message HTML
SOAP Message
SOAP Request
XML
Servidor Web
Rede
SOAP Request
Servidor Web
Rede
Web App
Rede
O que o WSDL?
WSDL Web Services Description Language Documento XML que define as interfaces de seu Web Service Mostra os mtodos e suas assinaturas
http://uddi.xml.org/
Funcionamento
Pesquisa o Servio
http://www.uddi.org URL de um documento DISCO ou WSDL
UDDI
Acha o Servio
Web Service
Conversando (SOAP)
http://yourservice.com/svc1 XML/SOAP
Tempo de Desenvolvimento
Tempo de Execuo
Requisitos - Desenvolvimento
Visual Studio.NET, Web Matrix,
IIS Servidor IDE ASP.Net .NET Framework
Mquina de Desenvolvimento
Cdigo
Servidor da
Aplicao
Requisitos - Produo
Cliente
Aplicao
asmx
SOAP (xml)
Servidor da
Aplicao
Declarar um objeto do tipo do web service Invocar os mtodos sobre o objeto remoto
Marcar os mtodo de acesso remoto via web service com o atributo [WebMethod]
LABORATRIO 14
Conceitos
Banco de Dados
uma coleo de dados inter-relacionados, representando informaes sobre um domnio especfico
Conceitos
Dado
Conjunto de smbolos arranjados a fim de representar a informao fora da mente humana.
Elementos de Dados
Subconjunto de smbolos que compem um dado com significado especfico, mas no representa a informao completa.
Banco de Dados
Tabelas
Objeto criado para armazenar os dados fisicamente Os dados so armazenados em linhas (registros) e colunas (campos)
Banco de Dados
Registros
So linhas de uma tabela Armazenam um conjunto de dados pr-definido pela tabela
Campos
So as colunas de uma tabela Possuem um tipo de dado definido Armazenam um dado
Chave Primria
Campo que permite a identificao nica de um registro em uma tabela
Chave Estrangeira
Campo que referencia uma Chave Primria de um outro registro
Banco de Dados
ndices
uma ferramenta usada pelo gerenciador de Banco de Dados para facilitar a busca de linhas dentro de uma tabela.
ndice nico
ndice criado a partir de uma coluna ou de um conjunto de colunas. No permite a incluso de linhas duplicadas.
ndice de Performance
Otimiza o processo de busca de linhas na tabela.
Banco de Dados
Exemplo:
PK
Um editora possui vrios livros Um livro de somente uma editora Um livro possui vrios autores Um autor possui vrios livros de sua autoria
Livro LivroAutor PK,FK1 PK,FK2 codLivro codAutor PK Autor codigo primeiroNome ultimoNome PK codigo titulo ano codEditora
FK1
SQL BSICO
Banco de Dados
CLIENTE PK CLI_COD CLI_NOME CLI_END CLI_CNPJ FK1 NOTA_FISCAL PK NF_NRO NF_DATA NF_CLI NF_CFOP CLI_COD
I1
FK1
Criar Tabelas
CREATE TABLE [cliente]( [cli_cod] [int] PRIMARY KEY IDENTITY(1,1), [cli_nome] [varchar](50) NOT NULL, [cli_end] [varchar](50) NULL, [cli_cnpj] [char](11) NOT NULL )
Inserir Registro
INSERT INTO [cliente] ([cli_nome],[cli_end],[cli_cnpj]) VALUES ('Bill Gates','Quinta Avenida','12345678900')
Se a tabela possui um campo identity, no permitido definir manualmente o valor para este campo Se um campo foi definido como NOT NULL ento necessrio especificar seu valor
Alterar Registro
UPDATE [cliente] SET [cli_end] = 'Sete de Setembro' WHERE [cli_cnpj] = '12345678900'
Ao atualizar um registro, especifique as colunas a serem alteradas A clusula WHERE opcional, se for omitida ento a atualizao ocorrer em todos os registros, seno ela ocorrer somente nos registros selecionados
Deletar Registro
DELETE FROM [cliente] WHERE [cli_cnpj] = '12345678900'
Selecionar Registros
Todas as colunas da tabela cliente
SELECT * FROM cliente
Selecionar Registros
INNER JOIN
Une o contedo de duas tabelas por meio de uma clusula de juno gerando um novo conjunto de dados. Retorna apenas os registros que atendam a clusula de juno.
Todos os clientes juntamente com suas notas fiscais
SELECT * FROM cliente INNER JOIN nota_fiscal ON cliente.cli_cod = nota_fiscal.cli_cod
Selecionar Registros
LEFT JOIN
Une o contedo de duas tabelas por meio de uma clusula de juno gerando um novo conjunto de dados. Retorna todos os registros da tabela da esquerda mesmo que no haja um registro que atenda a clusula de juno na tabela da direita.
Todos os produtos e as linhas das notas fiscais onde foram comprados, caso foram comprados
SELECT * FROM produto LEFT JOIN item_nf ON produto.prod_cod = item_nf.prod_cod
Logar
Operaes
New Database Attach
Attach
Tarefas
Detach Shrink Restore Import Export Copy
Operaes de Tabela
New Table Editar Design Open Table Script Table as
Configurao de Colunas
Diagramas
ADO.NET
Acesso a Dados
.NET oferece alternativas de acesso aos dados de um banco de dados relacional:
Biblioteca de classes ADO.NET
Uma API de acesso e manipulao
TableAdapters
Camada de acesso a dados fornecida por geradores de cdigo do Visual Studio
Entity Framework
Framework para mapeamento objeto/relacional
LINQ
Linguagem de acesso e manipulao de alto nvel embutida
Acesso a Dados
O que ADO.NET
ADO.NET compreende:
Um conjunto de classes, interfaces, estruturas e enumeraes que gerenciam acesso a dados de dentro do .NET Framework Um modelo de programao projetado para ambientes desconectados Um modelo de programao com avanado suporte a XML
DataTableCollection TableAdapter
SelectCommand InsertCommand
DataTable
DataRowCollection DataColumnCollection
Command
Parameters
ConstraintCollection
UpdateCommand DeleteCommand
DataReader
DataRelationCollection
Providers
Conjunto de classes especializadas que implementam a interface de acesso ao dados; Existe por padro no Framework, providers especficos para cada tipo de banco de dados;
SQL Provider: acesso banco de dados do SQL Server OleDB Provider: acesso banco de dados com driver OleDB ODBC Provider: acesso banco de dados com driver ODBC
DataAdapter
DataReader
Connection String
uma string esttica, de somente leitura, responsvel por informar o nome do servidor, nome do banco de dados, usurio e senha para acessar a base de dados utilizada pela aplicao.
Objeto Connection
Utilizado para fazer a conexo com o banco de dados; Existe um para cada tipo de provider; Permite o pooling de conexes; A conexo feita atravs de uma string de conexo.
SqlConnection cn = new SqlConnection(); cn.ConnectionString = "Data Source=localhost;" + "Integrated Security=SSPI;" + "Initial Catalog=Northwind";
Objeto Command
Utilizado para a execuo de comandos no banco de dados; Pode ser criado atravs de uma conexo:
SqlCommand cmd = cn.CreateCommand();
Objeto Command
Como existem diferentes tipos de comandos, existem tambm diferentes tipos de execuo:
ExecuteReader()
Retorna um objeto DataReader, com o resultado da consulta
ExecuteNonQuery()
No retorna nenhum tipo de dado, apenas o nmero de clulas afetadas
ExecuteScalar()
Retorna um nico valor (object) escalar
ExecuteXMLReader()
Retorna um XMLReader
Command-ExecuteNonQuery
responsvel pela execuo de comandos SQL para manipulao dos dados no banco de dados. So comandos como DELETE e UPDATE que no retornam nenhum resultado de SELECT e no utilizam nenhum parmetro de sada. Possui duas definies:
Recebendo um CommandType (Text ou StoredProcedure), uma string com a instruo SQL (Query ou nome do procedimento) e um vetor de parmetros SQL Ou recebendo, alm destes parmetros, uma transao SQL. A transao utilizada para garantir a atomicidade de vrios comandos, ou seja, fazer com que um conjunto de comandos sejam executados ou descartados totalmente
Command-ExecuteNonQuery
Exemplo de uso :
SqlConnection cnn = new SqlConnection( "Data Source=localhost;" + "Initial Catalog=Videos;Integrated Security=True"); SqlCommand cmd = new SqlCommand("UPDATE titulos SET Nome = 'Sem Nome' WHERE Nome = ''", cnn); cnn.Open(); int qtidade =cmd.ExecuteNonQuery(); Console.WriteLine(qtidade + " linhas foram afetadas."); cnn.Close();
Command-ExecuteScalar
Exemplo de uso :
SqlConnection cnn = new SqlConnection( "Data Source=localhost;" + "Initial Catalog=Videos;Integrated Security=True"); SqlCommand cmd = new SqlCommand("SELECT COUNT(*) FROM titulos", cnn); cnn.Open(); object qtidade = cmd.ExecuteScalar(); Console.WriteLine("Existem " + (int)qtidade + " ttulos"); cnn.Close();
Objeto DataReader
Utilizado para leitura de dados Existe um para cada tipo de provider Vantagens:
Velocidade Usado para leitura de grandes quantidades de dados
Desvantagens:
No permite a modificao dos dados lidos Permite somente leitura sequencial
Command-ExecuteReader
Ele utilizado para retornar um DataReader para a classe. Uma particularidade deste mtodo que, devido ao fato de trabalhar conectado ao banco de dados, no podemos fechar a conexo. Para que a conexo no fique aberta aps a leitura, utilizada a clusula CommandBehavior.CloseConnection.
Objeto DataReader
Inicia sempre na posio BOF (Begin Of File); Para ler o contedo de um campo especfico utilize:
SqlDataReader dr = cmd.ExecuteReader(); string str = dr["NomeDoCampo"];
Objeto DataReader
Exemplo de uso (1):
SqlConnection cn = new SqlConnection( "Data Source=localhost;" + "Initial Catalog=Northwind;Integrated Security=True"); SqlCommand cmd = new SqlCommand("select * from Customers", cn); cn.Open(); SqlDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { comboBox1.Add(dr["CompanyName"]); } dr.Close(); cn.Close();
Objeto DataReader
Exemplo de uso (2):
SqlConnection cn = new SqlConnection( "Data Source=localhost;" + "Initial Catalog=Northwind;Integrated Security=True"); SqlCommand cmd = new SqlCommand("select * from Customers", cn); cn.Open(); DataTable dt = new DataTable(); dt.Load(cmd.ExecuteReader()); cn.Close();
Objeto DataAdapter
Responsvel pela comunicao entre um objeto DataSet e o banco de dados; Especfico para cada tipo de provider; Agrega objetos do tipo Command, facilitando a insero, atualizao e remoo de registros no banco de dados; Possui mtodos especficos para popular e atualizar um DataSet.
Objeto DataAdapter
Exemplo de uso :
SqlConnection cnn = new SqlConnection("Data Source=localhost;" + "Initial Catalog=Videos;Integrated Security=True"); SqlCommand cmd = new SqlCommand("SELECT * FROM titulos", cnn);
CommandBuilder
Permite a criao automtica de objetos do tipo Command, atravs de um DataAdapter; Pode ser utilizado somente quando os dados a serem modificados no so resultados de consultas mais complexas, utilizando clusulas como por exemplo, Join; Ao ser chamado, o CommandBuilder:
Conecta-se base de dados e obtm o esquema da tabela; Prepara os comandos correspondentes, usando a lista de campos obtida; Instancia objetos Parameter, de acordo com o tipo de cada campo.
CommandBuilder
Exemplo de uso (1):
SqlConnection cn = new SqlConnection("Data Source=localhost;" + "Integrated Security=SSPI;" + "Initial Catalog=Northwind");
SqlCommand cmd = new SqlCommand("SELECT * FROM Customers", cn);
CommandBuilder
Exemplo de uso (2):
SqlConnection cn = new SqlConnection("Data Source=localhost;" + "Integrated Security=SSPI;" + "Initial Catalog=Northwind"); SqlCommand cmd = new SqlCommand("SELECT * FROM Customers", cn); SqlDataAdapter da = new SqlDataAdapter(cmd); SqlCommandBuilder cb = new SqlCommandBuilder(da); cb.DataAdapter.Update(ds.Tables["Clientes"]);
cn.Close();
Objeto DataSet
Utilizado para acesso em geral a um banco de dados; Independente de provider; Trabalha desconectado do banco de dados; Os dados so armazenados dentro de uma coleo de objetos DataTable; Mantm os relacionamentos existentes no banco de dados, entre os DataTables.
Objeto DataSet
DataSets armazenam dados de forma semelhante a um modelo de banco de dados relacional So constitudos de colees de tabelas (Tables) e relacionamentos (Relations) Tabelas (Tables) contm colees de colunas (Columns), restries (Constraints) and registros (Rows) Implementa interface IListSource para utilizao com componentes visuais
DataSet Tables Table Columns Column Constraints
Constraint
Rows Row Relations Relation
Object Collection
Objeto DataSet
Preenchimento de um DataSet:
SqlDataAdapter da; da = new SqlDataAdapter("SELECT * FROM Clientes"); DataSet ds = new DataSet("Clientes"); da.Fill(ds, "Clientes");
Objeto DataSet
Exemplo de uso:
SqlConnection cn = new SqlConnection("Data Source=localhost;" + "Integrated Security=SSPI;" + "Initial Catalog=Northwind"); SqlCommand cmd = new SqlCommand("SELECT * FROM Customers", cn); SqlDataAdapter da = new SqlDataAdapter(cmd); DataSet ds = new DataSet("Customers"); da.Fill(ds, "Customers"); foreach (DataRow dr in ds.Tables["Customers"].Rows){ Console.WriteLine("{0}:{1}", dr[0], dr["ContactName"]); }
Objeto DataTable
Representa uma tabela do banco de dados; Incorporado ao DataSet, mas ainda um objeto independente; Podem ter restries, como chave primrias; Podem se relacionar entre si, da mesma maneira que no banco de dados; Possui mtodo para executar filtragens e ordenaes; Para isso utiliza comandos SQL, que seriam utilizados nas clusulas Select e Order By.
Objeto DataTable
Filtragem
DataRow[] rows; rows = ds.Tables["Customers"].Select("CustomerID LIKE 'A%'");
Ordenao
DataRow[] rows; rows = ds.Tables["Clientes"].Select("Country = 'Brazil'", "CustomerName DESC");
LABORATRIO 01
Fontes de Dados
Representam os dados disponveis para um aplicativo Podem ser associados a controles visuais ASP.NET provs trs principais controles:
SqlDataSource para acesso a bancos de dados relacionais XmlDataSource para acesso a dados em XML ObjectDataSource para acesso a dados provenientes de objetos de negcio
Controles adicionais:
EntityDataSource LinqDataSource
dsCliente.Tables["Clientes"].Rows[0]["ClienteID"];
Tipados
Dados expostos como tipos especficos Conhecido em tempo de Early bound
dsClientes.Clientes[0].ClienteID; compilao
Vinculao de Dados
chamado de data binding Entende-se como a associao de uma fonte de dados com um componente visual de interface grfica Dois tipos bsicos de vinculao:
Simples permite que se anexe uma propriedade de um controle/formulrio a um nico valor na fonte de dados
TextBox, Label, etc
Vinculao de Dados
Utiliza controles para gerar HTML ao invs de codific-lo manualmente Principais controles relacionados a dados:
DataGrid (ASP.NET 1.0/1.1) GridView (ASP.NET 2.0 em diante) DetailsView FormView ListView
Vinculao de Dados
Grid View
Dados em tabela Suporta ordenao e paginao Permite operaes CRUD
Details View
Muito utilizado em conjunto com GridView Prov uma visualizao de uma linha da tabela
Form View
Similar ao DetailsView exceto que baseado em templates ao invs de um estilo de grid no layout
Vinculao de Dados
Propriedade
DataSource DataMember
Descrio
O DataSet que possui os dados O DataTable no DataSet
DataTextField DataValueField
A coluna no DataTable que ser apresentada A coluna no DataTable que representa o valor selecionado no controle
LABORATRIO 02
LABORATRIO 03
SEGURANA
Autenticao e Autorizao
Autenticao refere-se ao processo de obteno da credencial do usurio e verificao de sua validade Autorizao refere-se ao processo de liberao de acesso a determinados recursos protegidos
Segurana
Arquitetura
Os clientes se comunicam com o ASP.NET atravs do IIS
Internet Information Services
Segurana no IIS
Autenticao no IIS uma camada prvia autenticao no ASP.NET! Mecanismos de autenticao do IIS:
Anonymous
Solicitaes so automaticamente autenticadas
Basic
Credenciais so transmitidas de forma textual simples pela rede
Digest
Credenciais so transformadas via hash para serem transmitidas
Integrated Windows
Credenciais so transformadas de modo semelhante ao login do Windows em um Active Directory
Segurana no IIS
Segurana no ASP.NET
Segurana no ASP.NET
Recursos para trabalhar com Autenticao e Autorizao O Website Administration Tool permite configurar preferncias de segurana
Arquivo web.config contm as configuraes
Segurana no ASP.NET
Autenticao
o processo para obter credenciais de identificao e valid-las O ASP.NET implementa autenticao atravs de AuthenticationProviders Esto disponveis duas formas principais de autenticao:
Forms Authentication Windows Authentication
Autenticao windows
Caractersticas:
Utiliza o IIS para autenticar o usurio O IIS prov vrios mecanismos para autenticar o usurio Utiliza WindowsAuthenticationModule Utiliza as credenciais capturadas pelo IIS para construir um objeto WindowsIdentity WindowsIdentity representa o usurio do Windows o padro do ASP.NET nos projetos recm criados
Autenticao Forms
Autenticao via uma pgina de login Caractersticas:
Captura requisies no autenticadas e redireciona para uma pgina de autenticao Permite fazer autenticao usando um formulrio criado pelo desenvolvedor Participa do ciclo de vida da pgina atravs de FormAuthenticationModule Utiliza a classe FormsAuthentication
Autenticao Forms
Funcionamento (padro):
Na requisio de uma pgina, o ASP.NET procura pela existncia de um determinado cookie Se o cookie est presente, a requisio completada Se o cookie no est presente, o ASP.NET redireciona a requisio a um web form de entrada de dados de login O web form contm a lgica de autenticao e informa ao ASP.NET se o usurio foi autenticado para que o cookie seja criado e a pgina original de requisio retornada
Autenticao Forms
1 2
IIS
No autenticado
Autenticado Autorizado
Acesso negado
Autenticao Forms
Passos:
Configurar autenticao do IIS: Anonymous Configurar Web.config Configurar autorizao Criar pgina de login Arquivo ou base de dados para armazenar usurio e senha Cdigo pra autenticar usurios
Autenticao Forms
Configurao via arquivo Web.config Exemplo:
<configuration> <system.web> <authentication mode="Forms"> <forms loginURL="PaginaLogin.aspx"/> </authentication> ... </system.web> </configuration>
Autenticao Forms
Pgina de Login
Deve possuir o nome indicado no arquivo web.config Lgica de autenticao faz uso da classe System.Web.Security.FormsAuthentication
Mtodo RedirectFromLoginPage(string,bool)
redireciona um usurio autenticado para a pgina de requisio original string identifica o usurio e o valor booleano indica se o cookie de autenticao persistente entre vrias sesses
Mtodo Authenticate(string,string)
realiza a autenticao do usurio/senha caso os valores estejam armazenados no Web.config ou no sistema de membership do ASP.NET
Autenticao Forms
Pgina de Logoff
Faz uso da classe System.Web.Security.FormsAuthentication
Mtodo SignOut() remove o token de autenticao
Autorizao
Configurao via arquivo Web.config
Marcao <authorization>
com base na identificao de usurio
<allow users="..."> para permitir acesso <deny users="..."> para negar acesso
Usurios
Nome do usurio no domnio * para todos os usurios ? para usurios annimos
Autorizao
Exemplo:
<authorization> <allow users="CI"/> <deny users="?"/> </authorization>
LABORATRIO 04
Sistema de Membership
ASP.NET Membership uma API para validar e gerenciar informaes dos usurios possvel usar o Membership integrado com FormsAuthentication ou com controles de login do ASP.NET Alguns recuros fornecidos pelo Membership:
Criar novos usurios e senhas Armazenar informaes dos usurios (logins, senhas e informaes adicionais) Autenticar usurios que esto entrando no site Gerenciar senhas(criar, alterar e excluir)
Sistema de Membership
Membership Gerenciamento e Configurao
Pode ser configurado pelo Web.config ou pelo WebSite Administration Tool Alguns itens que podem ser configurados
Qual Membership Provider usar Opes de encriptao de senhas Usurios e senhas
Sistema de Membership
Membership Provider
Usando um provider a aplicao fica independente de onde os dados so armazenados O ASP.NET vem com dois providers implementados: SQL Server Provider e Windows Active Directory Provider possvel implementar providers customizados No caso do SQL Server Provider padro deve-se configurar a base de dados atravs do aplicativo aspnet_regsql
Sistema de Membership
Controle CreateUserWizard Login LoginStatus LoginView Descrio Coletar dados do usurio e criar uma nova conta Controle composto para pgina de login Fornece link de loginf ou logout em funo do status do usurio Permite filtragem de contedo em funo do status do usurio (se autenticado ou annimo)
PasswordRecovery
ChangePassword
LABORATRIO 05
Engenharia de Software
A Engenharia de software trata da aplicao de uma abordagem quantificvel, disciplinada e sistemtica no desenvolvimento, operao e manuteno de software (SWEBOK, 2004). Seus principais desafios so:
elaborar e cumprir prazos e oramentos entregar produtos de alta qualidade que atendam as necessidades dos usurios.
Um mtodo apresenta um forma de aplicar ferramentas, de maneira disciplinada, para realizar uma atividade.
Ex. A programao com ASP.NET apresenta mtodos prprios.
Um processo um conjunto de atividades e suas dependncias que coordena o trabalho da equipe de maneira eficiente e previsvel.
Ex. O Microsoft Solutions Framework (MSF) descreve processos para o desenvolvimento de solues na plataforma Microsoft.
Oferece um guia para a gerncia (governncia) e outro para a equipe de desenvolvimento. Organiza o projeto em fases e define ciclos e iteraes para o desenvolvimento.
Ciclos e Iteraes