Sexta .NET adiada

Hoje não terá aula .NET. Porém em breve, postaremos ela.

Motivo ?

Esse final de semana está acontecendo o processo de formatura de nosso amigo Victor Santos. E parte da WebFinal estará presente em todas as etapas já foram 2/3 (missa e colação de grau), prestando essa singela homenagem a esse grande profissional.

Amanhã será a festa ! \o/

Parabéns, que o sucesso te acompanhe em todas as fases de sua vida.

Sexta .NET – Aula 12 – ASP.NET e C# – Parte III

Boa tarde, continuando a aula anterior conforme prometido, aqui vamos com:

Sexta .NET – Aula 12 – ASP.NET e C# – Parte III

Falaremos nesta aula sobre: Nullable Types

  • Recurso da versão 2.0.
  • Variáveis continuam a representar todos os valores do seu tipo, e mais um valor adicional null.
  • Permite uma integração melhor com bancos de dados, que podem conter valores null em seus campos.
  • Declaradas através da classe Nullable, ou através do operador ? adicionado ao tipo à ser utilizado.

Podem ser declaradas de duas formas:
System.Nullable variavel;
? variavel;

Onde T é o tipo da variável
Ambas notações funcionam de maneira equivalente
Declarando e usando uma variável inteira e anulável

int? clienteId;
clienteId = 10; //Ok
clienteId = null; //Ok, clienteId é anulável

Qualquer tipo por valor pode ser usado como Nullable Type

int? i = 10;
double? x = 3.14;
bool? flag = null;
char? letra = 'a';
int?[] MeuArray = new int?[10];

Os exemplos seguintes não são tipos por valor, portanto não são aceitáveis como Nullable Types

string? variavel = “tipos anulaveis”;
Cliente? umCliente = new Cliente?();

O operador as só pode ser utilizado com tipos por referência, então não pode ser usado com Nullable Types

int clienteId = 5;
object b = clienteId;
// Erro em tempo de compilação
int? c = b as int;

Uma instância de um tipo anulável possui duas propriedades read-only

  • HasValue: do tipo bool, retorna verdadeiro quando uma variável contém um valor não-nulo.
  • Value: do tipo equivalente ao tipo anulável utilizado, se HasValue é true, então Value contém um valor significativo, senão, ao tentar acessar Value será gerada uma exception.

Utilizando as propriedades de um tipo anulável

int? clienteId = 10;
if (clienteId.HasValue)
Console.WriteLine(clienteId.Value);
else
Console.WriteLine(“Identificação Indefinida!”);

Conversões explícitas

  • Um tipo anulável pode ser convertido para um tipo regular usando casts ou usando a propriedade Value.
  • Se o tipo anulável contém o valor null, será gerada uma exception.

Conversões explícitas

// Exemplos
int? clienteId = null;
// Não compila
int x = clienteId;
// Compila, mas será gerada uma exception se x for null
int x = (int)clienteId;
// Compila, mas será gerada uma exception se x for null
int x = clienteId.Value;

Conversões implícitas
A conversão de um tipo anulável para um tipo regular é implícita.

int produtosAdquiridos = 10;
// Conversão implícita
int? produtos = produtosAdquiridos;

Operadores
Quaisquer operadores existentes para tipos por valor podem ser utilizados com Nullable Types.
O operador produzirá null se os operandos forem nulos, caso contrário, usará o valor contido para calcular o resultado.

int? x = 10;
x++; // x agora é 11
x = x * 10; // x agora é 110
int? y = null;
x = x + y; // x agora é null

Quando são feitas comparações com Nullable Types, se ambos os Nullable Types são null, então a comparação sempre retornará false. O caso oposto retornará true.

int? x = 250;
int? produtosAdquiridos = null;
if (x >= produtosAdquiridos)
Console.WriteLine(“Adquiriu mais de {0} produtos.”,x);
else // Não é válido – Correto: adição de um else if (...)
Console.WriteLine(“Adquiriu menos de {0} produtos.”,x);

