CódigoFonte.net Inicial Anuncie Buscar códigos Fale conosco Olá Visitante - Segunda Feira, 12 de Maio de 2008.



Códigos
ASP.NET
ASP
Cold Fusion
CGI
C#
JavaScript
Delphi
PHP
VB.NET
VBScript
XML
Assistentes
Favoritos
Botão Direito
Confirm Box
Datas
Caixa de Alerta
Transições
Cores em Hexa
Links
Ver + Detalhes
Tutoriais/Dicas
ASP
Banco de dados
BLOGs
CGI/Perl
C# (CSharp)
CSS
Delphi
.NET
Flash
Front-Page
HTML
JavaScript
PHP
Python
Web
Web 2.0
Windows
Serviços
Mural
Contadores
Web Objects
GamesDaNet
Chama MSN
Jogos Online
Feed RSS
Expediente
Anuncie
Fórum
Bate-papo
Orkut
Divulgue-nos
Privacidade
Contato
Parceiros
Fontes Gratis
Br-Designer.com
CompreDeTudo
Iscambo.com
Garu Downloads
Oficina da Net
Seus Sonhos
.NET User Group
Piadas online
Casa dos Wm
HTML Staff
BaixaTube




Dicas CódigoFonte.net
Terça Feira, 30 de Outubro de 2007

Compactando ViewState – ASP.NET

Antes de iniciarmos esse artigo, irei explicar de forma rápida o que seria um ViewState.

“A grosso modo”, ViewState é uma string que armazena informações sobre o estado da página em um campo oculto dentro da mesma.

Geralmente quanto maior a complexibilidade de uma página, maior será as informações armazenadas em seu ViewState. Chegando a um ponto em que o ViewState prejudica o carregamento da página.

Em muitos casos a solução para este problema seria eliminar o ViewState, mas agora poderemos partir para outra solução.

Usando a lib GZipStream podemos compactar o viewstate e com isso reduzir em 45% o tamanho do ViewState da página.

Veremos a partir de agora como compactar e descompactar dados na memória.
Nossa Classe de compactação usará System.IO.Compression e System.IO;

Criaremos em nossa classe dois metodos estáticos:
public static byte[] CompactarViewState(byte[] bytes) e
public static byte[] DescompactarViewState(byte[] bytes)

Nossa classe herdará de : System.Web.UI.Page

public class ClassCompactarViewState: : System.Web.UI.Page
{
      public ClassCompactarViewState()
      {
            //
            // TODO: Add constructor logic here
            //
      }
 
 
    public static byte[] CompactarViewState(byte[] bytes)
    {
        MemoryStream MSsaida = new MemoryStream();
        GZipStream gzip = new GZipStream(MSsaida,
                          CompressionMode.Compress, true);
        gzip.Write(bytes, 0, bytes.Length);
        gzip.Close();
        return MSsaida.ToArray();
    }
 
    public static byte[] DescompactarViewState(byte[] bytes)
    {
        MemoryStream MSentrada = new MemoryStream();
        MSentrada.Write(bytes, 0, bytes.Length);
        MSentrada.Position = 0;
        GZipStream gzip = new GZipStream(MSentrada,
                          CompressionMode.Decompress, true);
        MemoryStream MSsaida = new MemoryStream();
        byte[] buffer = new byte[64];
        int leitura = -1;
        leitura = gzip.Read(buffer, 0, buffer.Length);
        while (leitura > 0)
        {
            MSsaida.Write(buffer, 0, leitura);
            leitura = gzip.Read(buffer, 0, buffer.Length);
        }
        gzip.Close();
        return MSsaida.ToArray();
    }
 
    protected override object LoadPageStateFromPersistenceMedium()
    {
        string viewState = Request.Form["__VSTATE"];
        byte[] bytes = Convert.FromBase64String(viewState);
      // DESCOMPACTAR VIEWSTATE   
        bytes = ClassCompactarViewState.DescompactarViewState(bytes);
        LosFormatter formatter = new LosFormatter();
        return formatter.Deserialize(Convert.ToBase64String(bytes));
    }
 
    protected override void SavePageStateToPersistenceMedium(object viewState)
    {
        LosFormatter formatter = new LosFormatter();
        StringWriter writer = new StringWriter();
        formatter.Serialize(writer, viewState);
        string viewStateString = writer.ToString();
        byte[] bytes = Convert.FromBase64String(viewStateString);
     // COMPACTAR VIEWSTATE
        bytes = ClassCompactarViewState.CompactarViewState(bytes);
        ClientScript.RegisterHiddenField("__VSTATE", Convert.ToBase64String(bytes));
    }
 }  


Depois de constuir nossa classe, em nosso WebForm, iremos criar uma herança para ClassCompactarViewState

Como segue abaixo:


public partial class _Default : CompactarssViewState
{
    protected void Page_Load(object sender, EventArgs e)
    { 
    }
} 


Bom pessoal, até o próximo artigo!

[]’s

Francke Peixoto

Veja mais

Comentários do artigo [Novo comentário]

Nenhum comentário, seja o primeiro a comentar.
Para adicionar um comentário você deve efetuar o login
Gostou do CódigoFonte.net? Quer indicar a um amigo?
Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:



» Busca específica

BuscaPé, líder em comparação de preços na América Latina





» Notebooks?
» Procurando o que comprar? CompreDeTudo.com


Melhor Visualizado com
800x600 de Resolução
CodigoFonte.net » CodigoFonte.eti.br » CompreDeTudo.com » MeuMural.com.br » Todos os Direitos Reservados © 2002/2008