Melhorar desempenho de Remoting e serialização de DataSet

Traduções deste artigo Traduções deste artigo
ID do artigo: 829740 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Sumário

Este artigo discute a otimização do desempenho para classes do .NET Framework System.Data.DataSet maiores e fornece uma classe de wrapper de serialização de exemplo que é otimizada para serializar e desserializar classes DataSet maiores eficiência.

Mais Informações

Quando você passar um objeto System.Data.DataSet entre processos, .NET Framework Remoting é usado para serializar, para transporte e para desserializar a classe DataSet . Se você passar um DataSet classe volta de um Web Service .NET, internamente a classe do Microsoft .NET Framework System.Xml.Serialization.XMLSerializer é usada para serializar os dados de DataSet de volta para o cliente. Se você passar um DataSet de volta de um objeto gerenciado hospedado no COM +, a classe de BinaryFormatter é usada pelo .NET Framework Remoting. Independentemente do mecanismo de comunicação remota é usado pelo .NET Framework, a classe DataSet sempre converte os dados internos para XML quando serializar os dados.

A classe DataSet que está incluída com o Microsoft .NET Framework 1.0 e com o .NET Framework 1.1 funciona com eficiência para serialização pequenas quantidades de dados (centenas de linhas) no DataSet sobre .NET Framework Remoting. O mecanismo de serialização é ineficiente com um maior DataSet (milhares de linhas) e gera grande alocações de memória (curta) temporário. Essas alocações de memória reduzem escalabilidade do aplicativo.

Observação Uma alocação de memória temporária é uma alocação de memória de curta duração que ocorre durante o processamento de algumas seções de código. Portanto, durante a serialização, durante o remoting e durante a desserialização de uma classe DataSet , vários objetos gerenciados são alocados e desalocados internamente pelo .NET Framework Remoting para processar a solicitação remota. Alocando e desalocando maiores e maiores objetos gerenciados coloca pressão adicional no sistema de gerenciamento de memória .NET e reduz a escalabilidade geral. Por exemplo, um aplicativo que possui muitos invocações de método em andamento que geram alocações de memória temporária grande pode ser executado com memória insuficiente antes de concluir todas as chamadas de método.

Você bastante pode melhorar o desempenho serialização e sistema de interação remota de maior DataSets usando um classes de wrapper tipo ou serialização substituto projetado corretamente. Para obter mais informações sobre como usar um mecanismo de substitutos um mecanismo de wrapper (ou ambos) com a classe DataSet do .NET Framework, visite o seguinte site da Web Microsoft Developer Network (MSDN):
http://msdn.microsoft.com/msdnmag/issues/02/12/cuttingedge
No entanto, este artigo não fornece um exemplo completo de como implementar um tipo de substitutos DataSet ou uma classe de wrapper de serialização.

Este artigo contém uma classe de wrapper de serialização de exemplo que é otimizada para serializar e desserializar maior DataSets com mais eficiência. A classe reduz significativamente alocações de memória temporária versus remoting um típico DataSet . Grandes reduções nas alocações de memória temporária também melhoram o tempo de ponta a ponta do remoting e melhorar a escalabilidade ao usar um DataSet maior.

O exemplo fornece uma classe de wrapper de serialização que é chamada DataSetSurrogate . A classe DataSetSurrogate é usada como uma classe de wrapper para qualquer DataSet que você deseja remoto. O componente de servidor passa o DataSet que você deseja para o construtor DataSetSurrogate e passa a classe DataSetSurrogate volta ao cliente. No lado do cliente, o método DataSetSurrogate.ConvertToDataSet é usado para extrair o DataSet a classe DataSetSurrogate .

A classe DataSetSurrogate está marcada como Serializable e todos os campos da classe DataSetSurrogate também são classes serializáveis. Portanto, quando você remoto o objeto DataSetSurrogate , infra-estrutura de remoting automaticamente Serialize e deserialize o objeto DataSetSurrogate e todos os seus campos. A vantagem de serialização de chave de classe DataSetSurrogate sobre a classe DataSet é que a classe DataSetSurrogate serializa os dados em um formato binário. Serialização usando um formato binário é muito mais eficiente tanto na memória e CPU do que o formato de serialização de DataSet XML existente.

Observação Para maximizar o benefício de desempenho dessa classe de wrapper de serialização, uso o.NET Framework System.Runtime.Serialization.Formatters.Binary.BinaryFormatter classe quando remoting. Remota usando a classe do .NET Framework System.Runtime.Serialization.Formatters.Soap.SoapFormatter não é tão eficiente quando você usa a classe DataSetSurrogate .

O seguinte arquivo está disponível para download no Centro de download da Microsoft:
Recolher esta imagemExpandir esta imagem
Download
Download the SurrogateSample.exe package now.Para obter informações adicionais sobre como baixar arquivos de suporte da Microsoft, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
119591Como obter arquivos de suporte da Microsoft a partir de serviços online
Microsoft examinou esse arquivo em busca de vírus. Microsoft utilizou o mais recente software de detecção de vírus que estava disponível na data em que o arquivo foi publicado. O arquivo é armazenado em servidores com segurança avançada que ajudam a evitar qualquer alteração não autorizada no arquivo.

Acessar os arquivos de exemplo

Salve o arquivo SurrogateSample.exe para a unidade C no seu computador. Dali você pode extrair a estrutura de pastas. Há um arquivo Leiame em cada pasta que contém instruções adicionais.

Propriedades

ID do artigo: 829740 - Última revisão: quarta-feira, 4 de agosto de 2004 - Revisão: 1.4
A informação contida neste artigo aplica-se a:
  • Microsoft .NET Framework 1.0
  • Microsoft .NET Framework 1.1
Palavras-chave: 
kbmt kbdownload kbinfo KB829740 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 829740

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com