A conclusão contida na expressão else não é válida porque produtosAdquiridos é null, portanto, não contém nenhum valor. Logo, não pode ser maior ou menor que x.

O operador ??
Define um valor padrão que é retornado quando um tipo anulável é atribuído à um tipo não-anulável.

// Exemplo
int? produtosAdquiridos = null;
// Atribui o valor 0 à y se produtosAdquiridos for null
int y = produtosAdquiridos ?? 0;

Também pode ser utilizado com vários Nullable Types

int? limiteCredito;
int? valorDefault;
// Se limiteCredito não for null, z = limiteCredito.
// Se limiteCredito for null, z = valorDefault.
int? z = limiteCredito ?? valorDefault;

Na próxima aula falaremos sobre Coleções

Até a semana que vem!

Sexta .NET – Aula 11 – ASP.NET e C# – Parte II

Boa tarde Pessoal,

Primeiramente gostaria de justificar o fato de estarmos publicando com atraso a aula, esta semana estávamos em finalização e aprovação de dois projetos, o que fez que ficassemos totalmente focados na entrega das demandas e tivessemos que abrir mão das aulas.

Para tirar o atraso, aqui vamos com a continuação da última aula.

Sexta .NET – Aula 11 – ASP.NET e C# – Parte II

Nesta aula abordaremos:
Partial Types

Aqui vamos então:

  • Recurso da versão 2.0
  • Permite dividir a implementação de um determinado tipo em diversos arquivos.
  • Disponível para classes, estruturas e interfaces.
  • Definidos pela palavra-chave partial.

Quando podem ser utilizados:
Quando trabalhamos com código gerado automaticamente, código 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 têm seus arquivos checados para edição, sem interferir um no outro.

Declarando uma classe parcial

ClienteP1.cs

public partial class Cliente
{
public int codigo;
public bool EClienteEspecial() { … }
}

ClienteP2.cs

public partial class Cliente
{
int produtosAdquiridos;
public int ProdutosAdquiridos {
get { … }
set { … }
}
}

Declarando uma classe parcial agrupada em uma classe

ClienteP1.cs

public partial class Cliente {
int produtosAdquiridos;
public partial class ClientesEspeciais {
static List lista = new List();
}
}

ClienteP2.cs

public partial class Cliente {
public partial class ClientesEspeciais {
public void Adiciona(Cliente c) {
if (c.EClienteEspecial)
ClientesEspeciais.lista.Add(c);
}
}
}

As partes de uma classe não podem definir aspectos contraditórios.
Uma classe (ou estrutura) pode ter dois tipos de aspectos ou qualidades: acumulativa e não-acumulativa.
Os aspectos acumulativos são aspectos que cada parte do tipo parcial pode escolher adicionar, como derivação de interfaces, propriedades, índices, métodos e variáveis.
Os aspectos não-acumulativos são aspectos que todas as partes do tipo parcial devem possuir.

Classes Acumulativas

public partial class Computador {} // CompP1.cs
public partial class Computador : IProduto {// CompP2.cs
public void Adiciona() {...}
public void Remove() {...}
}

Classes Não-Acumulativas

public class Pessoa {}
public class Funcionario {}
public partial class Vendedor : Pessoa {} // VendedorP1.cs
public partial class Vendedor : Pessoa {} // VendedorP2.cs
//Não compila
public partial class Vendedor : Funcionario {}

Todas as partes devem ter a mesma acessibilidade.
Além de todas as partes definirem as mesmas partes não-acumulativas, apenas uma parte pode fazer o override de um método virtual ou abstract, e apenas uma parte pode implementar uma mesma interface.
Ao usar Partial Types, é recomendável indicar no nome do arquivo que este contém partes de um tipo. Como por exemplo: MinhaClasseP1.cs, MinhaClasseP2.cs

Bom pessoal, esta aula fica por aqui, já acompanhem a sequencia com a tal aula perdida, englobando Nullable Types

Até lá!

