Sie sind auf Seite 1von 395

Students to Business 2011/2

Fase 2

rea de Desenvolvimento de Sistemas

PATROCINADORES

INTRODUO AO .NET FRAMEWORK E CLR

O que o .NET Framework?


O .NET Framework um modelo de programao de cdigo gerenciado da Microsoft para criar aplicativos em clientes, servidores e dispositivos mveis ou incorporados ao Windows. Conjunto rico de bibliotecas com os mais variados usos; Controle de verso: fim do DLL Hell; Facilidade de desenvolvimento de aplicaes desde as mais simples at as mais complexas; Facilidade na instalao e na distribuio de aplicaes; Alta escalabilidade para ambientes de misso crtica; Interoperabilidade entre plataformas e componentes desenvolvidos em outras linguagens .NET; Sintonizado com as ltimas tecnologias; Orientado a objetos; Tecnologia baseada em mquina virtual;

O que posso fazer com o .NET?


O .NET permite desenvolver solues como:
Aplicativos Web Aplicativos para Servidores Aplicativos para Windows Phone Aplicativos de Console Aplicativos de Banco de Dados Servios Windows Web Services e muito mais

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.

Servios presentes no CLR


Gerenciamento de memria Tratamento de excees Compilao Segurana Outros

Processo de compilao
Compilao
CdigoFonte Compilador de Linguagem

Cdigo MSIL Metadados

Execuo
Cdigo Nativo Compilador JIT

Antes da instalao ou a primeira vez que cada mtodo chamado

Processo de compilao
Cdigo Fonte VB C# C++ Compilador Cdigo Gerenciado Compilador Compilador

Componente No-Gerenciado

Assembly - Cdigo IL

Common Language Runtime (CLR) Compilador JIT

Cdigo Nativo Servios do Sistema Operacional

Cdigo managed X unmanaged


Managed
Cdigo Fonte Compilador Cdigo Intermedirio (IL): .DLL ou .EXE Requer o ambiente CLR para executar Cdigo de Mquina (Binrio)

Unmanaged
Cdigo Fonte Compilador Cdigo de Mquina (Binrio) NO requer o ambiente CLR para executar

Cdigo managed X unmanaged

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 Web Pages


Nova sintaxe Razor Suportado pela ferramenta WebMatrix

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.

Com o Visual Studio.NET:


Ferramenta RAD para construo de aplicaes web. Suporte Debugging.

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.

Componentes de uma Pgina ASP.NET


Componente Visual
Viso de Design Viso de HTML

Lgica de interface de usurio


MeuWebForm.aspx.cs MeuWebForm.aspx
Class MeuWebForm

MeuWebForm
Bem-vindo! Nome: Senha:

Bem-Vindo! Nome: Senha:


Lgica de interface

OK

OK
Componente Visual

Ambos arquivos compem MeuWebForm

Cliente recebe pgina em HTML

Como funciona o ASP.NET?


Cliente inicia comunicao com o servidor

Envia Resposta

Processa Requisies do Cliente

Armazena Dados de Sesso

Executa Server-Side Code (ASP.NET)

Como implementar cdigo


Trs mtodos para adicionar cdigo:
Colocando cdigo no mesmo arquivo do contedo (misto) Colocando cdigo numa regio separada (code-block) no arquivo de contedo (cdigo inline) Colocando cdigo em um arquivo separado (codebehind pages)

Code-behind pages a opo padro no Visual Studio .NET


Utiliza o conceito de tipos parciais (partial types) Forma preferencial de programao

VISUAL STUDIO

O que o Visual Studio?


Um conjunto de ferramentas de desenvolvimento que permite aos desenvolvedores de software resolver problemas complexos e criar solues inovadoras. Baseia-se em trs pilares principais:
Desenvolvimento rpido de aplicativos Colaborao eficaz em equipe Experincias de usurio inovadoras

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

CRIANDO UMA SOLUO

Templates

Design

Codificao

ASP.NET no Visual Studio


Dois tipos de projetos:
Web Site
Acesso via menu File->New->Web Site... Contedo do projeto a estrutura dos diretrios com todos seus arquivos Site compilado em mltiplos assemblies

Web Application
Acesso via menu File->New->Project... Contedo do projeto deve ser explicitamente adicionado Site compilado em um nico assembly

