Compartilhar via


Criação e configuração para desempenho

Este tópico discute projeto, configuração, compilação, e opções de memória disponível para melhorar o desempenho de um aplicativo da Web.

Modelos de programação assíncrona

ASP.NET oferece suporte a técnicas assíncronas de programação que permitem a você para mover uma tarefa de execução demorada como uma consulta ao banco de dados para um segmento que executa separadamente do segmento do aplicativo principal.Você pode usar as seguintes técnicas:

  • BackgroundWorkercomponent A classe BackgroundWorker no namespace System.ComponentModel permite que você adicione o código para a tarefa demorada ao manipulador de eventos DoWork e chame o método RunWorkerAsync para gerar o evento DoWork.O segmento de chamada continua a ser executado enquanto o método de trabalho é executado de forma assíncrona.Quando o método for concluído, o componente BackgroundWorker alerta o segmento de chamada, gerando o evento RunWorkerCompleted.Para obter mais informações, consulte BackgroundWorker componente.

  • Programação assíncrona com base em eventos    O padrão assíncrona com base em eventos pode tomar vários formulários, dependendo a complexidade das operações suportadas por uma determinada classe.As classes mais simples podem ter um único método MethodNameAsync e um evento correspondente MethodNameCompleted.Classes mais complexas podem ter vários métodos MethodNameAsync, cada um com um evento correspondente MethodNameCompleted, bem como versões síncronas desses métodos.Classes podem opcionalmente suportar cancelamento, relatórios de progresso, e resultados incrementais para cada método assíncrono.

    Um método assíncrono também pode oferecer suporte a várias chamadas pendentes (várias chamadas simultâneas), permitindo a seu código chamá-las qualquer número de vezes antes que ele conclua outras operações pendentes.Corretamente tratamento essa situação pode exigir de seu aplicativo controlar a conclusão de cada operação.

    Para obter uma descrição completa deste padrão e sua implementação, consulte Com base em eventos Asynchronous Padrão Overview.

  • Programação assíncrona usando IAsyncResult   Uma operação assíncrona que utiliza o padrão de design IAsyncResult é implementada como dois métodos chamados BeginOperationName e EndOperationName que começam e terminam respectivamente a OperationName assíncrona.BeginOperationName retorna o controle para o segmento chamado imediatamente.O método EndOperationName termina a OperationName assíncrona.A temporização da chamada de EndOperationName é importante, porque ela bloqueia o segmento chamado se OperationName não tiver concluído.Para mais detalhes, consulte Visão geral de programação assíncrona.

  • Clients callbacks Em um retorno de chamada de cliente, uma função de script de cliente envia uma solicitação para um página da Web ASP.NET sem a sobrecarga de uma postagem.

Para obter um exemplo que usa algumas dessas técnicas, consulte Com base em eventos Asynchronous Padrão Tecnologia Exemplo.

Compilação e opções de configuração

A maneira como você compila e configura o seu aplicativo afeta em como ele executa.As seguintes diretrizes sugerem maneiras de fazer seus aplicativos da Web como um trabalho inteiro com eficiência:

  • Se você tiver um aplicativo da Web grande, pré-compile-o.

  • Recicle processos quando estiver executando aplicativos da Web ASP.NET em Serviços de Informações da Internet 5.0.

  • Se necessário, ajuste o número de segmentos por processo de operador para o seu aplicativo.Para aplicativos que dependam amplamente de recursos externos, considere a ativação da Web gardening em computadores multiprocessadores.

  • Desativar modo de depuração.

  • Ajuste os arquivos de configuração para seu computador do servidor Web e para aplicativos específicos para atender às suas necessidades usando as seguintes técnicas:

    • Ative a autenticação somente para aplicativos que precisam dele.

    • Configure seu aplicativo para usar a solicitação e as configurações de codificação da resposta apropriadas.

    • Considere desativar AutoEventWireup para o seu aplicativo.

    • Remova módulos não utilizados do canal de solicitação-processamento.

Para mais detalhes, consulte Visão geral sobre desempenho.

Opções de configuração de cache