Feedback Prudente Tech Day 2010

Neste sábado passado (14/08/2010), ocorreu em Presidente Prudente o Prudente Tech Day. Para quem não tem a menor idéia do que é o TechDay, trata-se de um evento criado pela Comunidade Técnica Microsoft, e que tem por obejtivo, dividir experiências entre profissionais Microsoft com a galera participante.

Por se tratar de um evento de comunidade, o público estimado era algo próximo dos 200 participantes. Porém o público compareceu em peso surpreendendo inclusive os organizadores. No final do dia foram contabilizados mais de 800 participantes. E por ter sido um sucesso. Já foi confirmado a versão 2011 do evento.

Bom pessoal, por ser o mais ativo em tecnologias Microsoft dentro da WebFinal eu serei o responsável por escrever este resumão do que ocorreu no TechDay.

Falando sobre as palestras que a equipe WebFinal acompanhou:

09:00 – 10:15 Powershell e o SQL Server 2008 – Laerte Junior

Começamos o dia juntamente com o amigo Laerte Junior e seu poderoso PowerShell, palestrante de peso e muito conhecimento na área passou a todos um bom preview de todo o poder e a produtividade que esta ferramenta nos proporciona, infelizmente a palestra foi um pouco afetada pelo horário, pois a abertura do evento tomou parte do tempo destinado ao Laerte, mas mesmo assim deu para todos terem um overview da tecnologia e da necessidade de se terem profissionais aptos a utilizá-la dentro da empresa.
Conversando depois com o palestrante ele me disse que teve um pequeno problema com sua VM e não conseguiu passar para o pessoal tudo que tinha preparado, é galera, se de improviso já foi bom imagina se o cara não tivesse tido estes contratempos? Já se mostrava aí o que nos esperava no decorrer do dia…

Não poderia deixar de constar: “TUDO NO POWERSHELL É OBJETO”

10:15 – 10:45 Como assegurar a qualidade, o desempenho e a disponibilidade do ambiente SQL Server – Quest Software

Na verdade esta palestra não me agradou muito, pois eu pensava em ver formas de se assegurar qualidade e desempenho, como o próprio nome da palestra informa, dentro do SQL Server e não na própria ferramenta da Quest (Toad), não desmerecendo a empresa que possui um software fantástico, mas ao meu ponto de vista toda a galera do evento esperava algo mais voltado ao próprio SQL Server ou alguma metodologia a ser adotada.
Mas entendemos o foco do palestrante e agradecemos por nos apresentar uma explêndida ferramenta, a problemática recai apenas em como softwarehouses de porte pequeno e médio teriam viabilidade em utilizar o Toad.

10:45 – 12:00 Introdução ao desenvolvimento de Sistemas Conectados com WCF 4.0 – Evilázaro Alves

O Grande palestrante da manhã, começo assim falando do caro Evilázaro, não sei se era porque a palestra era bem focada na minha área de atuação (Desenvolvimento de Aplicações), mas com certeza o WCF foi muito bem apresentado e muito bem defendido pelo palestrante. Na minha opinião faltou apenas falar um pouquinho mais sobre as melhorias da versão 3.5 para a 4.0, porém foi fantástico, com certeza pessoas que consideravam antes o WCF sendo simplesmente um WebService mais bonitinho estão de conceito mudados e com vontade de se aprofundar ainda mais no tema, que por sinal é muito bom para se desenvolverem aplicações focando interoperabilidade de sistemas e tecnoclogias, a WebFinal investe nesta área.

13:15 – 14:30 Gerenciando Múltiplos Servidores no SQL Server 2008 R2 – Felipe Ferreira