ASP.NET no Visual Studio


Diretrios especiais:
App_Code cdigo das classes dos objetos utilizados pela aplicao Web que so compilados automaticamente em tempo de execuo App_Data armazenamento de arquivos de bases de dados Bin assenblies compilados de objetos utilizados pela aplicao Web App_WebReferences arquivos de configurao de referncias para Web Services

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.

Tipo por valor (value type)


Armazenado na memria Stack. Trabalha com dados diretamente. No pode ser nulo. STACK Exemplo: ...
Inteiros Decimais Booleanos Estruturas Enumeraes
idade salrio

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

Tipo por referncia (reference type)

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 controle de fluxo


if ... else
Comando condicional: executa um bloco de comandos se uma condio for verdadeira. A clusula else (condio falsa) opcional.
if (idade >= 18) { Response.Write("Autorizado."); Response.Write("Sua idade : " + idade); } else if (idade > 15 && idade < 18) { Response.Write("Somente com os pais."); Response.Write("Menor de 18 anos."); } else { Response.Write("No autorizado."); Response.Write("Menor de 15 anos."); }

Estruturas de controle de fluxo


switch case
Estrutura de deciso que seleciona um comando com base no valor de uma varivel. A clusula default opcional.
switch (sexo) { case "masculino": Response.Write("Homem"); break; case "feminino": Response.Write("Mulher"); break; default: Response.Write("No informado"); break; }

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 II string s = "123"; int i = Convert.ToInt32(s); Response.Write(i);

// Exemplo III string s = "123"; int i = int.Parse(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;

int[,] codigos = {{11,42},{35,44}};

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

ORIENTAO A OBJETO PARTE I

Conceitos de orientao a objeto

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; }

Instanciando uma classe


Cliente proximoCliente = new Cliente();

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);

Parmetro de entrada/sada Parmetros variveis


public void ParaMaiuscula(ref string s) {} ParaMaiuscula(ref frase);
public void MostrarLista(params int[] lista) {} int[] array = new int[3] {1,2,3}; MostrarLista(array); MostrarLista(1,2,3); MosttarLista(1,2,3,4,5);

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

public Cliente(string n, uint i) { nome = n; clienteID = i; }

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 origina uma estrutura em rvore

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 }

Produto produto = computador as Produto; if (produto != null) { Fornecedor fornecedor = produto.Fornecedor; }

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

possvel definir classes, mtodos e propriedades abstratas em C#

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

ORIENTAO A OBJETO PARTE II

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

Uma classe pode implementar diversas interfaces

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; }

... Dentro do evento Page_Load


meuCirculo.DiminuirRaio(); meuCirculo.DiminuirRaio(2); // Chamando o mtodo sem argumentos // Chamando o overload // do mtodo anterior

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

Uma simples coleo de objetos redimensionvel e baseada em index.


Uma coleo de pares nome/valor ordenada por chave. Uma coleo de objetos First-in, First-out.

Stack
...

Uma coleo de objetos Last-in, First-out.


...

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

Verifica o tipo em tempo de compilao

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>();

Existem duas maneiras de se adicionar itens em um List:


A primeira utilizando os mtodos Add, para adicionar apenas um valor, e AddRange, para adicionar vrios itens, que normalmente vm de um array ou de outra collection. A segunda adicionar diretamente em um determinada posio via os mtodos Insert e InsertRange.

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

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

44

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 ?

44

list.Insert(0, 12); list.Insert(1, 32); list.Insert(1, 50); list.Insert(3, 44); list.Insert(10,100);

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

DESENVOLVENDO PARA INTERNET PARTE I

Como funciona um web site?

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>

Sinal > Sinal </ Nome da marcao Sinal >

</html>

Uma marcao de fechamento consiste:

html
Alguns elementos so vazios
No possuem contedo

Um elemento vazio consiste:


Sinal < <br /> Nome da marcao
Atributos opcionais

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

Uma seo de corpo que define o contedo do documento


Elementos BODY ou FRAMESET

As sees de cabealho e corpo deve estar aninhadas dentro do elemento HTML

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 -->

Elementos Bsicos - Texto


Quebra de linha forada:
Elemento vazio BR

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

Elementos Bsicos - Listas


Elementos permitem a definio de
Listas ordenadas Listas sem ordem Listas de definio