Para melhorar o desempenho do aplicativo, você pode configurar a cache nos seguintes níveis:

  • Aplicativo No arquivo Web.config do aplicativo, você pode usar o elemento OutputCacheSection para controlar o armazenamento em cache para todo o aplicativo.Usando o elemento OutputCacheSettingsSection, você pode configurar perfis de cache que, em seguida, podem ser aplicados a páginas individuais.

  • Máquina   Você pode configurar as mesmas opções no arquivo Machine.config que no arquivo Web.config.

  • Página    Você pode configurar cache em páginas individuais, Aplicando perfis de cache que foram definidos em um arquivo de configuração.Como alternativa, você pode configurar propriedades individuais de cache na diretiva @ OutputCache ou configurando atributos na definição de classe da página.

  • Controle Você pode configurar o armazenamento em cache do controle de usuário, definindo a diretiva @ OutputCache no arquivo de controle de usuário ou definindo o atributo PartialCachingAttribute na definição de classe do controle.

Para obter mais informações, consulte Configuração de cache no ASP.NET.

Reciclagem de Memória com o IIS 6.0

Se um aplicativo contém código que causa problemas, como um aplicativo Interop com vazamentos de memória conhecidos, e você não pode facilmente reescrever o código, pode ser útil limitar a extensão dos problemas por periodicamente reciclando o processo do operador que serve o aplicativo.O processo de trabalho substitui reciclando uma ocorrência do aplicativo na memória.Automaticamente, o IIS   6.0 pode Reciclar processos de trablaho reiniciando o processo de trabalho ou processos de trabalho que são atribuídos a um pool de aplicativos.Isso ajuda a manter aplicativos executados de maneira uniforme.

Manter estado durante Recycling

Se você tiver um pool de aplicativos com aplicativos que dependem do estado dos dados, você deve decidir se deseja Reciclar os processos de trabalho que são atribuídos a esse pool de aplicativos.Quando você recicla um processo de trabalho, os dados de estado para aplicativos mantidos no processo são perdidos.Nesse caso, você pode optar por não usar reciclagem.

Você pode reciclar processos e resolver o problema do estado ao manter dados de estado fora do processo de trabalho, como em um banco de dados.No entanto, manter dados de estado fora do processo para permitir a reciclagem pode afetar o desempenho do servidor nas maneiras a seguir:

  • Desempenho é reduzido devido a sobrecarga de gerenciamento que é necessária para mover os dados entre o aplicativo e o armazenamento de dados.

  • Reciclagem libera os caches de dados em processo, então os caches precisam ser recriados.

ASP.NET oferece a você a opção de estado desessão persistente usando um serviço de estado de sessão ou um banco de dados SQL.Para obter mais informações, consulte Modos de estado de sessão.

Para obter mais informações, consulte Reciclando processos do operador (IIS 6.0).

Serviço de imagem nativa

O Native Image Service é um serviço do Windows que gera e mantém nativas imagens, que são arquivos contendo compilado código de máquina de processador específico.O serviço de imagem nativa permite-lhe adiar a instalação e atualização de nativas imagens para pontos quando o computador estiver ocioso.O Native Image Generator (Ngen.exe) é uma ferramenta que melhora o desempenho de aplicativos gerenciados.Ngen.exe Cria imagens nativas e instala-as para o cache de imagem nativa para o computador local.O Runtime pode usar imagens nativas do cache em vez disso, usando o compilador Just-In-Time (JIT) para compilar o assembly original.

Para obter mais informações, consulte o artigo NGen Revs aumenta seu desempenho com novos recursos poderosos para cima no MSDN Magazine Web site.

Cache de conjunto global e o trabalho conjunto

O conjunto de trabalho de um processo é o conjunto de páginas de memória disponíveis no momento para o processo na memória RAM física.Essas páginas são residentes e estão disponíveis para um aplicativo usar sem disparar uma falha de página.Você pode monitorar o tamanho do conjunto de trabalho usando as propriedades PeakWorkingSet e WorkingSet.Você pode reduzir o conjunto de trabalho de um aplicativo, colocando conjuntos de módulos (assemblies) no Cache de Assembly Global.Essa opção é recomendada principalmente para assemblies de camada intermediária e compartilhados.

Consulte também

Outros recursos

Capítulo 4 — Revisão da Arquitetura e do Design de um aplicativo .NET para Desempenho e Escalabilidade

Capítulo 6 — Aprimorando o Desempenho do ASP.NET

Práticas e Padrões Microsoft