Logo após o almoço, a galera meio com sono, mas entra na sala o gaúcho Felipe Ferreira com sua buzina. Palestra sobre Múltiplos Servidores, alguém já tinha mexido com isto?
Com certeza esta é uma das grandes melhorias oferecidas na versão R2 do SQL Server, com esta ferramenta você pode agora começar a gerenciar todos os seus servers sem a necessidade de se conectar um-a-um e ficar efetuando seus testes rotineiros, agora o DBA dispõe de uma ferramenta que mostra em tela todos seus servidores e fornece informações detalhadas sobre eles, ótimo não?
E como nosso caro DBA dizia, eles querem ser amigos de nós Desenvolvedores, seria isto possível ou apenas uma profecia apocalíptica?
Bom, não sei a resposta correta mas com certeza esta possibilidade de um novo tipo de projeto de banco de dados no nosso Visual Studio 2010 vai viabilizar isto.
Agora podemos criar projetos e gerar todas as nossas tabelas de testes e até oficiais dentro dele, ah, e podemos também gerar linhas para testes automaticamente! Com certeza isto estará facilitando a nossa vida e a deles, quando estivermos querendo passar o sistema para Produção, pois poderá ser gerado um simples arquivo de extensão dacpac que pode ser executado no SQL Server gerando toda a estrutura necessária e atualizada para publicação.

ps: Valeu pela mochila Felipe! hahaaha – Eu acertei a resposta sobre: “O que signigica UCP”

14:30 – 15:00 Desenvolvendo aplicações com VS2010 e SQL Server 2008 R2 – Livetec Informática

Esta palestra na opinião da nossa equipe deveria ser a primeira do dia, pois o que foi apresentado pela Livetec foi apenas uma introdução à ferramenta, abrangendo às pessoas que desejam se iniciar na tecnologia e nunca desenvolveram nos ambientes Microsoft, para os que já desenvolvem, infelizmente não pudemos abstrair coisas desta palestra, sem problemas, esperamos que a galera tenha aprendido algo.

ps: nunca fale que um site foi “desenvolvido totalmente em Visual Studio”, isto faz com que a tecnologia seja criticada e crucificada pela concorrência, como os “javeiros” já fazem.
Desenvolver em Visual Studio significa não saber programar e apenas ficar arrastando componentes da toolbox e configurando seus eventos pré-definidos, com certeza não é o que a Livetec faz, são excelentes profissionais na tecnologia, foi apenas um deslize na forma de se expressar, fica a dica.

15:00 – 16:15 Spatial Data no SQL Server 2008 R2 – Diego Nogare

Realmente algo muito diferente e interessante, trabalhar com mapas em relatórios, bacana né?
Foi o que nosso caro Diego apresentou, criar relatórios utilizando dados espaciais integrados ao SQL Server! Sim isto é possível, temos no SQL Server o tipo de dados geometric que é responsável por localizações espaciais e formação de polígonos baseados em posicionamentos gráficos de latitude e longitude.
O grande ápice de se realizar tal tipo de relatório é a possibilidade de integração com o Bing o que gera ao usuário uma grande experiência de utilização, a problemática está no fato de não ser tão simples encontrar mapas para serem utilizados gratuitamente, podemos encontrar alguns exemplares do IBGE, mas não tenho informações sobre preços e formas. Creio que com o passar do tempo isto possa ser mais popularizado na comunidade de desenvolvimento e proporcionará uma nova forma de se gerar relatórios baseados em localidades.

16:30 – 17:45 Uma visão do presente: A inovação do futuro já está aqui – Fabio Hara

Começo assim: “Esse japonês é foda!”