Listas podem ser aninhadas

Elementos Bsicos - Listas


Listas ordenadas:
Elemento OL especifica a lista Elemento LI especifica um item da lista Navegadores usualmente numeram os itens da lista pela ordem de definio
<ol> <li>Item 1</li> <li>Item 2</li> <li>Item 3</li> </ol>

Elementos Bsicos - Listas


Listas sem ordem:
Elemento UL especifica a lista Elemento LI especifica um item da lista
<ul> <ul>

<li>Item 1</li> <li>Item 2</li> <li>Item 3</li>


</ul>

<li>Nvel 1</li> <li>Nvel 1 <ul> <li>Nvel 2</li> <li>Nvel 2</li> </ul> </li> <li>Nvel 1</li>
</ul>

Elementos Bsicos - Links


Um hiperlink permite a vinculao de um recurso Web fonte com um recurso Web destino Um hiperlink possui
Duas extremidades (fonte e destino), chamadas de ncoras Uma direo

Comportamento padro de um hiperlink a recuperao do recurso Web destino Hiperlinks no podem ser aninhados

Elementos Bsicos - Links


Links para recursos:
Para definir uma ncora fonte
Elemento A
Contedo define a posio da ncora Atributo href especifica o endereo da ncora destino via uma URI URIs que designam uma ncora possuem o caractere # seguido do nome/identificador da ncora

<p> Isso um <a href="links2.html">link</a> para um outro documento. </p>

Elementos Bsicos - Links


Links para elementos do documento:
Uma ncora de destino pode ser fragmentos do prprio documento onde est a ncora origem Para definir uma ncora de destino
Elemento A com atributo name e/ou id Qualquer elemento com atributo id

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>

Elementos Bsicos - Tabelas


Tabelas permitem organizar contedo em clulas por linhas e colunas Recomendao W3C:
No utilizar tabelas para realizar puramente o layout de documentos, para isso existem folhas de estilo

Elementos Bsicos - Tabelas


Tabela:
Elemento TABLE Contm todos os demais elementos da tabela Atributo summary especifica um resumo do propsito da tabela (acessibilidade!) Atributo witdth especifica a largura da tabela
Percentagem Pixel

Elementos Bsicos - Tabelas


Ttulo:
Elemento CAPTION Especifica o ttulo da tabela como seu contedo Deve aparecer como primeiro elemento aninhado ao elemento 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>

Elementos Bsicos - Tabelas


Linhas:
Elemento TR Atua como um continer para uma linha de clulas de uma 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>

Elementos Bsicos - Tabelas


Clulas:
Podem conter dois tipos de informao: cabealho e dados Podem ser vazias Elemento TH
Define uma clula que possui informao de cabealho

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>

Elementos Bsicos - Tabelas


Clulas expandidas:
Clulas podem se expandir por mltiplas linhas ou colunas Atributo rowspan especifica o nmero de linhas ocupada por uma clula Atributo colspan especifica o nmero de colunas ocupada por uma clula Cuidado para no definir clulas que se sobreponham!
<table summary="um exemplo de tabela simples com linhas e colunas expandidas"> <caption>Tabela expandida</caption> <tr><th colspan="2">Um cabealho expandido</th></tr> <tr><td>2008</td><td>1,1m</td></tr> <tr><td>2009</td><td>1,9m</td></tr> </table>

Elementos Bsicos - Imagens


Mecanismo para incluso de imagens em documentos
PNG, JPEG, GIF, etc

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

<form method="get"> ... </form>

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

Atributo multiple especifica se permitida a seleo de mltiplos valores


<select name="selecao" id="selecao" size="3" multiple="multiple"> <option>1</option> <option>2</option> <option>3</option> </select>

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

Botes de seleo so agrupados pelo valor do atributo id


Somente um boto do grupo pode estar ligado, ou seja, so mutuamente exclusivos

<input type="radio" name="sexo" value="m" checked="checked">Masculino <input type="radio" name="sexo" value="f">Feminino

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

Dois elementos diferentes


Elemento INPUT Elemento BUTTON
Prov possibilidades mais ricas de renderizao

<input type="submit" value="OK"> <button type="reset">Limpar</button> <button type="button">Clique Aqui!</button>

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>

Cdigo em arquivo externo


