Desenvolvimento - ASP. NET

Turbine sua aplicação ASP.Net

Neste artigos vamos tratar sobre um assunto que nem sempre é fácil comentar: performance.

por Marcelo Menezes Neves



Vamos falar sobre um assunto que nem sempre é fácil falar: performance. Digo isso porque falar de performance é falar sobre tentativas e erros, testes e experimentos, ou seja, mostrar o que o tempo e a experiência nos mostram como devemos codificar.

Vamos então direto ao assunto. Ao desenvolver uma aplicação ASP.Net com o Microsoft Visual Studio pense nas seguintes perguntas: Que recursos da linguagem existem e que podem me poupar linhas e linhas de código? Que recursos são extremamente caros e que devem ser evitados? Bem, a lista abaixo da início ao assunto:

Page.IsPostBack

Em quase todo webform precisamos realizar uma dezena de operações, como por exemplo, carregar controles (combo boxes e grids), validar segurança e tantas outras operações, que na sua grande maioria, devem ser executadas apenas uma única vez. Para garantir que um bloco de código seja executado apenas uma única vez, no evento load do webform, utilize a propriedade IsPostBack que retorna valor igual a false no caso da página está sendo carregada pela primeira vez. Veja o exemplo abaixo:

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    "Se for a primeira vez que a página estiver sendo carregada, então ...
If Not Page.IsPostBack Then "Coloque aqui o código que deve ser executado quando a página é carregada, como por exemplo, "carga dos controles (combo box, grid), validação de segurança e etc. End If End Sub

Para saber mais: MSDN - Page.IsPostBack Property


Desabilite Session State se você não precisa dele

Se você não irá manter estado em variáveis session desabilite session state. Você pode fazer isso de 3 formas diferentes:

  • Desabilitar session state para todas as aplicações ASP.Net no servidor. Para fazer isso, localize o arquivo Machine.config, abra o arquivo no notepad, localize o elemento sessionState e altere o valor para off da propriedade mode, conforme mostra o código abaixo:
<sessionState mode="Off"/>
  • Desabilitar session state para uma específica aplicação. Para fazer isso, localize o arquivo Web.config da aplicação, abra o arquivo no notepad, localize o elemento sessionState e altere o valor para off da propriedade mode, conforme mostra o código abaixo:
<sessionState mode="Off"/>
  • Desabilitar session state para uma página. Para fazer isso, localize o arquivo .ASPX, abra no editor de páginas .ASPX e altere a propriedade EnableSessionState para false da diretiva Page, conforme mostra o código abaixo:
<%@ Page EnableSessionState="false" %>

Desabilitando session state você consome menos recursos do servidor web.

Para saber mais: MSDN - <sessionState> Element


Desabilite View State sempre que possível

Sempre que possível desabilite view state dos controles que você não precisa persistir estado. Por exemplo, uma página .ASPX que possui um grid que a cada post é carregado, não há necessidade de se persistir o estado deste grid, portanto configure a propriedade enableViewState do grid para false.

Você pode desabilitar view state das seguintes maneiras:

  • Desabilitar para todas as aplicações no servidor web. Para fazer isso, localize o arquivo Machine.config, abra o arquivo no notepad, localize o elemento pages e altere o valor para false da propriedade enableViewState, conforme mostra o código abaixo:

<pages enableViewState="false" />
  • Desabilitar para uma aplicação específica. Para fazer isso, localize o arquivo Web.config da aplicação, abra o arquivo no notepad, localize o elemento pages e altere o valor para false da propriedade enableViewState, conforme mostra o código abaixo:
<pages enableViewState="false" />
  • Desabilitar para uma página específica. Para fazer isso, abra a página, localize a diretiva @ Page e altere o valor de EnableViewState para false, conforme mostra o código abaixo:
<% @ Page EnableViewState="false" %>
  • Desabilitar para um controle específico. Para fazer isso, localize o controle, abra a caixa de propriedades e altere o valor da propriedade EnableViewState para false, conforme mostra a tela abaixo:

O problema é que por default os controles DotNet possuem a propriedade enableViewState configurada para true. Quanto mais controles, com a propriedade enableViewState habilitada, maior será o tamanho do view state. E, quanto maior o tamanho do view state mais tempo levará para transmitir a página do servidor web para o cliente, mais recursos serão requeridos para processar o view state a cada post back e mais tempo levará para carregar a página web no browser do cliente.

Para saber mais: MSDN - Control.EnableViewState Property , MSDN - Page.EnableViewState

Ao fazer o deployment de sua aplicação ASP.Net desabilite o debug

Ao fazer o deployment de sua aplicação ASP.Net desabilite o debug no Web.config. Para fazer isso, localize o Web.config de sua aplicação, abra-o no notepad, localize o elemento compilation e altere o valor da propriedade debug para false, conforme mostra o código abaixo:

<compilation debug="false" />

Quando o debug está habilitado são criados arquivos auxiliares no diretório de arquivos temporários ASP.Net (\Windows\Microsoft.NET\Framework\v1.1.4322\Temporary ASP.NET Files), cada página da aplicação é compilada para um assembly diferente e não para um só assembly, não é realizada a Batch Compilation, são geradas também informações extras necessárias para debug e, portanto, desnecessárias para uma aplicação que está em produção. Lembre-se de desabilitar o debug somente quando for fazer o deployment da aplicação, pois se isto for feito para a aplicação ainda em tempo de desenvolvimento, você não conseguirá debugar a aplicação!

Para saber mais: MSDN - <compilation> Element

Utilize arquivos de script

Uma tendência comum, e não muito boa, é colocar o código de script na página ASPX. O problema é que fazendo isso o script não é cacheado e, portanto, todo o script é enviado para o browser toda vez que o usuário solicita a página web. Uma boa prática é colocar o script em um arquivo separado, isto não só deixa o código organizado, mas permite que o browser cacheie o arquivo de script evitando que este seja baixado toda vez que a página é solicitada.


Bem, este é só o começo! No próximo artigo continuarei a falar sobre performance. Este é um assunto bastante extenso, ainda mais se levarmos em conta tudo o que podemos otimizar, da user interface, passando pelas regras de negócio, até a camada de dados. Portanto, tempos muito trabalho pela frente, então não deixe de acompanhar a série de artigos sobre como turbinar sua aplicação ASP.Net.

Até a próxima!

Marcelo Menezes Neves

Marcelo Menezes Neves - Especialista em desenvolvimento e Microsoft Certified Professional com mais de 10 anos de experiência.
Atualmente arquiteta e desenvolve web e mobile applications utilizando tecnologia Microsoft.