Fábio Hara, o palestrante esperado pela galera para fazer o grande desfecho do Dia, e com certeza sua palestra foi muito boa.
Com o auxílio do grande Rob (é uma pena não ter conseguido assistir as palestras deste fera) foi nos mostrado o que pode ocorrer com essa nova onda do Cloud Computing, com certeza a galera agora tem um melhor entendimento do que se trata esta nova tecnologia e o que ela pretende atender, passado pelo Cloud esbarramos em um produto Microsoft ainda não muito conhecido: o Photosynth
Com certeza algo muito extraordinário, já pensou em montar uma visão panorâmica do seu quarto apenas com fotos e proporcionar vários níveis de Zoom?
Isto é possível através desta ferramenta! Você faz upload de diversas fotos, sem a necessidade de colocá-las em sequencia nem fazer algum tipo de referência e pronto. O sistema consegue reconhecer os pontos em comum das imagens e com isto vai montando o ambiente. Achou interessante? E se eu comentar que isto ainda pode ser compartilhado e visto através do Bing?
Vimos também um breve explicativo do deep zoom disponível no Silverlight, conforme a própria WebFinal já havia exibido isto na Infoeste durante o mini curso ministrado, e a grande sensação do momento, o Kinect.
Para os que ainda não estão familiarizados com o nome Kinect é o antes nomeado “Project Natal”, dispositivo para o Xbox 360 onde não mais serão necessários controles, melhorando a experiência de jogadores e deixando os gamers menos sedentários.
Após toda esta abordagem das novas tecnologias que já estão por aqui e muitos ainda não conhecemos e/ou estamos adaptados tivemos algumas perguntas disparadas ao Hara e muita música para os sorteios, hehe.

Em resumo o PTD foi um evento que será lembrado por mim, com certeza o melhor evento tecnológico que já participei.
Os profissionais responsáveis pelo TechDay estão de parabéns pelo excelente trabalho oferecido e esforço desprendido para poder realizar este imenso projeto com a galera.

Apenas separando um pouco do conteúdo, pois este trecho tem caráter especial:

Gostaria de deixar aqui oficialmente a “proposta” da WebFinal para a Equipe do TechDay.
Já conversei com o Laerte ontem pela noite e aqui tornamos público o interesse da WebFinal de se tornar parceira deste evento.
Esperamos que a comunidade veja e se for de interesse por parte dos integrantes nos encontramos a disposição para firmar esta parceria.

Escreve à vocês Victor Santos, diretor de desenvolvimento – WebFinal

Sexta .NET – Aula 10 – Asp.NET e C# – Parte I

Bom pessoal,

Passada mais uma semada de correria e muito trabalho e aqui estamos para mais uma aula do Sexta .NET.
Hoje vou cumprir minha “dívida” com vocês e colocarei a aula que estou devendo a mais.

Para iniciar as atividades desta noite vamos falar de Asp.NET e C #.
Iniciaremos hoje falando sobre UserControls, Eventos e Delegates.

User controls

  • Controle web criado por um usuário.
  • Possui extensão .ascx
  • Herda de System.Web.UI.UserControl
  • Simplificam a reusabilidade de código e componentes User interface (UI) dentro de uma aplicação Web
  • Contém HTML, mas não as tags <HTML>,<BODY> ou <FORM>
  • Contém código para gerenciar seus próprios eventos
  • Podem agregar vários controles em um componente reusável

Exemplo de User Control

Eventos e Delegates

Conceitos:
Evento: ação que pode ser gerenciada/manipulada através de código
Delegate: membro da classe responsável por “delegar” as ações correspondentes a ocorrência de um evento ao(s) manipulador(es) de eventos correspondentes
Manipulador de Evento: método responsável pela execução de ações em reação a ocorrência de um evento

Cinco passos para se trabalhar com eventos
Passo 1: declarar o delegate contendo a assinatura do manipulador de evento correspondente ao evento

public class Cliente
{
public delegate void delegateProdutos(int produtos);
}

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

public class Cliente
{
public delegate void delegateProdutos(int produtos);
public event delegateProdutos EventoProdutos;
}

Passo 3: disparar o evento na chamada de algum método da classe

public class Cliente
{
...
public void MetodoEvento(int produtosAdquiridos) {
this.EventoProdutos(produtosAdquiridos); }
}

Passo 4: assinar o evento indicando o manipulador de eventos do mesmo através de uma instância de delegate

cliente.EventoProdutos += new Cliente.delegateProdutos(ManipuladorEvento);

Passo 5: implementar o manipulador de evento (deve respeitar a mesma assinatura definida pelo delegate do evento)