<script type="text-javascript" src="arquivo.js"> </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/

Internet Information Services (IIS)


Conjunto integrado de servios para um servidor Web Permite publicar contedo e disponibilizar arquivos e aplicaes em um ambiente Internet/Intranet Dotado de uma interface administrativa grfica Hospedagem de web sites
Site FTP, grupos de notcias, etc

Baseado no conceito de Diretrio Virtual Meio indicado de instalao:


Web Platform Installer

Servidor Web Interno


Utilizado durante o desenvolvimento da aplicao No necessita de configuraes adicionais No precisa IIS para o desenvolvimento e teste de aplicaes na mquina do desenvolvedor

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.

DESENVOLVIMENTO PARA INTERNET PARTE II

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

Estrutura de eventos bastante longa e complexa

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

Apenas atributos HTML

Controles

Controles
Para adicionar um controle Server Control
Arraste o controle desejado da aba Standard da Toolbox

Para adicionar um controle HTML Control


Arraste o controle desejado da aba HTML 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

Opes para configurar os dados:


Propriedade DataSource com a fonte de dados Adio direta na coleo de itens via mtodo Add() Remoo direta da coleo de itens via mtodo Remove() e RemoveAt()

Controles - ListBox
Para configurar o modo de seleo:
Propriedade SelectionMode
Single para um nico valor Multiple para mltiplos valores

Para obter a seleo do usurio:


Propriedades SelectedIndex para obter o ndice do elemento selecionado
Cuidado! O ndice do primeiro elemento 0

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

Para obter a seleo do usurio:


Propriedade Checked retorna true ou false dependendo se o item est marcado ou no

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

Demais componentes no so includos dentro do ContentPlaceHolder


<asp:ContentPlaceHolder ID="MainContent" runat="server"/>

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

DESENVOLVENDO PARA INTERNET PARTE III

O que gerenciamento de estado?


Sem gerenciamento de estado
Login.aspx
Entre com info de logon Nome John Sobrenome Doe

Com gerenciamento de estado


Login.aspx
Entre com info de logon Nome John Sobrenome Doe

Ok Bemvindo.aspx

Web Server

Ok Bemvindo.aspx

Web Server

Ol
Esqueci quem voc !!!

Ol John Doe

Tipos de gerenciamento de estado


Gerenciamento de estado do lado servidor
Application Informao disponvel para todos os usurios da aplicao web Session Informao disponvel apenas para o usurio da sesso especfica

Gerenciamento de estado do lado cliente


Cookies Arquivo texto armazena informao para manter estado ViewState Mantm valores (principalmente dos controles) entre as requisies das pginas Query strings Informao acrescentada no fim da URL (comando GET do HTTP)

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"];

Session - Eventos associados


Presentes no Global.asax
protected void Session_Start(Object sender, EventArgs e) { //Evento disparado quando a uma sesso iniciada. }
protected void Session_End(Object sender, EventArgs e) { //Evento disparado quando a sesso finalizada. }

Application
Varivel de estado da aplicao Visvel em toda aplicao para TODOS usurios Exemplos de uso:
Chat Contador de Acessos

Exemplo:
Application[ContadorAcessos] = 0;

Application - Eventos associados


Presentes no Global.asax
protected void Application_Start(Object sender, EventArgs e) { //Evento disparado quando a aplicao iniciada. }
protected void Application_End(Object sender, EventArgs e) { //Evento disparado quando uma aplicao finalizada. }

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== />

Note que os dados no so exibidos em texto plano, por questes de segurana

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];

String strCookieValue = Vazio;


//Certifica-se que o cookie existe if (cookie != null) strCookieValue = cookie.Value.ToString();

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);

Passo 2: declarar o evento (deve ser do mesmo tipo do delegate correspondente)


public class UmaClasse { public event FazAlgoDelegate UmEvento; }

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

DESENVOLVENDO PARA INTERNET PARTE IV

AJAX

Roadmap da Apresentao Visual


SilverLight WPF ASP.NET AJAX
Aumenta a interao do usurio Aumenta a Experincia Riqueza para a camada de apresentacao A Media Web

HTML + JavaScript
Melhora Navegao Facilita a Personalizao

HTML

Grande Alcance

Fcil utilizao, personalizao, diferenciao, riqueza

renda/usurio

Convergncia Web e Desktop


Aplicao Desktop
Interativa Rpida Difcil Implantao Desatualizada Roda no Cliente

Aplicao Web
Esttica Lenta Fcil Implementao Sempre Atualizada Roda no Servidor

RIA - Rich Internet Application

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

Problemas em uma Aplicao Web


Post-backs foram que a pgina seja recarregada a cada clique. No mantm o estado da pgina naturalmente (stateless). Interfaces ricas so de difcil concepo. Lenta em relao a aplicaes de clientes ricos (desktop).

Soluo para Aplicaes Web


RIA Rich Internet Application Web 2.0

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.

Renderizao Parcial de Pginas


A renderizao de partes de pginas suportada por um conjunto de controles do servidor e scripts no cliente Permite atualizar de forma assncrona pedaos de uma pgina sem a necessidade do postback completo da pgina Principais componentes envolvidos:
XMLHttpRequest ScriptManager UpdatePanel UpdateProgress

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

Uso obrigatrio se forem utilizados os componentes UpdatePanel, UpdateProgress e Timer

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

ASP.NET AJAX Control Toolkit


Um rico conjunto de controles e extenders que transformam a tarefa de construir uma interface rica utilizando ASP.NET AJAX uma tarefa simples e rpida
Exemplos de fcil compreenso SDK que simplifica a criao e reutilizao de seus prprios controles Cdigo fonte e documentao completa Mais de 30 componentes e extenders

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

Aprimorando Controles Existentes


Control Extenders
Estender controles ASP.NET com funcionalidades de controles ASP.NET AJAX Encapsular comportamentos tanto no lado do cliente quanto do lado do servidor Mesmo modelo de programao de controles ASP.NET
<asp:TextBox runat="server" ID="TextBox1" /> <asp:AutoCompleteExtender runat="server" ID="AC1 TargetControlID="TextBox1" ServicePath="AutoComplete.asmx ServiceMethod="GetWords" Enabled="true" MinimumPrefixLength="1" />

DEMONSTRAO

WEB SERVICES

O que Web Service?


um servio disponvel na Internet, atravs de um Servidor Web Possui funes contendo suas regras de negcios, que podem ser acessadas atravs de aplicativos Possibilita a comunicao entre Sistemas Tecnologia que torna possvel realizar transaes, troca de dados entre empresas, que antes eram difceis ou impossveis

Web Services - Caractersticas


So baseados em Padres da Web Os dados trafegam em formato XML, atravs do protocolo SOAP Independente de plataforma, ou seja, sistemas heterogneos podem se comunicar facilmente Pode retornar vrios tipos de dados, como por exemplo uma tabela do banco de dados

Por que Web Services?


Necessidade de Integrao entre Negcios (B2B) Tendncia do Software como Servio

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)

Pr-Web Services - Problemas


Tecnologias dependentes de plataforma Difcil integrao (necessidade de bridge) Criava-se um pequeno protocolo de comunicao Necessidade de Transformao de Dados Pouco segura, complexas, caras, baixa produtividade e pouco robustas

Uma Soluo Integrada...


Deve ser independente de software e hardware Prover Servios atravs das barreiras existentes entre diferentes companhias Promover automao

Como conseguir tudo isso? Web Services!

Integrao entre Plataformas

Plataforma Integrada Microsoft

Web Services Integration


Unix AS400

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

SOAP Message XML

Cliente do Web Service Windows Application

XML

Servidor Web

Rede

XML Web Service

SOAP Message XML SOAP Response

SOAP Message XML

Web App + Web Services


HTTP Message HTML HTTP Message HTML HTTP Request HTTP Message HTML SOAP Message XML HTTP Request GET- POST HTTP Message HTML

SOAP Request

SOAP Message XML

Browser Cliente do Web Service

Servidor Web

Rede
Web App

Rede

XML Web Service

HTTP Message HTML HTTP Response

HTTP Message HTML

SOAP Message XML SOAP Response

SOAP Message XML

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

O que o DISCO e UDDI?


DISCO (Discovery of WS) & UDDI (Universal Description, Discovery and Integration) Engine de Busca por Web Services Pginas Amarelas

http://uddi.xml.org/

Funcionamento
Pesquisa o Servio
http://www.uddi.org URL de um documento DISCO ou WSDL

UDDI

Acha o Servio

Cliente Do Web Service

http://yourservice.com HTML ou XML com URL para WSDL

Como conversar? (WSDL)


http://yourservice.com/?WSDL Descries do servio em XML

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

Aplicao IIS ASP.Net .NET Framework

Servidor da
Aplicao

Requisitos - Produo
Cliente
Aplicao

asmx

SOAP (xml)

Aplicao IIS ASP.Net .NET Framework

Servidor da
Aplicao

Consumindo Web Services


Para consumir um web service:
Criar uma classe proxy
Via wsdl.exe Via Visual Studio
Adicionar uma web reference ao projeto informando a URL do web service

Declarar um objeto do tipo do web service Invocar os mtodos sobre o objeto remoto

Consumindo Web Services


O processo de comunicao entre um cliente e um web service realizado atravs de um objeto proxy
Classe proxy local ao cliente Responsvel pela chamada dos mtodos remotos do web service e tratamento dos protocolos (SOAP, HTTP, etc)

Consumindo Web Services


Ferramenta wsdl.exe
Cria uma classe proxy para acesso ao web service a partir do documento WSDL de definio do web service Cria uma classe servidor baseada no documento WSDL de definio do web service

No Visual Studio, adio de uma web reference cria a classe proxy


A classe criada uma subclasse de System.Web.Service.Protocols.SoapHttpClientProtocol

Consumindo Web Services


Exemplo:

CadastroPessoalWS.PessoalWS ws = new CadastroPessoalWS.PessoalWS(); CadastroPessoalWS.Pessoa p = ws.BuscaPessoa("Antonio Carlos"); Console.WriteLine(p.Nome);

Criando Web Service


Para criar um web service bsico:
Criar um projeto ASP.NET Web Service Marcar as classes que sero disponibilizadas via web service com o atributo [WebService]
Definir o valor da propriedade namespace

Marcar os mtodo de acesso remoto via web service com o atributo [WebMethod]

LABORATRIO 14

INTRODUO A BANCO DE DADOS

Conceitos
Banco de Dados
uma coleo de dados inter-relacionados, representando informaes sobre um domnio especfico

Ex.: Lista Telefnica, Fichas de acervo de Biblioteca

Sistema Gerenciador de Banco de Dados


So softwares que permitem a definio de estruturas para armazenamento de informaes e fornecimento de mecanismos para manipul-las Caractersticas:
Integridade, Restries, Segurana/Privacidade, Restaurao, Eficincia

Ex.: SQL Server, Oracle, PostgresSQL, MySQL

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.

Ex.: O nmero de alunos na turma MAT01 de 2008 79.


Os elementos de dados so:
Turma: MAT01 Ano: 2008 Alunos: 79

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

Editora codigo nome

FK1

Notao: PK chave primria (nome do campo sublinhado) FK chave estrangeira

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

PRODUTO PK PROD_COD PROD_DESC PROD_IPI PROD_UNIT PROD_QTD

ITEM_NF PK,FK2 PK NF_NRO ITEM_COD ITEM_VALOR ITEM_QTD PROD_COD

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

Coluna com o cdigo e o nome da tabela cliente


SELECT cli_cod, cli_nome FROM cliente

Todos as colunas da tabela cliente onde o nome comece com Bil


SELECT * FROM cliente WHERE cli_nome LIKE 'Bil%'

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

MICROSOFT SQL MANAGEMENT STUDIO

Logar

Object Explorer e Details

Operaes
New Database Attach

Attach

Tarefas
Detach Shrink Restore Import Export Copy

Operaes de Tabela
New Table Editar Design Open Table Script Table as

Design de Tabelas e Colunas

Configurao de Colunas

Relacionamento entre Tabelas

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

Modelo de objetos do ADO.NET


DataSet .NET Data Provider Connection
Transaction

DataTableCollection TableAdapter
SelectCommand InsertCommand

DataTable
DataRowCollection DataColumnCollection

Command
Parameters

ConstraintCollection
UpdateCommand DeleteCommand

DataReader

DataRelationCollection

XML Banco de Dados

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

Providers especficos oferecem aumento da performance.

Acesso ao Banco de Dados


Banco de Dados
Connection Command
Troca dados entre o data set e o banco de dados Prov acesso a conjuntos de dados para leitura apenas Gerencia a conexo ao banco de dados Executa a consulta/comando no banco de dados

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();

Para definir o comando a ser executado utilize a propriedade CommandText:


cmd.CommandText = "SELECT * FROM Tabela";

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"];

Para ir para o prximo registro, utilize:


dr.Read();

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);