public void ManipuladorEvento(int produtos)
{
label1.Text = produtos.ToString();
}

Pessoal, por aqui ficamos nesta aula.
Foi curta mas é coisa importante e necessita de bastante prática.

Jajá libero a próxima aula.

Att,
Victor Santos

Google Wave tem seu “fim” decretado

A Google anunciou quarta-feira passada (04/08), em seu blog oficial, que o Wave está com seus dias contados.

“Não planejamos continuar a desenvolver o Wave como um produto”, declarou o vice-presidente sênior de operações Urs Hölzle, no blog.

Hölzle admitiu que o Wave não teve a recepção que a empresa esperava. Segundo a Google, a ferramenta elevou a expectativa do que seria possível fazer em um navegador web. “Mas nunca tínhamos certeza do que esperar dos usuários em relação a este jeito radicalmente diferente de se comunicar”, disse Hölzle.

As partes fundamentais do código já estão disponíveis para a comunidade OPEN SOURCE. “Parceiros e clientes podem continuar a inovação que começamos”, acrescenta o executivo.

O site será mantido pelo menos até o fim de 2010.

Surge o primeiro trojan-SMS para smartphones Android

De acordo com a empresa de segurança Kaspersky Lab, o malware se disfarça de player multimídia e envia SMSs para serviços premium.

A empresa de segurança online Kaspersky Lab diz ter descoberto o primeiro vírus para Android transmitido via SMS. O trojan (cavalo de Tróia), nomeado como Trojan-SMS.AndroidOS.FakePlayer, já infectou muitos dispositivos, diz comunicado da companhia.

O novo malware contamina smartphones Android disfarçando-se de um simples player multimídia. O usuário pensa estar instalando um arquivo de apenas 13KB, com a extensão .apk.

O trojan usa o telefone para enviar SMSs para serviços premium, controlados pelos cibercriminosos, sem que o usuário saiba – ele só descobre ao receber a conta.

A categoria de trojan-SMS é, atualmente, a mais comum em smarpthones, mas o Trojan-SMS.AndroidOS.FakePlayer é o primeiro específico para Android, diz a Kaspersky.

“O IDC já apontou que os dispositivos Android são o de venda mais rápida atualmente. O resultado disso é que veremos um crescimento proporcional no malware para essa plataforma”, disse Denis Maslennikov, gerente do grupo de pesquisa móvel da Kaspersky Lab.

A empresa recomenda aos usuários prestarem atenção a que serviços um aplicativo solicita acesso ao ser instalado. Isso pode incluir autorização para serviços premium, que cobram pelo envio de SMS, além de permissão para fazer chamadas.

Fonte: IDGNow

Sexta .NET – Aula 9 – Desenvolvendo para internet parte II

Bom dia pessoal,

Depois de uma semana sem o curso devido à correria que estamos ultimamente venho hoje bombardeá-los de conhecimento.
Vamos ter duas aulas em sequencia, uma agora sendo Desenvolvendo para internet parte II e logo mais ao fim do dia estarei colocando mais uma aula.

Vamos ao que interessa?

Sexta .NET – Aula 9 – Desenvolvendo para internet Parte II

ADICIONANDO EVENTOS

Muitos eventos são disparados através de ações de usuários captadas pelo navegador
O código para manipular o evento disparado é executado no servidor
Quando o código completa sua execução, a página web pronta é enviada de volta ao navegador (contendo código html e script)

CONTROLES

  • Button: Botão
  • CheckBox: Caixa para selecionar ou não um item
  • Label: Texto que não pode ser editado diretamente
  • LinkButton: Um botão com aparência de link
  • ListBox: Lista para escolha de uma ou mais opções
  • RadioButton: Caixa para selecionar ou não um item.

Gridview
Tabela para exibição de dados de fácil preenchimento e integração com BD, com controle de paginação e ordenação automáticos e suporte a templates.

  • DataList: Mecanismo parecido com o GridView, porém, com menos recursos
  • Repeater: Mecanismo parecido com o GridView, porém mais flexível e leve
  • DropDownList: Lista para escolha de uma das opções. Bastante útil quando se quer que as opções sejam extraídas de um banco de dados
  • Image: Exibição de uma imagem

Wizard
Permite criar um formulário passo a passo.

SiteMap
Permite criar um menu de navegação baseado na página que o usuário está acessando.

Menu
Permite criar um menu com links de maneira estática ou dinâmica. Pode utilizar o mesmo arquivo XML do SiteMap.

MASTER PAGE

  • Criar uma Herança Visual para o Web Site.
  • Manutenção centralizada, não é necessário mudar o código em várias páginas, apenas em uma.
  • Facilidade na criação do layout.
  • Reaproveitamento de código.

Session

  • Uma das formas mais simples de manutenção de estado é através de variáveis de sessão
  • Por padrão, estas informações estão armazenadas no próprio processo do ASP.NET
  • É possível armazenar informações de sessão em um processo separado (um servidor de estado) ou até mesmo em um Sistema Gerenciador de Banco de Dados
  • Uma variável de sessão está associada exclusivamente a uma única sessão.
  • Isto significa que um dado armazenado em uma variável de sessão com nome X para o usuário João não será visível na variável de sessão de mesmo nome do usuário Pedro, e vice-versa.

Session.Add("X", "Valor");
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 sessão é iniciada.}

protected void Session_End(Object sender, EventArgs e){//Evento disparado quando a sessão é finalizada.}

Application

  • Variável de estado da aplicação
  • Visível em toda aplicação para TODOS usuários
  • 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 aplicação é iniciada.}

protected void Application_End(Object sender, EventArgs e){//Evento disparado quando uma aplicação é finalizada.}

ViewState

Mantêm automaticamente os valores de controles de servidor entre um postback e outro
Internamente funciona como um campo oculto (hidden) um pouco mais sofisticado

Ao rodar uma aplicação ASP.NET sem qualquer controle verá que é criado um campo oculto para o armazenamento do ViewState:

<input type=”hidden” name=”__VIEWSTATE”
id=”__VIEWSTATE” value=”/wEPDwUJNzgzNDMwNTMzZGS8mO25pQR00V4slvgSxG3dEvK+hA==”>

Note que os dados não são exibidos em texto plano, por questões de segurança

Pode-se ainda adicionar manualmente valores a um ViewState, lembrando que você vai conseguir recuperá-los apenas na mesma página:

ViewState.Add("Nome", "Bill");
String nome = (string) ViewState["Nome"];

Cookie

  • Trata-se de um pequeno arquivo de texto que é armazenado na maquina do usuário
  • Usado, por exemplo, em sites de comércio eletrônico, para exibir as preferências e características do usuário
  • Pode identificar o usuário mesmo dias depois de seu acesso a página.
  • O grande problema dos cookies é que o usuário simplesmente pode desabilitar este recurso em seu navegador

Escrevendo um Cookie:

//Cria um novo cookie, passando o nome no construtor
HttpCookie cookie = new HttpCookie(“Curso”);

//Determina o valor o cookie
cookie.Value = “Sexta.NET”;
//Configura o cookie para expirar em 1 mês
cookie.Expires = DateTime.Now.AddMonth(1);
//Adiciona o cookie
Response.Cookies.Add(cookie);

Lendo um Cookie:

//Captura o cookie
HttpCookie cookie = Request.Cookies[“Curso”];

String strCookieValue = “Vazio”;

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

Web.config

  • Arquivo no formato XML
  • Informações de configuração da sua aplicação, tais como, string de conexão, páginas de erro, modo de compilação,etc.
  • Armazenar valores e parâmetros que sejam comuns a toda nossa aplicação.
  • Case Sensitive

Bom galera, vamos ficar por aqui, com este conteúdo apresentado finalizamos “Desenvolvimento para Internet”.
Voltaremos com um conteúdo mais aprofundado: UserControls

Até mais!

Victor Santos