SqlDataAdapter da = new SqlDataAdapter(cmd);


DataSet ds = new DataSet(); da.Fill(ds);

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);

SqlDataAdapter da = new SqlDataAdapter(cmd); SqlCommandBuilder cb = new SqlCommandBuilder(da);


da.UpdateCommand = cb.GetUpdateCommand(); da.InsertCommand = cb.GetInsertCommand(); da.DeleteCommand = cb.GetDeleteCommand(); da.Update(ds.Tables["Clientes"]); cn.Close();

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");

Atualizao do DataSet no Banco de dados:


da.Update(ds);

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

Visual Studio e ADO.NET


O desenvolvimento visual de programas que utilizam ADO.NET envolve diversos conceitos complementares:
Fontes de dados DataSet tipado Vinculao de dados

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

Objeto DataSet Tipado


DataSet tipado
uma subclasse de DataSet que incorpora as definies de esquema (tabelas e colunas) atravs de propriedades pblicas Subclasse criada atravs das informaes de esquema XML contidas em um XSD (XML Schema Definition) Pode ser criado automaticamente pelo Visual Studio
Ao criar uma fonte de dados a partir de um banco de dados, criado um DataSet tipado automaticamente

Objeto DataSet Tipado


Caractersticas:
No tipados
Dados expostos como Object Late bound
Conhecido em tempo de execuo

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

Complexa permite anexar um controle a uma lista de valores


DropDownList, GridView, 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

Carregue o DataSet, depois chame o mtodo DataBind


myDataAdapter.Fill(myDataSet) employeesList.DataBind();

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

O ASP.NET fornece recursos de segurana implementados pelo .NET Framework

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

Controles de Login API Membership

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

ASP.NET Forms authentication

Cliente requisita pgina

No autenticado

Autenticado Autorizado

Acesso negado

Usurio algum Senha ******* Ok 4 Pgina de logon

No autenticado Autenticado Autorizado Cookie de autenticao 5 7

Requisio pgina segura

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

com base nos grupos de usurios


<allow roles="..."> para permitir acesso <deny roles="..."> 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

Controle composto para pgina de recuperao de senhas perdidas


Controle composto para pgina de alterao de senha

LABORATRIO 05

ENGENHARIA DE SOFTWARE/ MICROSOFT SOLUTIONS FRAMEWORK

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.

Seus princpios so:


processos, mtodos e ferramentas.

Processo, Mtodo e Ferramenta


Uma ferramenta programa de computador ou procedimentos que auxilie no desenvolvimento de software.
Ex. O Visual Studio oferece diversas ferramentas, que aumenta a produtividade do desenvolvedor.

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.

MICROSOFT SOLUTIONS FRAMEWORK

Microsoft Solutions Framework


Guia para a criao de solues de tecnologia de informao na plataforma Microsoft.
Aplicaes, redes, infraestrutura, instalao.

Proposto em 1993 (MSF 1.0) Atualmente, conta com verses especficas:


MSF Agile Software Development
Guia para desenvolvimento com mtodos geis

MSF Capability Maturity Model Integration


Guia para conformidade com o modelo CMU/CMMI.

Microsoft Solutions Framework


Parte integrante do Microsoft Operation Framework (MOF) que um esforo da Microsoft para aumentar o sucesso de solues nas suas plataformas.
Conjunto de documentos que organiza processos e mtodos de equipes que tiveram sucesso nas suas solues (boas prticas). Adaptao de prticas de diversas plataformas (Agile, CMMI).

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.

Microsoft Solutions Framework

Ciclos e Iteraes

Para saber mais


Software Engineering Body of Knowledge (SWEBOK)
http://www.swebok.org

MSF for Agile Software Development


http://msdn.microsoft.com/enus/library/dd380647.aspx

MSF for CMMI Process Improvement


http://msdn.microsoft.com/enus/library/dd997574.aspx

Das könnte Ihnen auch gefallen